Introduction to C++
Mod(C++) Fundamentals is a two day training course. It is ideal for new hires that 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 Fundamentals course gives the students an understanding of how one should think and program in “Modern C++” (C++11/14/17/20). The exercises will all be based around a 2D graphics game inspired by PacMan. Topics covered in the course include:
- Variable and function use, including auto, const, overloading and function templates
- Namespaces, classes and structs, when and how to use them
- Standard library containers and algorithms usage
- How to efficiently use values and references
- Memory theory, including understanding allocation on the heap and stack
- RAII and lifetime management, including Rule of Zero
- Lambda functions and using them with standard algorithms
- An introduction to the C++ compilation model and advice to make the best use of compilers and build systems
Students are assumed to be proficient in anObject Oriented Programming language like Java or C#. They should be working in (or looking to work in) a C++ project.
The exercises will be done in a CMake based project. The students will need a development environment, a rich IDE is recommended, for example Jetbrains CLion, QtCreator or Visual Studio. A GitHub account will be useful.
Patricia Aas is an international speaker and has spoken at CppCon, ACCU, C++OnSea, NDC Security, NDC Oslo and many other conferences on subjects ranging from Sandboxing in Chromium to Vulnerabilities in C++. She has taught a range of subjects in Computer Science at the University of Oslo.
Patricia has a masters degree in Computer Science and 13 years professional experience as a programmer, most of that time programming in C++. During that time she has worked in codebases with a high focus on security: two browsers (Opera and Vivaldi) and embedded Cisco telepresence systems.
Corentin Jabot is a freelance developer and member of the C++ committee where he participates in the Unicode and library evolution working groups.