Concepts of C++ programming
Course with lectures and exercises for Bachelor and Master students (IN2377).
- Organizers: Tobias Lasser (lectures), Hayden Liu Weng (exercises)
- 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, MW 1450 (written, 90 minutes)
- Course language: English
Caution: this course is currently not part of any curriculum or study program at TUM!
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 are available in the TUM Moodle course (access restricted to course participants, registration via TUMonline).