[Online] Modern C++ Software Design

Europe/Berlin
Online

Online

Description

Modern C++ Software Design

NHR@FAU

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/.

Registration
Participants
14 / 40
The agenda of this meeting is empty