Modern C++ Software Design (Intermediate)

Course has been shifted from July to June.

This intermediate C++ training is a course on software development with the C++ programming language. The focus of the training 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:

  • intermediate: March 8-11, 2022, and June 21-24, 2022 (this course)
  • advanced: May 4-7, 2022, and Nov. 22-25, 2022

with two different levels of prerequisites.

Location

HLRS, University of Stuttgart
Nobelstraße 19
70569 Stuttgart, Germany
Room 0.439 / Rühle Saal
Location and nearby accommodations

Start date

Jun 21, 2022
08:30

End date

Jun 24, 2022
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 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.

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

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: 8 hours
  • Intermediate: 16 hours
  • Advanced: 3 hours

Learn more about course curricula and content levels.

Instructors

Klaus Iglberger (External)

Learning outcomes

After this course, participants will: 

  • have gained knowledge about fundamental C++ programming concepts and idioms
  • have a detailed understanding of template-based programming
  • be able to properly design classes and class interfaces
  • know about the importance of exception safe programming
  • 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 (8:30 - 9:00)

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

  • Concepts and the STL
    • Overview of the STL
    • STL Iterators
    • STL Algorithms
    • STL Containers

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

  • C++ Templates
    • Function Templates
    • Class Templates
    • Variadic Templates
    • Template Specialization
  • Call Resolution
    • Name Lookup
    • Template Argument Deduction
    • Overload Resolution
    • Access Labels
    • Function Template Specialization
    • Virtual Dispatch
    • Deleting Functions

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

  • Class Design (I)
    • Compiler Generated Functions
    • Copy Elision
    • Object Lifetimes
    • RAII
    • Move Semantics

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

  • Class Design (II)
    • Proper Handling of Member Data
    • Designing Classes
    • Const Correctness
  • Dynamic Polymorphism
    • Inheritance: The Good Parts
    • Inheritance: The Bad Parts
    • Value Semantics: From Pointers to Values
    • Public Inheritance
    • Surprises in Object Hierarchies

Handouts

Each participant will get a paper copy of all slides if desired.

On-site course & COVID rules

Although this event is a training course, another important aspect is the scientific exchange between participants, which did not work as well as we hoped in our online courses.

The concept to enable this communication among our participants consists of

  • common coffee and lunch breaks, and
  • if you want and permitted by official COVID-19 rules, working together in groups of two during the exercises.

For your safety, we allow only completely vaccinated, or fully recovered, or participants tested negatively on COVID-19 on all days. Note that participation with tests might be prohibited when the course starts or even while the course runs. In the course room and when not eating/drinking, FFP2 masks are required. See registration page for details. Of course, these rules also apply to the instructors.

We strongly recommend to choose travel options and hotels with the possibility to cancel (even close to the event) because we might be forced to deliver the course as an online course.

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.

Registration closes on June 6, 2022 (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 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.

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

Lunch Breaks

From Monday to Thursday a nearby canteen is opened and we plan to have lunch there. Further two other near possibilities for lunch are on all days:

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

Contact

Andreas Ruopp phone 0711 685 87259, ruopp(at)hlrs.de
Tobias Haas phone 0711 685 87223, tobias.haas(at)hlrs.de

PRACE PATC and bwHPC

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.

This course is also provided within the framework of the bwHPC training program. This course is not part of the PATC curriculum and is not sponsored by the PATC program.

Further courses

See the training overview and the Supercomputing Academy pages.

Related training

All training

June 11 - 14, 2024

Hybrid Event - Stuttgart, Germany


July 09 - 12, 2024

Hybrid Event - Stuttgart, Germany