Research Events

20. March 2023, 09:00 until 23. March 2023 16:30

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

Workshop

This advanced C++ training is a course on software design 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. Additionally, the course gives insight into kernel development with C++. The course provides insight into different design strategies (object-oriented programming, functional programming, generic programming) and the philosophy of “Modern C++” and teaches 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 = 3:00h (13%) + Intermediate = 8:00h (35%) + Advanced = 12:00h (52%)

Prerequisites:

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.

Gained Skills:

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

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)

The Basic Design Principles

- Defining a Goal
- The SOLID Principles

Concepts and the STL

- Motivation
- STL Algorithms
- STL Allocators

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

Advanced Templates

- Type Traits
- SFINAE
- C++20 Concepts

Class Design

- Compiler Generated Functions
- Exception Safety
- Copy Elision

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

Class Design

- Move Semantics
- Return Values and Parameters
- Member Data
- Applied Class Design
- Visibility vs. Accessibility

Dynamic Polymorphism

- The Perils of Inheritance

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

Dynamic Polymorphism

- Value Semantics
   - Visitor (Classic vs. Modern)
   - Strategy (Classic vs. Modern)
   - Type Erasure

- Public Inheritance
  - Examples for good public inheritance
  - Examples for bad public inheritance

- Surprises in Inheritance Hierarchies

Design of HPC Components

- Motivation
- SIMD Basics
- Vectors and Matrices
- Dense Matrix/Dense Vector Multiplication

Course Format:

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

Lecturer:

Klaus Iglberger (External)

Language:

English

Date, Time, and Location:

20. - 23.03.2023, 09:00 - 16:30 (23.03. until 15:30) CET, LIVE ONLINE COURSE

Course Material:

The course material will be available for registered attendees only.

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.

 

 

 

Calendar entry

Event location

TU
Wien Zoom

 

Organiser

Vienna Scientific Cluster
Claudia Blaas-Schenner and Ulrike Faltin
training@vsc.ac.at

 

Public

Yes

 

Entrance fee

No

 

Registration required

Yes

Registration for this course starts on January 11, 2023 on the VSC website: vsc.ac.at/training/2023/C++A/, opens an external URL in a new window

Registration period is from 11 January to 12 March 2023, 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.