HSF Software Training Center

Idea

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.

The modules

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!

Software Development and Deployment

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!
Unit testing
Unit testing in python.
Status: Beta testing
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!
Basic Modern C++
A brand new C++ course that is currently in development.
Status: Early development
Start learning now! 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

uproot
Reading and writing ROOT files without having to install ROOT.
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 or in early development

ROOT
The most famous data analysis framework used in HEP.
Status: Early development
Advanced git
Working with branches and more.
Status: Early development
Contribute!
Distributed file systems and grid computing
Status: Early development
Parallel programming
Status: Early development
alpaka
alpaka is a header-only C++ abstraction library for accelerator development.
Status: Early development
Contribute!
Workflows & reproducibility
E.g. yadage and reana
Status: Early development
Documentation
sphinx, doxygen, etc.
Status: Early development
Event generation and MC
pythia, sherpa, madgraph, etc.
Status: Early development
Matplotlib for HEP
Make science prettier with beautiful plots!
Status: Early development
Start learning now! Contribute!

Further reads