Modern C++ Software Design (Intermediate)

The focus of this intermediate C++ course are the essential C++ software development principles, concepts, idioms, and best practices, which enable programmers to create professional, high-quality code. The course will give insight into the different aspects of C++ (object-oriented programming, functional programming, generic programming) and will teach 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, once in English, once in German:

  • intermediate: March 11-14, 2025 (English) and July 1-4, 2025 (German)
  • advanced: May 13-16, 2025 (English) and November 25-28, 2025 (German)

with two different levels of prerequisites.

Location

This hybrid event will take place online and at
HLRS, University of Stuttgart
Nobelstraße 19
70569 Stuttgart, Germany
Room 0.439 / Rühle Saal
Location and nearby accommodations

Start date

Jul 01, 2025
08:45

End date

Jul 04, 2025
16:30

Language

German

Entry level

Intermediate

Course subject areas

Programming Languages for Scientific Computing

Topics

C/C++

Back to list

Prerequisites and content levels

Prerequisites and Language Hints Intermediate C++

Course participants should have at least one year of hands-on experience with the language. This includes a good understanding of the basic mechanics (header files, source files, compilation), a good knowledge of the syntax of C++ and its basic features (loops, control structures, functions and classes). Course participants can bring their own laptops, but HLRS will provide machines with an up-to-date C++ environment.

If you will participate remotely, you should have access to an C++20 programming environment.

For similar courses, please have a 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.

Content levels
  • Basic: 7:45 hours
  • Intermediate: 15 hours
  • Advanced: 2:45 hours

Learn more about course curricula and content levels.

Instructors

Klaus Iglberger (External trainer)

Learning outcomes

After this course, participants will: 

  • have gained knowledge about fundamental C++ programming concepts and idioms
  • have a good overview of the tools the STL provides
  • have a solid understanding of templates
  • be able to properly design classes (including the special member functions)
  • be able to utilize inheritance hierarchies and virtual functions
  • understand the virtue of clean code

Agenda

All times are local times in the central European time zone (Berlin).

Local registration/drop in to zoom (8:30 - 9:00)

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

  • The Standard Template Library (STL)
    • Overview of the STL
    • STL Iterators
    • STL Algorithms
  • C++ Templates
    • Introduction to generic programming
    • Function Templates
    • Class Templates
    • Variadic Templates

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

  • Class Design (I)
    • Object Lifetimes
    • RAII
    • The Special Member Functions
      • The Default Constructor (and how initialization works in classes)
      • The Copy Operations

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

  • Class Design (II)
    • The Special Member Functions
      • The Move Operations
    • Proper Handling of Member Data
    • Designing Classes

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

  • Dynamic Polymorphism
    • Virtual Dispatch
    • Inheritance: The Good Parts
    • Inheritance: The Bad Parts
    • The Strategy Design Pattern
    • The Visitor Design Pattern

Handouts

Each participant will get a copy of all slides (PDF).

HLRS concept for on-site courses

Besides the content of the training itself, an important aspect of this event is the scientific exchange among the participants. We try to facilitate such communication by

  • a social event on the evening of the first course day,
  • offering common coffee and lunch breaks and
  • working together in groups of two during the exercises.

Registration information

Register via the button at the top of this page (will be available soon).

This course will be hybrid, i.e. it will take place at HLRS on-site but it will also be possible to attend online. Participants, online as well as on-site, have to be aware and agree that they might appear in the live video stream taken by a camera in the back of the lecture room or by a webcam on laptops. The live stream will not be saved. We strongly recommend to attend this course on-site since on-site attendance is much more effective and efficient in our experience. Therefore we might give priority to on-site over online participants during registration.

Registration closes on June 15, 2025.

Fees

  • Students without master’s degree or equivalent: 40 Euro
  • PhD students or employees at a German university: 115 Euro
  • PhD students or employees at a university in an EU, EU-associated or PRACE country other than Germany: 180 Euro
  • PhD students or employees at a university outside of EU, EU-associated or PRACE countries: 360 Euro
  • Participants from public research institutes, public service providers or government: 600 Euro
  • Other participants, e.g., from industry: 960 Euro

Link to the EU and EU-associated (Horizon Europe), and PRACE countries.

Our course fees include coffee breaks (in classroom courses only).

Contact

Tobias Haas phone 0711 685 87223, tobias.haas(at)hlrs.de

HLRS Training Collaborations in HPC

HLRS is part of the Gauss Centre for Supercomputing (GCS), together with JSC in Jülich and LRZ in Garching near Munich. EuroCC@GCS is the German National Competence Centre (NCC) for High-Performance Computing. HLRS is also a member of the Baden-Württemberg initiative bwHPC.

This course is provided within the framework of the bwHPC training program.

Further courses

See the training overview and the Supercomputing Academy pages.

Related training

All training

March 11 - 14, 2025

Hybrid Event - Stuttgart, Germany


May 13 - 16, 2025

Hybrid Event - Stuttgart, Germany


November 25 - 28, 2025

Hybrid Event - Stuttgart, Germany