externe Veranstaltungen
09. April 2024, 09:00 bis 15:30
Online Course - Modern C++ Software Design (Advanced)
Andere
Content Levels: Basic = 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 (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 (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 (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 (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
Course Material:
The course material will be available for registered attendees only.
Prices and Eligibility:
Different course fees apply:
- VSC users: free of charge
- Students and members of Austrian universities and public research institutes: free of charge
- Students and members of other universities and public research institutes: 240 €
- Others: 800 €
Information about payment will be provided with the confirmation email.
Veranstaltung Details
- Veranstaltungsort
-
Vienna Scientific Cluster
Zoom, Online - Veranstalter
-
Claudia Blaas-Schenner and Ulrike Faltin
training@vsc.ac.at - Info-Link
- https://events.vsc.ac.at/event/119/
- Öffentlich
- Ja
- Kostenpflichtig
- Nein
- Anmeldung erforderlich
-
Ja
Registration, öffnet eine externe URL in einem neuen Fenster