HSF Software Training Center

See below for more information about the modules listed here.

Basics

The UNIX Shell
A guide through the basics of the file systems and the shell.
Start learning now! Contribute!
Version controlling with git
Track code changes, undo mistakes, collaborate. This module is a must.
Start learning now! Contribute!
Programming with python
Get started with an incredibly popular programming language.
Start learning now! Contribute!
SSH
Introduction to the Secure Shell (SSH)
Status: Early development
Start learning now! Contribute!
Machine learning
Get behind the buzzword and teach machines to work for you intelligently!
Start learning now! Watch the videos! Contribute!
Matplotlib for HEP
Make science prettier with beautiful plots!
Status: Beta testing
Start learning now! Contribute!
ROOT
The most famous data analysis framework used in HEP.
Start learning now! Contribute!

Software Development and Deployment

Version controlling with git
Track code changes, undo mistakes, collaborate. This module is a must.
Start learning now! Contribute!
Advanced git
Learn to work with branches and more with this interactive webpage.
Start learning now! Contribute!
Docker
Introduction to the docker container image system.
Start learning now! Watch the videos! Contribute!
Singularity
Introduction to containerization with Singularity/Apptainer.
Start learning now! Watch the videos! Contribute!
Unit testing
Unit testing in python.
Status: Beta testing
Start learning now! Contribute!
Level up your python
Advanced bits of python (testing, debugging, logging, and more)
Start learning now! Contribute!
Software Engineering for Scientific Computing
This course covers various best practices like testing, pytest, object oriented programming, packing, CI, and more.
Start learning now! Contribute!

C++ corner

HEP C++ Course
A full introduction to C++ based on a series of slides and exercises.
Start learning now! Watch the videos! Contribute!
Build systems: cmake
Building code is hard. CMake makes it easier.
Start learning now! Contribute!

Machine learning and other analysis tools

Machine learning
Get behind the buzzword and teach machines to work for you intelligently!
Start learning now! Watch the videos! Contribute!
Machine learning on GPU
Speed up your machine learning using massive parallelization!
Start learning now! Watch the videos! Contribute!

HEP specific tools

Scikit-HEP
A collection of packages for particle physics analyses in Python.
Start learning now! Contribute!
ROOT
The most famous data analysis framework used in HEP.
Start learning now! Contribute!
UnROOT
Open ROOT files in Julia!
Status: Beta testing
Start learning now! Contribute!
Reproducible analyses with REANA
Run containerised data analysis pipelines on remote compute clouds.
Start learning now! Contribute!
Particle physics methods
Learn about ROOT, RooFit, machine learning with TMVA, and physics simulations.
Status: Beta testing
Start learning now! Contribute!

Analysis preservation

Version controlling with git
Track code changes, undo mistakes, collaborate. This module is a must.
Start learning now! Contribute!
Docker
Introduction to the docker container image system.
Start learning now! Watch the videos! Contribute!
Singularity
Introduction to containerization with Singularity/Apptainer.
Start learning now! Watch the videos! Contribute!
Unit testing
Unit testing in python.
Status: Beta testing
Start learning now! Contribute!
Reproducible analyses with REANA
Run containerised data analysis pipelines on remote compute clouds.
Start learning now! Contribute!

Complete courses

These modules cover a variety of topics.

Software Engineering for Scientific Computing
This course covers various best practices like testing, pytest, object oriented programming, packing, CI, and more.
Start learning now! Contribute!
Level up your python
Advanced bits of python (testing, debugging, logging, and more)
Start learning now! Contribute!
Particle physics methods
Learn about ROOT, RooFit, machine learning with TMVA, and physics simulations.
Status: Beta testing
Start learning now! Contribute!
LHCb Analysis Essentials
From python, shell, and git to reproducible analyses with Snakemake. Written for LHCb, but applicable to everyone.
Start learning now! Contribute!

Julia corner

Julia
An introduction to Julia for HEP, especially for those familiar with Python (or C++)
Start learning now! Contribute!
UnROOT
Open ROOT files in Julia!
Status: Beta testing
Start learning now! Contribute!

Miscellaneous

A simple analysis
A simple analysis using CMS open data.
Start learning now! Watch the videos! Contribute!

Planned, in early development, or archived

uproot
Reading and writing ROOT files without having to install ROOT.
Status: Beta testing
Start learning now! Contribute!

Additional information

Training in software and computing are essential ingredients for the success of any HEP experiment. As most experiments have similar basic prerequisites (Unix shell, Python, C++, …) we have joined efforts and created this introductory software training curriculum that teaches HEP newcomers the software skills they need as they enter the field, and in parallel, instills best practices for writing software.

The curriculum is composed of a set of modules (developed by HSF, Software Carpentries, and other organizations), so that learners/students can focus on what is most relevant to them.