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.

The modules

Beginner level

Module Description Status
The Unix 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


Module Description Status
Parallel programming    
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.  


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