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 Unix Shell||Introduction to the unix command line/shell||✔||authors|
|SSH||Introduction to the Secure Shell (SSH)||α||authors|
|Version controlling with git||✔||authors|
|Programming with python||✔||authors|
|Distributed file systems and grid computing|
||Reading and writing ROOT files without having to install ROOT.||β||authors|
|A simple analysis||A simple analysis using CMS open data||✔||authors|
|Unit testing||Unit testing in python||β||authors|
|Docker||Introduction to the docker container image system||✔||authors|
|Workflows & reproducability||E.g.
|Machine learning on GPU||✔||authors|
|CI/CD||Continous integration and deployment with gitlab||✔||authors|
|CI/CD github||Continous integration and deployment with github actions||β||authors|
|Event generation and MC||
|alpaka||alpaka is a header-only C++ abstraction library for accelerator development||α||authors|
I want to contribute or teach: Contributions of any kind are very welcome! There are various ways you can get involved: