Concepts of C++ programming
Administrative Information
Course with lectures and exercises for Bachelor and Master students (IN2377).
- Organizers:
- Lectures: Tobias Lasser
- Exercises: David Frank, Jonas Jelten, Alessandro Wollek
- Contact:
- chat platform https://zulip.in.tum.de, stream #CPP and #CPP Homeworks
- Sessions:
- 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.
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.