Oct 16 – 20, 2023
Europe/Zurich timezone

Welcome to the ninth iteration of a C++ course for the high energy physics community organised in collaboration between the Software Institute for Data Intensive Sciences and the Training Working Group of the HEP Software Foundation.

This course will feature "advanced" C++ topics, see below for more details. 


This  course will teach advanced topics of C++. In order to draw the most benefit out of this course we ask you, before subscribing, to reassure you that you are fluent with essential concepts of the language in theory and practice. E.g. please make sure you are at ease with the topics of the "HEP C++ Course - The essentials" (see slides and recordings at the bottom of here)

In case you want to follow our "essentials" course first, we plan to schedule one in spring 2024. Please subscribe here if you want to receive notifications about upcoming courses. 

Important Links

Organisation and Content

The event will run over 3 days, Monday, Wednesday and Friday.  Each day will feature one two hour lecture session in the morning and a two hours session focused around hands-on training exercises in small groups (related to the morning training) in the afternoons.

The morning lectures of this event will be held in a hybrid format, i.e. in meeting rooms at CERN (Monday and Wednesday in the IT Amphi Theatre (31/3-004), Friday in Salle Curie (40/S2-C01)) and also broadcasted. The afternoon training sessions will be held in various rooms at CERN. 

Please note only physically attending students will be able to attend the hands-on training and to ask questions during the morning lectures. Remote participants are invited to listen to the morning lectures only. Two registration forms are available for in person or remote participation.

If it is possible for you to attend the event on premise, we would encourage you to do so, as we believe the training effect will be higher. 

The course is based on material developed originally by Sebastien Ponce and further extended mainly in collaboration with Bernhard Gruber and Stephan Hageboeck.

The afternoon trainings are supported by mentors from within the HEP community

  • Sebastien Ponce (CERN/LHCb)
  • Stephan Hageboeck (CERN/IT-GOV)
  • Laura Promberger (CERN/EP-SFT)
  • Attila Krasznahorkay (CERN/ATLAS)
  • Gainluca Bianco (Univ Bologna & INFN)


The lecture sessions contain the following topics

Day 1Day 2Day 3

Recap: Language Basics & Object orientation (recap from "essentials course" plus new features)

Core Modern C++ I (constexpr, move semantics, ...)

Core Modern C++ II (lambda, STL, ranges, RAII, ...)

Tools (formatting, sanitizers, profiling, ...)


Expert C++ (3 way comparison, variadic templates, perfect forwarding, ...)

Registration : Important notice !!!

The number for in person participant places for this course and training are deliberately limited in order to allow us to give you more personalised training.

Is this training for me?

Good question.  Our target audience for this training are members of the high energy physics community who are in any kind related to software development (experiments, services, tools, ...). 

The registration process is not moderated but we ask that you reflect on two things before registering. 

[1] Can I commit to attending the full event?

The most important thing is that those who want to learn are given the full opportunity to do so.  And in our teaching pedagogy, learning means staying engaged both during the lecture and the hands-on sessions.  Please only register for in person attendance if you can commit to attending and being engaged.  

[2] What level of C++ is required?

This course is a follow-on training of the "essentials" HEP C++ Course, e.g. held in spring '23 (6th HEP C++ Course and Hands-on Training). We will briefly run again through the main parts of this training at the beginning, but we would expect participants to be familiar with most of the topics handled in that course. The goal of this course is, in addition to write your own analysis software, to already enable you to contribute meaningfully to your experiment core code base. If you aren't sure of your current skill level, then don't hesitate to contact us.

Finally, every person interested in the training is welcome to subscribe. The sessions for this iteration of the event are more optimised for European time zones.  If you don't plan to attend this training but maybe another iteration please still subscribe here so we can reach out to you and inform you of any future C++ trainings.

Really want to attend but timing doesn't work?

No need to worry, we plan to record the morning courses and publish them on this indico page. In case you only want to consume the recordings and not participate live in the lectures and training you also don't need to register for the training.

Cost of attendance and attestation

For students attending the course in person we ask for a registration fee of CHF 20. The fee can be paid via internal CERN "TID" or by credit card. Detailed payment instructions will be provided soon. 

In case it is useful we can provide an attendance certificate to students.