Concepts of C++ Programming
Contents
First, the module studies the basic concepts of the C++ language (syntax, strong typing, type deduction, focus on runtime efficiency). Then, the module studies the central, modern C++ programming concepts. The goal is that participants get a solid and thorough understanding of important and modern C++ concepts.
- Concepts for efficient resource management: The module presents RAII, smart pointers, universal references, ownership and copy/move.
- Concepts for procedural programming: The module investigates C++ mechanisms for procedural programming, such as functions, parameter passing, lambdas, overloads, and error handling.
- Concepts for object-oriented programming: The module presents classes, inheritance (single and multiple), polymorphy, and RTTI.
- Concepts for generic programming: The module investigates templates, variadic templates and fold expressions, expression templates for lazy evaluation, and typical patterns such as CRTP.
- Concepts of compile-time programming: The module investigates concepts such as template recursion, constexpr, and type traits.
- Concepts for containers, iterators, and ranges: The module presents the STL standard containers, algorithms and runtime guarantees, iterator concepts as well as views and ranges.
- 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 are investigated.
- Optionally, concepts for parallel programming are investigated, such as threads, atomics and async/futures, as well as recent C++ extensions such as concepts and modules.
Organization
- Lecture with integrated exercises:
- Lecture with integrated exercises: Mon 14:30–17:00 (s.t.) in MW 0001
- Exercise: Tue 14–16 (c.t.) in Interims II HS 2
- Exercises will include hands-on programming tasks
- Weekly homework assignments for grade bonus
- Language: English
- Module: formerly IN2377, new module number will be assigned soon. 6 ECTS, Bachelor/Master elective in various study programs
- Computer-based exam under supervision (90 minutes) with programming exercises, tentatively: own laptop required.
- Zulip stream for this lecture
Prerequisites
The course is aimed at bachelor/master students who have taken the following (or similar) courses:
- IN0001 Introduction to Informatics + IN0002 Fundamentals of Programming
- IN0007 Fundamentals of Algorithms and Data Structures
Prior experience in C++ or C is not required. Experience with imperative and object-oriented programming languages like Java is necessary.
Material
TBA