Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Introduction

University of Pisa

Scientific Software Tools and Parallel Algorithms

PhD in High Performance Scientific Computing (HPSC)

Luca Heltai (luca.heltai@unipi.it)

Academic Year: 2025–2026


Why SSPA?

Lessons learned from 25 years of development of the deal.II library


5‑Weeks

WeekFocusKey Tools
1Unix shell + SlurmBash, SSH, Slurm
2Version controlGit, GitHub
3Documentation & testingDoxygen, Sphinx, pytest / gtest
4Containers & CIDocker / Apptainer, GitHub Actions
5Parallel algorithmsAmdahl/Gustafson, MPI/OpenMP

What You’ll Build

OutcomeHow
Portable repoGit, Dockerfile, CI pipeline
Automated docsSphinx → website
Robust testspytest / gtest + CI
Fast codeParallel demo, profiling

Hands‑On Labs


Preliminary steps


Tools to install

Quick start list – these are the essential tools you’ll need before the labs begin.


Visual Studio Code


OpenSSH

sudo apt install openssh-client openssh-server

Git

sudo apt install git

Docker

Tip – Add your user to the docker group so you can run containers without sudo:

sudo usermod -aG docker $USER

and then log‑out / back‑in.


Set Up a GitHub Account

Configure SSH‑Key Auth

No passwords, just key‑based login

  1. Create a GitHub accounthttps://github.com/join


  1. Generate a new SSH key (leave the passphrase empty for painless CI)


ssh-keygen -t ed25519 -C "your_email@example.com"
# default: ~/.ssh/id_ed25519
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Add Your SSH Key to GitHub

  1. Copy your public key


cat ~/.ssh/id_ed25519.pub

Copy the whole output to your clipboard.

  1. Log in to GitHub
    Open https://github.com and go to SettingsSSH and GPG keys.


  1. Create a new key

  1. Save


  1. Verify


ssh -T git@github.com

You should see:

Hi your‑username! You’ve successfully authenticated, but GitHub does not provide shell access.


  1. Optional – Force SSH for Git


git config --global url."git@github.com:".insteadOf "https://github.com/"

Configure git

  1. Set your user identity

git config --global user.name "Your Full Name"
git config --global user.email "you@example.com"

  1. Choose a default editor (optional)

git config --global core.editor "code --wait"

  1. Enable color output

git config --global color.ui auto

  1. Show a friendly status prompt

git config --global status.showUntrackedFiles all

  1. Verify the config

git config --list --show-origin

Tip:
• Use git config --global --edit to manually tweak the ~/.gitconfig.
• If you work on multiple accounts, set a local config per repository (git config user.name … inside that repo).


With these settings, your Git history will always show the correct author, and the command line will feel a lot friendlier.


Check docker installation

docker --version
docker run hello-world

Next Steps

  1. Clone the course repo: git clone git@github.com:luca-heltai/sspa.git

  2. Explore around