Oct 5 – 7, 2022
None
Europe/Berlin timezone

Scientific Program

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

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.