Advanced C++ with Focus on Software Engineering

Enterprises & SME Research & Science
Advanced C++ with Focus on Software Engineering


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.

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 non-intrusive design
  • understand the virtue of clean code


local registration (8:30 - 9:00)

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

  • Essential Object-Oriented Design Principles
    • The core of object-oriented programming
    • 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
    • Proper Handling of Member Data
    • Proper Interface Design
    • Compiler Generated Functions
    • Move Semantics
    • Proper Design of Polymorphic Interfaces
    • Const Correctness
    • Visibility vs. Accessibility

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

  • Robust Code
    • Error Propagation
    • Exception Safety
    • RAII
    • Handling Legacy Code
  • Proper Use of Dynamic Polymorphism
    • Non-public Inheritance
    • Public Inheritance
  • Dependency Breaking Techniques
    • Breaking Include Dependencies
    • Classical Design Patterns Revisited

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

  • Kernel development with C++
    • Choice of the proper data structures
    • Loop unrolling
    • Blocking
    • SIMD vectorization


Course participants should have basic UNIX/Linux knowledge (login with secure shell, shell commands, simple scripts, editor vi or emacs). Solid base on C++ and at least one year of experience with the language is needed.


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


Klaus Iglberger (External)


Each participant will get a paper copy of all slides.

Further course material can be found here (for participants 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 or directly on Klaus Iglberger's course page.

extended Deadline

for registration is Nov. 10, 2019 (extended deadline).

Late registrations after the deadline are still possible but maybe with reduced quality of the handouts.


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.  
Others: 780 EUR.
(includes coffee breaks)


Travel Information and Accommodation

see our How to find us page.


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.


Rolf Rabenseifner phone 0711 685 65530,
Khatuna Kakhiani phone 0711 685 65796,
Lorenzo Zanon phone 0711 685 63824,

Shortcut-URL & Course Number