This lesson is still being designed and assembled (Pre-Alpha version)

Basic Modern C++

FIXME: home page introduction


This lesson is NOT for complete programming beginners. It should NOT be the first programming language you learn.

  1. Basic Python, e.g. through the Software Carpentry “Programming with Python” module
  2. Basic Bash, e.g. through the Software Carpentry “The UNIX Shell” module

The HSF Training Curriculum

HSF Logo
This training module is part of the Training Curriculum, a series of training modules that serves HEP newcomers the software skills needed as they enter the field, and in parallel, instill best practices for writing software.


Setup Download files required for the lesson
00:00 1. Introduction What is C++?
When is C++ the right language?
How do I get started in C++?
00:10 2. Core Syntax and Types What are the basic syntactical elements of C++
What are C++ types and which basic types exist
00:30 3. Arrays and Vectors How can I create collections of things in C++
How can I get and set values in a collection?
If I don’t know the size of the collection in advance, what do I do?
01:10 4. Basic C++ operators What is specific in basic C++ operators ?
01:20 5. Compound datatypes How do we combine existing types into new types that are greater than the sum of their parts?
What are classes, and how do we define and use them?
01:20 6. Functions How to define a function ?
What are the different ways to pass input arguments ?
What are the different ways to get back the results ?
01:30 7. References How do we use references in C++?
01:40 8. Control Instructions How do I execute certain lines of code but not others?
How do I reuse code and execute it many times?
02:10 9. Headers and Interfaces What is an interface?
Why separate some of the code into header files?
02:20 10. Templates How to factorize the code of similar functions and classes, where only few types and sizes are changing ?
02:40 11. Type inference Should I repeat again and again the obvious type of everything ?
02:50 12. Classes What are classes, how do they differ from structs, and how do we build them?
02:50 13. Sum types How do sum types differ from product types?
02:50 14. Code inclusion How can I include code from an external file in my lesson
02:50 Finish

The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.


The following people contributed to the content of this lesson: Note that this list does not include the contributors to the framework.