Online course “Modern C++ Software Design” by NHR@FAU, September 29 – October 1, 2021

It is our pleasure to announce a retake of the popular three-day course “Modern C++ Software design” by Dr. Klaus Iglberger. This course is made possible by KONWIHR and NHR@FAU. It will be conducted online via Zoom.

Date and time

September 29 – October 1, 2021, 9:00 a.m. – 5:00 p.m.

Participation is free of charge for attendees from German universities, academic computing centers, and research institutions. Please only register for the course if you are really going to attend. No-shows will be blacklisted and excluded from future NHR@FAU events. Please also take note of the course prerequisites specified below.

Abstract

This advanced 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.

Agenda
Day 1:

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

Day 2:

Class Design (I)

  • Compiler Generated Functions
  • Copy Elision
  • Object Lifetimes
  • RAII
  • Move Semantics
Day 3:

Class Design (II)

  • Proper Handling of Member Data
  • Maintainability of 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
Course goals

After the course, the participants…

  • will have gained knowledge about fundamental C++ programming concepts and idioms
  • will benefit from both object-oriented and functional programming
  • will have a detailed understanding of template-based programming
  • will be able to properly design classes and class interfaces
  • will avoid the usual pitfalls in the context of inheritance
  • will comprehend the advantages of value-based design
  • will understand the virtue of clean code.
Prerequisites
  • 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.
  • It is also beneficial to know the most common classes from the standard library (e.g. std::vector, std::unique_ptr, … ).
  • For the programming tasks, it is expect that all participants have a working C++ environment at hand. All operating systems (Windows, Linux, MacOS, …), all IDEs or editors (Visual Studio, CLion, emacs, vi, …), and all compilers (GCC, Clang, MSVC, …) capable of at least C++14 can be used.
Registration

You can register at the RRZE Schulungsportal using the following link:

https://www.kurse.rrze.fau.de/tca/courseSignup/register/28775