Please visit Jefferson Lab Event Policies and Guidance before planning your next event:
May 15 – 19, 2023
Jefferson Lab
US/Eastern timezone

Welcome to the Software and Computer Workshop 2023 for the Jefferson Lab community organized in collaboration between the HEP Software Foundation, the Experimental Physics Software and Computing Infrastructure Group and the Jefferson Lab Users Organization


This event will be held from May the 15th to 19th. Monday to Wednesday will focus on "C++ essentials" and Thursday to Friday will be focus in Jefferson Lab software and computing essentials for all Halls and EIC. The workshop will have dedicated sessions for hands-on training. 


We have a limited number of in person slots due to the hands-on training sessions. Experts from CERN (Bernhard Manfred Gruber, Stephan Hageboeck, Stefan Roiser, Liz Sexton-Kennedy, Philipe Canal) and the lab (Brad  Sawatzky, David Lawrence, Nathan Brei) 

The "C++ essentials” part of the workshop will run over 3 days. Each day will feature one two hour interactive lecture session in the morning and a session focused around hands-on training exercises in small breakout groups (related to the morning training) in the afternoons (ET). The course is based on material developed originally by Sebastien Ponce. The morning lectures will be held by Stephan Hageböck and Bernhard Gruber









Basics (syntax, pointers, references, compound types, operators ...) 

Tools (code mgmt, compiler chain, debugging, ...) 

Object Orientation (classes, inheritance, ... ) 

Object Orientation  (allocate objects, advanced OO, functors, ...) 

Modern C++ (constness, exceptions, templates, STL, lambdas, ...) 

Jefferson Lab specific Hall A/B/C/D/EIC (TBD) 


Farm operations 



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? 

The course will start from the very basics but will also touch on advanced and modern features of C++ (check out the curriculum above). We suggest you to follow this course if you only have very basic knowledge of C++ or you want to refresh it. The goal of this course is to already enable you to contribute meaningfully to your experiment code base or to write your own analysis software.  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. 

Really want to attend but timing doesn't work? 

Online registrations are open but we that will be largely for streaming the lectures part of the workshop. The hands-on sessions will be for the people in the room.  

Jefferson Lab
CC F113