
Lernziele/Kompetenzen:
• Die Studierenden erlernen erweiterte Kenntnisse in der Programmierung mit C++
• Darunter ist Funktionalität, welche in C++11 und folgenden Standards zur Sprache und zur Standardbibliothek hinzugefügt wurden
• Es werden auch selbst auferlegte Regeln betrachtet, um übliche Fehler bei der Nutzung von C++ zu vermeiden
• Auch werden alternative Programmierparadigmen zu objektorientiertem Design betrachtet
Inhalte:
Modernes C++ (Smartpointer, Move Semantik, Perfect Forwarding, Lambdas, Atomics, ...), Const Correctness, RAII, RAII auf C Typen, Data Oriented Design (DOD), Composition Based Design (z.B. ECS), Template (Meta)-Programmierung, SFINAE, constexpr, Undefined Behavior, std Algorithmen, Range-based for, auto, Rule of 3/5/0, CRTP, Pimpl, RVO, (Micro- & Macro-) Benchmarking in C++, spezielle Allokatoren; mit einem Ausblick auf den Spaceship Operator, Concepts, Coroutines und Modules.
Lehrmethoden:
• Vorlesung mit Foliensammlung, Beispielprogrammen und Literatur zum Selbststudium
• Partiell als Flipped Classroom: Hier muss zur Vorbereitung vor einer Unterrichtseinheit ein Artikel gelesen oder ein ca. 30 minütiges Video geschaut werden
• Schreiben von C++-Programmen in der Übung
• Schreiben einer C++-Programmbibliothek im Praktikum
- Lehrperson: Jan Reitz