Concepts of C++ programming

Administrative Information

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

  • Organizers:
  • Contact:
  • Sessions:
    • Lectures: Mondays, 16:15 - 17:45, auditorium in Galileo (8120.EG.001)
      • additional live-stream and recordings via TUM LIVE
    • Exercises: Wednesdays, 16:15 - 17:45, auditorium in Galileo (8120.EG.001)
      • additional video conferencing via TUM BBB
    • first session: Monday, April 25, 2022
  • Exam: Monday, August 8, 2022, from 10:45 to 12:15, Galileo Audimax and MW 1801
  • Course language: English

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).