Advanced C++ with Focus on Software Engineering

Enterprises & SME Research & Science
Advanced C++ with Focus on Software Engineering

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

Program
Program

1st day 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.

Language
Language

The course language is German. The slides are in English.

Teacher
Teacher

Klaus Iglberger (External)

Handouts
Handouts

Each participant will get a paper copy of all slides.

Further course material can be found here (for participants only).

Registration

The course is full. Therefore, registration is closed.
You can still register for the waiting queue via the online registration form.
Please take the automated confirmation only for a reply that you are on the waiting queue.

Deadline
Deadline

for registration is Nov. 13, 2016 (extended deadline).

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)

Organization

Travel Information and Accommodation

see our How to find us page.

Contact

Andreas Ruopp phone 0711 685 87259, ruopp@hlrs.de
Rolf Rabenseifner phone 0711 685 65530, rabenseifner@hlrs.de
Joerg Hertzer phone 0711 685 65932, hertzer@hlrs.de

Shortcut-URL & Course Number

http://www.hlrs.de/training/2016/CPP2