This lesson is still being designed and assembled (Pre-Alpha version)
FIXME: home page introduction
This lesson is NOT for complete programming beginners.
It should NOT be the first programming language you learn.
Basic Python, e.g. through the
Software Carpentry “Programming with Python” module Basic Bash, e.g. through the
Software Carpentry “The UNIX Shell” module
The HSF Training Curriculum
This training module is part of the
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
What is C++?
When is C++ the right language?
How do I get started in C++?
Core Syntax and Types
What are the basic syntactical elements of C++
What are C++ types and which basic types exist
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?
Basic C++ operators
What is specific in basic C++ operators ?
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?
How to define a function ?
What are the different ways to pass input arguments ?
What are the different ways to get back the results ?
How do we use references in C++?
How do I execute certain lines of code but not others?
How do I reuse code and execute it many times?
Headers and Interfaces
What is an interface?
Why separate some of the code into header files?
How to factorize the code of similar functions and classes, where only few types and sizes are changing ?
Should I repeat again and again the obvious type of everything ?
What are classes, how do they differ from structs, and how do we build them?
How do sum types differ from product types?
How can I include code from an external file in my lesson
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.