Overview

This advanced C++ training is a course on object-oriented (OO) software design with the C++ programming language. The focus of the training are the essential OO and 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 will not address special areas and applications of C++, such as for instance Template Meta Programming (TMP), or the quirks and curiosities of the C++ language. It rather teaches guidelines to develop mature, robust, maintainable, and efficient C++ code.

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 non-intrusive design

understand the virtue of clean code

Contents

Program

local registration (8:30 - 9:00)

1st day course schedule (9:00 - 17:30)

Essential Object-Oriented Design Principles

The core of object-oriented programming

The SOLID principles

Concepts and the STL

Overview of the STL

Proper use of the STL

2nd day schedule (9:00 - 17:30)

Class Design

Proper Handling of Member Data

Proper Interface Design

Compiler Generated Functions

Move Semantics

Proper Design of Polymorphic Interfaces

Const Correctness

Visibility vs. Accessibility

3rd day schedule (9:00 - 17:30)

Robust Code

Error Propagation

Exception Safety

RAII

Handling Legacy Code

Proper Use of Dynamic Polymorphism

Non-public Inheritance

Public Inheritance

Dependency Breaking Techniques

Breaking Include Dependencies

Classical Design Patterns Revisited

4th day schedule (9:00 - 16:30)

Non-Intrusive Design

Kernel development with C++

Choice of the proper data structures

Loop unrolling

Blocking

SIMD vectorization

Prerequisites

Prerequisites

Course participants should have basic UNIX/Linux knowledge (login with secure shell, shell commands, simple scripts, editor vi or emacs). Solid base on C++ and at least one year of experience with the language is needed.

Teacher

Handouts

Registration

Deadline

for registration is Feb. 26, 2017 (extended deadline).Late registrations after the deadline are still possible but maybe with reduced quality of the handouts.

Fee

Fee

Students without Diploma/Master: 35 EUR. Students with Diploma/Master (PhD students) at German universities: 75 EUR. Members of German universities and public research institutes: 75 EUR.Members of universities and public research institutes within EU or PRACE member countries: 150 EUR. Members of other universities and public research institutes: 300 EUR. Others: 780 EUR. (includes coffee breaks)