Concepts of C++ programming

Administrative Information

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

  • Organizers:
  • Contact:
  • Sessions:
    • Lectures: Tuesdays, 14:15 - 15:45, Interims II Hörsaal 2 (5416.01.003)
      • additional live-stream and recordings via TUM Live
    • Exercises: Thursdays, 17:00 - 18:30, auditorium in Galileo (8120.EG.001)
      • additional live-stream via BBB (no recordings)
  • Course start:
    • first lecture on Oct. 18, 2022
    • first exercise session on Oct. 20, 2022
  • Exam: Feb. 23, 2023, 17:30 - 19:00 (MW 0001, MI HS 1, Interims I Hörsaal 1 and 2, CH21010)
  • 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 containers and iterators: STL standard containers, iterator concepts as well as views.
  • 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.
  • 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 Moodle course (access restricted to course participants, registration via TUMonline). Changes in the GitLab Tasks repository are automatically announced on Zulip in the GitLab Upstream Homework Newsfeed Topic of the #CPP Homeworks stream.