Concepts of C++ programming

Administrative Information

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

  • Organizers: Tobias Lasser (lectures), Hayden Liu Weng (exercises)
  • Sessions:
    • Lectures: Wednesdays, 12:30 - 14:00, old Interims Hörsaal 2 (102) (first session: Oct. 16, 2019)
    • Exercises: Mondays, 14:15 - 15:45, new Interims Hörsaal 2 (003)
  • Exam: Feb. 12, 2020 at 13:30 (written, 90 minutes)
  • Course language: English

Caution: this course is currently not part of any curriculum or study program at TUM!

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 are available in the TUM Moodle course (access restricted to course participants, registration via TUMonline).