Concepts of C++ programming
Course with lectures and exercises for Bachelor and Master students (IN2377).
- chat platform https://zulip.in.tum.de, stream #CPP
- Exam: tba
- Course language: English
Caution: due to the ongoing Covid-19 situation, this course is going to take place in a fully virtual manner.
In this course we study the concepts of modern C++ programming.
We start with the basic concepts of the C++ language (syntax, strong typing, type deduction). Then, we investigate the central, modern C++ programming concepts:
- Concepts for build systems and dependency management: concepts for automatic compilation, linking and management of dependencies are studied. Additionally, concepts for continuous testing and integration.
- Concepts for resource management: RAII, smart pointers, universal references, ownership and copy/move.
- Concepts for procedural programming: C++ mechanisms for procedural programming, such as functions, parameter passing, lambdas, overloads, and error handling.
- Concepts for object-oriented programming: classes, inheritance (single and multiple), polymorphism.
- Concepts for generic programming: templates, variadic templates and fold expressions, expression templates, and typical patterns such as CRTP.
- Concepts of compile-time programming: concepts such as template recursion, constexpr, and type traits.
- Concepts for containers and iterators: STL standard containers, iterator concepts as well as views.
- Optionally, concepts for parallel programming, such as threads, atomics and async/futures.
Previously to attending this course, you should have passed the following courses (or equivalent):
- IN0001: Introduction to Informatics
- IN0002: Fundamentals of Programming (Exercises & Laboratory)
- IN0007: Fundamentals of Algorithms and Data Structures
All course materials will be available in the TUM Moodle course (access restricted to course participants, registration via TUMonline).