This repository contains all material for the C++ Course taught at CERN from Sebastien Ponce (LHCb).
Please check the Indico agenda.
For each commit to master, the slides are compiled to a PDF and uploaded to the download branch.
- Latest essentials course PDF.
- Latest full course PDF.
Video recordings are available in the past events.
- 8th HEP C++ Course and Hands-on Training (essentials), Manchester, August 2023
- 7th HEP C++ Course and Hands-on Training (essentials), JLAB, May 2023
- 6th HEP C++ Course and Hands-on Training (essentials), CERN, March 2023
- 5th HEP C++ Course and Hands-on Training (advanced), CERN, October 2022
- 4nd HEP C++ Course and Hands-on Training (essentials), CERN, March 2022
- 3rd HEP C++ Course and Hands-on Training, CERN, August 2021
- 2nd HEP C++ Course and Hands-on Training, virtual, January 2021
- 1st HEP C++ Course and Hands-on Training (2020 October)
Check this page for announcements of upcoming training events (including those with this material).
Make sure to install the pre-commit hooks:
pip3 install pre-commit
# cd to repository
pre-commit install
Spell check is performed with the codespell
pre-commit hook on every commit. To ignore words you can put them in the
codespell.txt
file. This file should list the supposedly misspelled words with
one word per line and is case-sensitive.
- Prefer "east const" for new stuff.
Students should start with the README in the respective exercise folders. These have the basic building instructions, give the name of the main program file, and possibly give a summary of the exercise goals and steps.
Inside the code, one gets more precise help on what should/could be done. If the code is longer and only some parts need to be touched, this is often pointed out with comments.
Each exercise should provide a solution in the solution
subdirectory. For any <name>.cpp
exercise, the solution should be called solution/<name>.sol.cpp
.
We invite students to only consult the solution when they completed an exercise or when they are really stuck. The preferred order is:
- Work on the exercise and consult the slides
- Discuss problems and questions with the class and the mentor
- Consult the solution
For the time being, we maintain both a raw Makefile
and a CMakeLists.txt
.
The make
command should work directly on any linux-like system. The make solution
command should build the solution.
The cmake
tool adds support for building on Windows. It is meant to be used in a build
subdirectory:
mkdir build
cd build
cmake ..
make
make solution
Depending on which course is running, consult the schedule for exercise sessions in essentials or advanced. For mentors, there is a cheat sheet with hints towards the solutions and key points to discuss during the exercise sessions.
Thanks go to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!