An introduction to scientific software tools and parallel algorithms

An introduction to scientific software tools and parallel algorithms

This course provides a comprehensive, hands-on introduction to the tools and workflows used in modern scientific software development and an applied introduction to parallel algorithms and performance analysis. Topics include:

  • Unix shell and HPC usage (ssh, tmux, Slurm job scheduler)

  • Version control using Git (local and collaborative workflows)

  • Automated documentation (Doxygen for C/C++, Sphinx/MyST for Python and general docs)

  • Unit and functional testing (Google Test for C++, pytest for Python)

  • Containerization and reproducibility (Docker, Apptainer/Singularity)

  • Continuous Integration and automation (GitHub Actions)

  • Basics of parallel computing: speedup, efficiency, Amdahl’s and Gustafson’s laws

Learning outcomes

By the end of the course, students will be able to:

  • Operate comfortably in a Linux command-line environment and write basic Bash scripts.

  • Submit and monitor jobs on a Slurm-based cluster (we provide a Dockerized simulator for exercises).

  • Use Git to manage projects, branch, merge, resolve conflicts, and collaborate via pull requests.

  • Produce documentation with Doxygen and Sphinx/MyST, including API references and tutorial pages.

  • Write unit and functional tests for C++ and Python code and integrate them into CI.

  • Build and run Docker and Apptainer containers to package software environments for reproducibility.

  • Set up simple CI workflows (GitHub Actions) to run tests and build artifacts automatically.

  • Measure simple parallel programs, compute speedup and efficiency, and interpret results using Amdahl’s and Gustafson’s laws.

 

Practical Information

Semester: 1st semester (Nov 2025 – Jan 2026)

Credits: 6 ECTS (30 hours)

Language: Italian/English

Exam: project

Here you will find the laboratory exercises for the course of “An introduction to scientific software tools and parallel algorithms”.

Official webpage of the course.