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”.