Modern C++ Software Design (Advanced)

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: March 5-8, 2024 and July 9-12, 2024
  • advanced: June 11-14, 2024 and Nov. 19-22, 2024

with two different levels of prerequisites.

Veranstaltungsort

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

Veranstaltungsbeginn

11. Jun 2024
08:30

Verstaltungsende

14. Jun 2024
16:30

Sprache

Deutsch

Einstiegslevel

Fortgeschritten

Themenbereiche

Programmiersprachen für wissenschaftliches Rechnen

Themen

C/C++

Zurück zur Liste

Prerequisites and content levels

Prerequisites and Language Hints Advanced C++

Course participants should have at least two to three years of experience with the language. This includes a solid knowledge of the syntax of C++, experience with the standard library (std::vector, std::list, std::unique_ptr, …), hands-on experience with both template-based and inheritance-based designs and some experience with design patterns.

Course participants can bring their own laptops, but HLRS will provide machines with an up-to-date C++ environment. For these, participants should have basic UNIX/Linux knowledge (login with secure shell, shell commands, simple scripts, editor vi or emacs). In the online course, participants are expected to use their own devices. The programming tasks, including both Makefiles and CMake files, will be distributed before the course.

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

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

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.

Content levels
  • Basic: 3 hours
  • Intermediate: 9:30 hours
  • Advanced: 13 hours

Learn more about course curricula and content levels.

Instructors

Klaus Iglberger (External trainer)

Learning outcomes

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

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:00)

  • The Basic Design Principles
    • Defining a Goal
    • The SOLID Principles
  • Concepts and the STL
    • STL Allocators
    • constexpr

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

  • Advanced Templates
    • Type Traits
    • SFINAE
    • Concepts
    • CRTP
    • Forwarding References

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

  • Dynamic Polymorphism
    • The Perils of Inheritance
    • Value Semantics
    • Public Inheritance
    • Surprises in Object Hierarchies
  • Design Patterns
    • Decorator
    • Visitor
    • Strategy

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

  • C++ Design Patterns
    • Template Method
    • Prototype
    • Bridge
    • External Polymorphism
    • Type Erasure
    • Expression Templates

Lunch break will usually be between 12.30-13.45.

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.
We encourage you to register to the waiting list if the course is full. Places might become available.

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 May 26, 2024 (extended registration phase).

Late registrations after that date are still possible according to the course capacity, possibly with reduced quality of the handout.

Fees

  • Students without master’s degree or equivalent: 35 Euro
  • PhD students or employees at a German university or public research institute: 75 Euro
  • PhD students or employees at a university or public research institute in an EU, EU-associated or PRACE country other than Germany: 150 Euro
  • PhD students or employees at a university or public research institute outside of EU, EU-associated or PRACE countries: 300 Euro
  • Other participants, e.g., from industry, other public service providers, or government: 780 Euro

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

Lunch Breaks

We plan to have lunch in the unversity's canteen (Mensa Stuttgart-Vaihingen, have a look at their menu online). Two other near possibilities for lunch are:

We will update this information if opening times etc. change and inform you more precisely before the course starts.

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.

Ähnliche Trainingskurse

Alle Trainingskurse

Oktober 23 - 25, 2024

Dresden, Germany


November 19 - 22, 2024

Hybrid Event - Stuttgart, Germany