Indico has been updated to v3.3. See our blog post for details on this release. (OTG0146394)

5th HEP C++ Course and Hands-on Training - Advanced C++

593/R-010 - Salle 11 (CERN)

593/R-010 - Salle 11


Show room on map
Graeme A Stewart (CERN), Sebastien Ponce (CERN), Stefan Roiser (CERN)

Thanks everyone for attending the course!!! 

If you want to stay informed about upcoming courses please register with your perferences at 

Welcome to the fifth 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. We we shall also run a new "essentials" course in spring 2023.

Important Links

Organisation and Content

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

This event will be held in a hybrid format, i.e. the morning lectures will be given in a meeting room at CERN (Training Center - 593/R-010) and also broadcasted.

If it is possible for you and you feel comfortable attending the event on premise, we would encourage you to do so, as we believe the training effect will be higher. At least one of the afternoon training groups will be also held on premise.

The course is based on material developed originally by Sebastien Ponce.

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


The lecture sessions contain the following topics

  • Core Modern C++ (Move semantics, copy elision, advanced STL, ...)
  • Expert C++ (variadic templates, perfect forwarding, concepts, ...)
  • Tools (valgrind, static code analysis, profiling, ...)
  • Concurrency (threads, mutexes, atomic types, ...)
  • ... more C++'20 features (modules, ranges, ...)

the exact schedule of these topics over the 3 days will be announced soon.


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++ (variadic templates, perfect forwarding, sfinae, ...)


Please note: In contrast to the first 3 training events and as the course content is constantly growing, we decided to split the course into an "essentials" and "advanced" part. This course will feature the "advanced" part. We plan to organise an "essentials" training again in spring 2023.

Registration : Important notice !!!

The number of participant places for this course and training are deliberately limited in order to allow us to give you more personalised instruction while gaining experience with the online/virtual training format.

In case you registered and got a place but find out later that you cannot attend, please contact the organisers so we eventually could make your place available to others.

Alternatively if you find the participant places already all booked, please feel free to register on the waiting list. In case a place gets available we will move you there (FIFO) and we would also contact you for an eventual new iteration of the course.

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 if you can commit to attending and being engaged.  If you are interested but aren't sure, don't hesitate to sign up for the waiting list to express your interest!

[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 '22 (4th 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 to ask if you "know enough", we'll be able to help you assess your current level and whether this training is right for you.

Finally, every individual 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 to the waiting list 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

The training is organised free of charge. The only thing we ask is that if you register to attend, you commit to attending the full event.

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

  • Aman Desai
  • Andy Wharton
  • Anna Mascellani
  • Aodhan Burke
  • Arpan Ghosal
  • Biao Wang
  • Caio Daumann
  • Charis Kleio Koraka
  • David Hagan
  • David Richard Shope
  • Deepak Raikwal
  • Edoardo Franzoso
  • Edson Carquin Lopez
  • Ettore Zaffaroni
  • Felipe Luan Souza de Almeida
  • Gabriel Stoicea
  • Gagandeep Kaur
  • Ganesh Parida
  • Gediminas Sarpis
  • Guillermo Antonio Fidalgo Rodriguez
  • Hendrik Jage
  • Ivan Kabadzhov
  • James Catmore
  • Jaydip Singh
  • Jeremiah Juevesano
  • John Evans
  • Jorgen Teig
  • Jyoti Prakash Biswal
  • Kristof Schmieden
  • Luca Ferragina
  • Marin Mlinarevic
  • Miguel Antonio Cortes Giraldo
  • Mindaugas Sarpis
  • Mohamed Aly
  • Nabil Garroum
  • Patrick Dougan
  • Praveen Kumar
  • Sahibjeet Singh
  • Sergio Ivan Fernandez Luengo
  • Siewyan Hoh
  • Sophie Hollitt
  • Srishti Nagu
  • Tobias Böckh
  • Tonatiuh García Chávez
  • Yarelis Acevedo
  • Zahra Abdy
  • Zenny Jovi Joestar Wettersten
  • +44