Online course: Modern C++ Software Design, 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