Concepts of C++ programming

Administrative Information

Course with lectures and exercises for Bachelor and Master students (IN2377).

Caution: due to the ongoing Covid-19 situation, this course is going to take place in a fully virtual manner.

Course overview

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.
At the end we will have an outlook on future C++ concepts, such as Metaclasses or Concepts.

Course prerequisites

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

Course materials

All course materials will be available in the TUM Moodle course (access restricted to course participants, registration via TUMonline).