How to approach this collection
All courses are taught in Italian and are intended for BSc students in technical disciplines (e.g. Electrical Engineering, Computer Engineering, Physics, …). Together, they provide the core knowledge required to contribute to the design, development, and maintenance of the Audace Sailing Team’s electronics suite. While originally created for Audace, the material is intended for anyone who needs or wants to learn the shell, Unix-like systems, Git, and collaborative version control.
When taken in the recommended order, the courses require no prior prerequisites, as each course introduces the necessary background for the subsequent ones.
The courses
Introduction to Bash
First delivered in person in November 2025, this course introduces the Unix command line and the Bash shell from a practical perspective. It covers the foundations needed to work effectively in a Linux environment, including filesystem navigation, file manipulation, command-line tools, text editors, and basic shell scripting concepts.
Where to find the course
The complete course is available in this repository.
Supporting material
Supporting material for all courses is available in this repository.
Syllabus
- Introduction
- What is the shell (and what is Bash)
- Command structure
- Finding help (
man)
- First fundamental commands
- The filesystem (structure, paths)
- Navigating the filesystem (
pwd,ls,cd) - Directories (
mkdir,rm)
- Manipulating files
cat,less,more,head,tail,grep- Command-line text editors
- Practical tips
- Shortcuts
- Command history (
history,Ctrl-R) - Operators and scripting elements
Git: A Quick Guide
First delivered in person in November 2025, this course introduces Git as a version control system, focusing on the fundamental concepts and workflows needed to use it effectively in individual projects. It covers repository management, tracking changes, commits, history, branching, and other essential Git operations.
Where to find the course
The complete course, including slides and supporting materials, is available in this repository.
Supporting material
Supporting material for all courses is available in this repository.
Syllabus
- Introduction
- Definition of VCS and examples
- Git, GitHub, GitLab, and related tools
- Setup
- The workflow
- Repository initialization (
git init) - Repository status (
git status) - Staging and commits
- Commit history (
git log) - Differences between files (
git diff) .gitignore
- Git for the talented beginner
- Moving through history (
checkout,reset) - Storing changes (
stash) - Version numbers and tags
- Branching
- Definitions
- Branching strategies
- Merging and conflicts
- Cherry-picking
Collaborative Version Control
First delivered in person in November 2025, this course builds on the foundations of Git to introduce collaborative workflows. It focuses on using Git with remote repositories and online platforms such as GitHub and GitLab, covering the practices required to contribute effectively to shared projects.
Where to find the course
The complete course, including slides and supporting materials, is available in this repository.
Supporting material
Supporting material for all courses is available in this repository.
Syllabus
- Introduction
- Collaborating on Git projects
- Git vs GitHub vs GitLab
- Connecting to web platforms
- Remotes
pushandpull- Essential workflows
Acknowledgements
A significant source of inspiration for the Bash and Git courses was Daniele Coslovich’s course material, developed for MSc students in Physics at the University of Trieste.
The development and delivery of the Bash and Git courses also benefited greatly from the support of Francesco Perioli, then Head of the Electronics Department at Audace Sailing Team.