ONLINE COURSE: Modern C++ Software Design (Advanced)

Enterprises & SME Research & Science
ONLINE COURSE: Modern C++ Software Design (Advanced)


This course will be provided as ONLINE course (using Zoom).

This advanced C++ training is a course on object-oriented (OO) software design with the C++ programming language. The focus of the training are the essential OO and C++ software development principles, concepts, idioms, and best practices, which enable programmers to create professional, high-quality code. Additionally, the course gives insight into kernel development with C++. The course will not address special areas and applications of C++, such as for instance Template Meta Programming (TMP), or the quirks and curiosities of the C++ language. It rather teaches guidelines to develop mature, robust, maintainable, and efficient C++ code.

Since 2020 we provide two types of C++ courses, each offered two times per year:

  • intermediate: Mar. 2-5, 2021, and July 6-9, 2021
  • advanced: May 4-7, 2021 (this course), and Nov. 23-26, 2021

with two different levels of prerequisites.


Prerequisites Advanced C++ (this course):

Course participants should have basic UNIX/Linux knowledge (login with secure shell, shell commands, simple scripts, editor vi or emacs). At least two to three years of experience with the language is needed. This includes a solid knowledge of the syntax of C++, experience with both template-based and inheritance-based designs and some experience with design patterns.

Prerequisites Intermediate C++ (other course type):

Course participants should have basic UNIX/Linux knowledge (login with secure shell, shell commands, simple scripts, editor vi or emacs). At least one year of experience with the language is needed. This includes a good understanding of the basic mechanics (header files, source files, compilation), good knowledge of the syntax of C++, and some experience with templates and inheritance.

Please choose the course that fits best to you!

Gained Skills
Gained Skills

After this course, participants will:

  • have a detailed understanding of the essential OO design principles
  • have gained knowledge about fundamental C++ programming concepts and idioms
  • be able to properly design classes and class interfaces
  • know about the importance of exception safe programming
  • have gained insight into kernel development with C++
  • avoid the usual pitfalls in the context of inheritance
  • comprehend the advantages of value-based design
  • understand the virtue of clean code

drop in to Zoom (8:30 - 9:00)

1st day course schedule (9:00 - 17:30)

  • The Basic Design Principles
    • Defining a goal
    • The SOLID principles
  • Concepts and the STL
    • Overview of the STL
    • Proper use of the STL

2nd day schedule (9:00 - 17:30)

  • Class Design
    • Compiler Generated Functions
    • Move Semantics
    • Proper Handling of Member Data
    • Proper Design of Member Functions
    • Type Traits
    • SFINAE
    • Visibility vs. Accessibility

3rd day schedule (9:00 - 17:30)

  • Proper Use of Dynamic Polymorphism
    • The Perils of Inheritance
    • Value Semantics
    • Public Inheritance
    • Surprises in Object Hierarchies
  • Classical Design Patterns Revisited
    • Strategy
    • Visitor

4th day schedule (9:00 - 16:30)

  • Modern C++ Design Patterns
    • CRTP
    • Expression Templates
    • Type Erasure
  • Kernel development with C++
    • Choice of the proper data structures
    • Loop unrolling
    • Blocking
    • SIMD vectorization


The course language is German. The slides are in English.


Klaus Iglberger (External)

Course Material

All course material and the details to access the online course will be provided to the registered and accepted attendees only.


via online registration form.

If you want a similar course in English, then please look at the 3- or 4-day advanced C++ courses at LRZ , the 4 day course at VSC in Vienna or directly on Klaus Iglberger's course page.


for registration is April 4, 2021


Students without Diploma/Master: 35 EUR.
Students with Diploma/Master (PhD students) at German universities: 75 EUR.  
Members of German universities and public research institutes: 75 EUR.
Members of universities and public research institutes within EU or PRACE member countries: 150 EUR.   
Members of other universities and public research institutes: 300 EUR.  

Our course fee includes coffee breaks (in classroom courses only).



HLRS is part of the Gauss Centre for Supercomputing (GCS), which is one of the six PRACE Advanced Training Centres (PATCs) that started in Feb. 2012.
HLRS is also member of the Baden-Württemberg initiative bwHPC-C5.
This course is provided within the framework of the bwHPC-C5 user support. This course is not part of the PATC curriculum and is not sponsored by the PATC program.


Andreas Ruopp phone 0711 685 87259,
Rolf Rabenseifner phone 0711 685 65530,
Khatuna Kakhiani phone 0711 685 65796,
Tobias Haas phone 0711 685 87223,

Shortcut-URL & Course Number