Towards a HEP Software Training curriculum

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 want to join our efforts and create one introductory software training curriculum that serves HEP newcomers the software skills needed as they enter the field, and in parallel, instill best practices for writing software.

The curriculum is comprised of a set of standardized modules, so that students can focus on what is most relevant to them. More about the style of these modules is written in the guidelines for training material.

This mission relies on active contributors: This page outlines the different roles that need to be filled.

The modules

Beginner level

Module Description Status
The Unix Shell Introduction to the unix command line/shell Created & Maintained by software carpentries
Advanced Shell E.g. SSH  
Version controlling with git   Created & Maintained by software carpentries
Advanced git    
Programming with python   Created & Maintained by software carpentries
Build systems: From gcc to cmake    
Basic C++    
Distributed file systems and grid computing    
A simple analysis A simple analysis using CMS open data Created by S. Wunsch; maintained by HSF
Unit testing Unit testing in python Created by K. Huff


Module Description Status
Parallel programming    
Docker Introduction to the docker container image system Created by M. Feickert
Workflows & reproducability E.g. yadage and reana  
Machine learning    
CI/CD Continous integration and deployment with gitlab Created by G. Stark; maintained by HSF


Module Description Status
Documentation sphinx, doxygen, etc.  
Event generation and MC pythia, sherpa, madgraph, etc.  
alpaka alpaka is a header-only C++ abstraction library for accelerator development  


Contributions of any kind are very welcome! There are various ways you can get involved:


Where can I find the source (github repository) of the web pages linked above?

Scroll down the page and click on “Source” or “Edit on GitHub”.