Mod(C++) Fundamentals is a two-day training course. It is tailored to give new hires an introduction to modern C++.
Introduction to C++
Mod(C++) Fundamentals is ideal for people who have little to no experience in C++, but are proficient in an Object Oriented Programming language, like Java or C#.
Mod(C++) Fundamentals should ideally be taken before Mod(C++) Intermediate, another two-day course which expands on the topics in Mod(C++) Fundamentals. Taken together these two courses will give a good foundation for a modern C++ programmer.
The exercises will be done in a CMake based project. The students will need a development environment, a rich IDE is recommended, for example Visual Studio Code and Jetbrains CLion. A GitHub account will be useful.
Students are assumed to be proficient in an Object Oriented Programming language like Java or C#. They should be working in (or looking to work in) a C++ project.
The course has been authored by Corentin Jabot, Patricia Aas and Ólafur Waage. Between them they have almost 40 years of experience in C++, working on everything from games to browsers and embedded.
Day 1 - Welcome to C++
- Introduction to C++ and presentation of the project
- Hello world and overview of simple C++
- Using variables, functions and parameters effectively
- Using values, references, auto and const
- An introduction to the compilation model of C++. Build systems, compilation, linkage, headers, translation units and libraries
- Introduction to unit testing using Catch2
- Classes, structs, namespaces and enum class
- Allocation on the stack vs heap, std::unique_ptr, Rule of Zero and RAII
Day 2 - Algorithmic Thinking
- Containers: std::array, and std::vector
- Iterators and Algorithms
- Lambdas and Function Templates
- Algorithmic Thinking
- Introduction to tooling like Clang Tidy, Clang Format, CMake, GDB
- Introduction to sanitizers like AddressSanitizer, Undefined Behavior Sanitizer and Memory Sanitizer