Research Events

17. October 2022, 09:00 until 20. October 2022 16:30

Online Course - Modern C++ Software Design (Intermediate)


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.


Please note that this course is not a tutorial on any specific C++ library or tool, but teaches good, mature software design with the C++ itself.

Content Levels: Beginners = 8:00h (35%) + Intermediate = 12:00h (52%) + Advanced = 3:00h (13%)

We provide two types of C++ courses with two different levels of prerequisites:

intermediate C++: October 17-20, 2022 (this course)
advanced C++: March 20-23, 2023 (, opens an external URL in a new window)


Prerequisites intermediate C++ (this course)

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++ (e.g. pointers and references, loops, conditionals, classes, ...), basic features (constructors, destructors, ...), and some prior experience with templates and inheritance.

Prerequisites advanced C++ (other course type)
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 the standard library (std::vector, std::list, …), hands-on experience with both template-based and inheritance-based designs and some experience with design patterns.

Please choose the course type that fits best to you!

Gained Skills:

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

Programming Tasks:

Participants are expected to use their own machines. Any operating system (Windows, Linux, MacOS, ...), any IDE/editor (MS Visual Studio, CLion, vi, emacs, ...) and any compiler capable of at least C++14 (GCC, Clang, MSVC, ...) can be used. The programming tasks, including both Makefiles and CMake files, will be distributed before the course.

Agenda & Content:

1st day course schedule (9:00 - 16:30, lunch break 12:30 - 13:30)

Concepts and the STL

• Overview of the STL
• Proper use of the STL
• Iterators
• Algorithms
• Containers
• Allocators

2nd day course schedule (9:00 - 16:30, lunch break 12:30 - 13:30)

C++ Templates

• Function Templates
• Class Templates
• Variadic Templates
• Template Specialization

3rd day course schedule (9:00 - 16:30, lunch break 12:30 - 13:30)

Class Design

• Compiler Generated Functions
• Move Semantics
• Proper Handling of Member Data
• Proper Design of Member Functions
• Strong types
• Const Correctness
• Visibility vs. Accessibility

4th day course schedule (9:00 - 15:30, lunch break 12:30 - 13:30)

Robust Code

• Error Propagation
• Exception Safety
•  Handling Legacy Code

Proper Use of Dynamic Polymorphism

• The Perils of Inheritance
• Value Semantics
• Public Inheritance
• Non-public Inheritance
• Surprises in Object Hierarchies

Classical Design Patterns Revisited

• Strategy
• Visitor

Course Format:

This course will be delivered as a LIVE ONLINE COURSE (using Zoom) for remote participation.


Klaus Iglberger (External)

Language: English

Date, Time, and Location:

17. - 20.10.2022, 09:00 - 16:30 (20.10. until 15:30) CEST, LIVE ONLINE COURSE (using Zoom)

Prices and Eligibility:

Different course fees apply:

VSC users: none

Students and members of Austrian universities and public research institutes: none

Students and members of other universities and public research institutes: 240 €

Others (*): 800 €

Information about payment will be provided with the confirmation email.

(*) Austrian SMEs can get a funding of 80% of the course fee via Digital Skills Schecks Initiative (, opens an external URL in a new window)

Course Material:

The course material will be available for registered attendees only.

Calendar entry

Event location

TU Wien
Zoom, Online



Vienna Scientific Cluster
Claudia Blaas-Schenner and Ulrike Faltin


More Information





Entrance fee



Registration required


Registration form:, opens an external URL in a new window

Registration period is from 8 Aug 2022 to 9 Oct 2022, and follows the "first come – first served" principle. Following your successful registration, you will receive further information approx. 1 week before the course.
For the online course we can take a maximum of 40 persons.
Additional registrations will be added to a waiting list.