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

  1. Introduction
  • What is the shell (and what is Bash)
  • Command structure
  • Finding help (man)
  1. First fundamental commands
  • The filesystem (structure, paths)
  • Navigating the filesystem (pwd, ls, cd)
  • Directories (mkdir, rm)
  1. Manipulating files
  • cat, less, more, head, tail, grep
  • Command-line text editors
  1. 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

  1. Introduction
  • Definition of VCS and examples
  • Git, GitHub, GitLab, and related tools
  • Setup
  1. The workflow
  • Repository initialization (git init)
  • Repository status (git status)
  • Staging and commits
  • Commit history (git log)
  • Differences between files (git diff)
  • .gitignore
  1. Git for the talented beginner
  • Moving through history (checkout, reset)
  • Storing changes (stash)
  • Version numbers and tags
  1. 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

  1. Introduction
  2. Collaborating on Git projects
  • Git vs GitHub vs GitLab
  • Connecting to web platforms
  • Remotes
  • push and pull
  • 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.