• Skip to content  (Accesskey: 1)
  • Skip to navigation  (Accesskey: 2)
  • Skip to search  (Accesskey: 7)
Close page navigation
DE
Open page navigation
  • TU Wien
    • Overview
    • News
    • fuTUre fit
    • About TU Wien
    • Organisation
    • A university for all
    • Working at TUW
    • TUW Community
    • Campus
    • Contact
  • Studies
    • Overview
    • Studies
    • Prospective Students
    • New Students
    • Students
    • Studying Internationally
    • Teaching Staff , opens an external URL in a new window
    • Pupils
    • Best Teaching Awards 2025
  • Research
    • Overview
    • Profile
    • News
    • Events
    • Facilities
    • Successes
    • Networks
    • TUW Doctoral Center
    • RTI support
    • Funding opportunities
    • Databases
  • Partnerships
    • Overview
    • Inventions, Patents, Commercialization
    • Giving and Support
    • Start-ups
    • Technology Offers
    • Industry Relations
    • Center for Technology and Society , opens an external URL in a new window
    • University Alliances
    • TU Austria , opens an external URL in a new window
    • EULIST
  • Services
    • Overview
    • Library
    • Campus IT-Services
    • Campus services
    • Eventmanagement
    • Media
    • Reporting system
    • Newsletter
  • Internal
    • Overview
    • Portal (TISS, SAP, TYPO3,...) , opens an external URL in a new window

Research Events

  1. Research /
  2. Events /
  3. Detail /

back to the research event calendar

 

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 details

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/

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.

Skip to footer

TU Wien

  • News
  • fuTUre fit
  • About TU Wien
  • Organisation
  • Corona
  • A university for all
  • Working at TUW
  • TUW Community
  • Campus
  • Contact

Studies

  • News
  • Studies
  • Admission
  • Studying at TU Wien
  • Student Support
  • Teaching at TU Wien
  • International
  • Pupils
  • Continuing Education
  • ÖH Elections 2025
  • Best Teaching Awards 2025

Research

  • Profile
  • News
  • Events
  • Facilities
  • Successes
  • Networks
  • TUW Doctoral Center
  • RTI support
  • Funding opportunities
  • Databases

Partnerships

  • Inventions, Patents, Commercialization
  • Giving and Support
  • Start-ups
  • Technology Offers
  • Industry Relations
  • Center for Technology and Society, opens an external URL in a new window
  • University Alliances
  • TU Austria, opens an external URL in a new window
  • EULIST

Services

  • Library
  • Campus IT-Services
  • Campus services
  • Eventmanagement
  • Media
  • Reporting system
  • Newsletter

Internal

  • Portal (TISS, SAP, TYPO3,...), opens an external URL in a new window

© TU Wien  # 12508

  • Legal notice
  • Accessibility Declaration
  • Data Protection Declaration (PDF)
  • Cookie settings
  • Top menu level Research
  • Back to: Events
  • Detail
  • Facebook
  • LinkedIn
  • YouTube
  • Instagram
  • Bluesky

About Cookies and other techniques

Our website uses cookies and integrates content from third-party providers to ensure you get the best experience on our website, for analytical purposes, to provide social media features, and for targeted advertising. This it is necessary in order to pass information on to respective service providers. If you would like additional information about cookies and content from third-party providers on this website, please see our Data protection declaration.

Mandatory

These cookies are required to help our website run smoothly.

Name Purpose Lifetime Type Provider
CookieConsent Saves your settings for the use of cookies on this website. 1 year HTML Homepage TU Wien
SimpleSAML This is needed to distinguish between the sessions of the logged-in users. session HTTP Login TU Wien
SimpleSAMLAuthToken This is needed to distinguish between the sessions of the logged-in users. session HTTP Login TU Wien
fe_typo_user Is needed so that in case of a Typo3 frontend login the session ID is recognized to grant access to protected areas. session HTTP Homepage TU Wien
staticfilecache Is needed to optimize the delivery time of the website. session HTTP Homepage TU Wien
JESSIONSID Is needed so that in case of a LectureTube the session ID is recognized to grant access to protected areas. session HTTP LectureTube TU Wien
_shibsession_lecturetube This is needed to distinguish between the sessions of the logged-in users. session HTTP LectureTube TU Wien
Web statistics

These cookies help us to continuously improve our services and adapt our website to your needs. We statistically evaluate the pseudonymized data collected from our website.

Name Purpose Lifetime Type Provider
_pk_id Used to store a few details about the user such as the unique visitor ID. 13 months HTML Matomo TU Wien
_pk_ref Is used to store the information of the users home website. 6 months HTML Matomo TU Wien
_pk_ses Is needed to store temporary data of the visit. 30 minutes HTML Matomo TU Wien
Marketing

With the help of these cookies and third-party content we strive to improve our offer for our users. By means of anonymized data of website users we can optimize the user flow. This enables us to improve ads and website content.

Name Purpose Lifetime Type Provider
facebook Is used to Enable ad delivery or retargeting 90 days HTTP Meta
__fb_chat_plugin Is needed to store and track interactions (marketing/tracking). persistent HTTP Meta
_js_datr Is needed to save user settings. 2 years HTTP Meta
_fbc Is needed to save the last visit (marketing/tracking). 2 years HTTP Meta
fbm Is needed to store account data (marketing/tracking). 1 year HTTP Meta
xs Is needed to store a unique session ID (marketing/tracking). 1 year HTTP Meta
wd Is needed to log the screen resolution. 1 week HTTP Meta
fr Is needed to serve ads and measure and improve their relevance. 3 months HTTP Meta
act Is needed to store logged in users (marketing/tracking). 90 days HTTP Meta
_fbp Is needed to store and track visits to various websites (marketing/tracking). 3 months HTTP Meta
datr Is needed to identify the browser for security and website integrity purposes, including account recovery and identification of potentially compromised accounts. 2 years HTTP Meta
dpr Is used for analysis purposes. Technical parameters are logged (e.g. aspect ratio and dimensions of the screen) so that Facebook apps can be displayed correctly. 1 week HTTP Meta
sb Is needed to store browser details and security information of the Facebook account. 2 years HTTP Meta
dbln Is needed to store browser details and security information of the Facebook account. 2 years HTTP Meta
spin Is needed for promotional purposes and social campaign reporting. session HTTP Meta
presence Contains the "chat" status of logged in users. 1 month HTTP Meta
cppo Is needed for statistical purposes. 90 days HTTP Meta
locale Is needed to save the language settings. session HTTP Meta
pl Required for Facebook Pixel. 2 years HTTP Meta
lu Required for Facebook Pixel. 2 years HTTP Meta
c_user Required for Facebook Pixel. 3 months HTTP Meta
bcookie Is needed to store browser data (marketing/tracking). 2 years HTTP LinkedIn
li_oatml Is needed to identify LinkedIn members outside of LinkedIn for advertising and analytics purposes. 1 month HTTP LinkedIn
BizographicsOptOut Is needed to save privacy settings. 10 years HTTP LinkedIn
li_sugr Is needed to store browser data (marketing/tracking). 3 months HTTP LinkedIn
UserMatchHistory Is needed to provide advertising or retargeting (marketing/tracking). 30 days HTTP LinkedIn
linkedin_oauth_ Is needed to provide cross-page functionality. session HTTP LinkedIn
lidc Is needed to store performed actions on the website (marketing/tracking). 1 day HTTP LinkedIn
bscookie Is needed to store performed actions on the website (marketing/tracking). 2 years HTTP LinkedIn
X-LI-IDC Is needed to provide cross-page functionality (marketing/tracking). session HTTP LinkedIn
AnalyticsSyncHistory Stores the time when the user was synchronized with the "lms_analytics" cookie. 30 days HTTP LinkedIn
lms_ads Is needed to identify LinkedIn members outside of LinkedIn. 30 days HTTP LinkedIn
lms_analytics Is needed to identify LinkedIn members for analytics purposes. 30 days HTTP LinkedIn
li_fat_id Required for indirect member identification used for conversion tracking, retargeting and analytics. 30 days HTTP LinkedIn
U Is needed to identify the browser. 3 months HTTP LinkedIn
_guid Is needed to identify a LinkedIn member for advertising via Google Ads. 90 days HTTP LinkedIn