[Online] Modern C++ Software Design
Online
Modern C++ Software Design

Schedule & Format
- Date: 2026, October 7-9
- Times:
- Oct 7: 9:00 - 17:00 CE(S)T
- Oct 8: 9:00 - 17:00 CE(S)T
- Oct 9: 9:00 - 17:00 CE(S)T
- Format: Three-day
- Location: Online via Zoom
- Language: English
Registered participants will receive the video conferencing link via email on the day before the course.
Instructor
- Klaus Igelberger
This course is organized by Erlangen National High Performance Computing Center (NHR@FAU).
Course Description
Writing correct C++ is one thing; writing software that is maintainable, extensible, and efficient at scale is quite another. This advanced course goes beyond syntax to focus on the principles, idioms, and design patterns that separate professional C++ from code that merely compiles. It covers API design and type safety, advanced generic programming with templates and C++20 concepts, classic design patterns in their modern C++ idioms, type erasure as a value-semantic alternative to dynamic polymorphism, and the fundamental distinction between value and reference semantics - giving experienced developers a systematic toolkit for high-quality software architecture.
This course requires substantial C++ experience in C++ programming (at least two to three years of practical experience). To start gathering experience, consider taking the C++ for Beginners course.
Prerequisites
Knowledge
- At least two to three years of practical C++ experience, including solid knowledge of classes, templates, inheritance, and the standard library (std::vector, std::unique_ptr, etc.)
- Familiarity with the C++ compilation model (headers, source files, link step)
Technical
- A local C++ development environment with a compiler supporting C++17 or later (GCC, Clang, or MSVC) under Windows, Linux, or macOS; a compatible editor or IDE such as VS Code, CLion, or similar
Course Structure
- Design principles: SOLID and goal-oriented software design
- API design: function parameters, return types, constructor design, strong types, and constexpr
- Object-oriented design: inheritance hierarchies, virtual dispatch, and interface-based programming
- Advanced generic programming: templates, type traits, SFINAE, forwarding references, and C++20 concepts
- Classic design patterns in modern C++: Visitor, Strategy, Bridge, and External Polymorphism
- Type erasure: value-semantic abstractions without inheritance
- Value semantics vs. reference semantics
Learning Outcomes
After completing this course, you will be able to:
- Apply established design principles to produce maintainable and extensible C++ code
- Design clean APIs using appropriate function parameters, return types, and constructor strategies
- Improve type safety using strong types and constexpr
- Design class hierarchies using object-oriented techniques including polymorphism and virtual dispatch
- Write generic, reusable components using templates, type traits, SFINAE, forwarding references, and C++20 concepts
- Recognize and implement classic design patterns (Visitor, Strategy, Bridge, External Polymorphism) in modern C++ idioms
- Apply type erasure to achieve value-semantic abstractions without inheritance
- Distinguish value semantics from reference semantics and reason about their design and performance implications
- Critically evaluate code for maintainability and performance trade-offs
Registration, Wait List and Withdrawal Policy
Registration
Please register at the bottom of this page. Registration is open until a few days before the course starts, or until the course is fully booked.
Prices and Eligibility
This course is open and free of charge for participants affiliated with academic institutions in European Union (EU) member states and Horizon 2020-associated countries.
Wait List
If the course reaches its maximum capacity, you can request to join the wait list by sending an email to nhr-training@fau.de. Please include your name and university affiliation in the message.
Withdrawal Policy
Please only register if you are committed to attending the course. No-shows will be blacklisted and excluded from future events.
If you need to withdraw your registration, please either cancel it directly through the registration system or send an email to nhr-training@fau.de.
Additional Courses
You can find an up-to-date list of all courses offered by NHR@FAU at https://hpc.fau.de/teaching/tutorials-and-courses/.