Navigation

Online Course: Advanced C++ with Focus on Software Engineering

It is our pleasure to announce an online retake of the successful short course “Advanced C++ with Focus on Software Engineering.”

The course is made possible via the friendly support by KONWIHR, the “Competence Network for Scientific High Performance Computing in Bavaria.” Please see below for an abstract and the agenda.

Date:  June 20, June 27, and July 4, 2020, 09:00-17:00
Participation fee (protective charge): 25 €
Technology: Zoom event
Course language: English

The unusual course dates (three successive Saturdays) were chosen to not collide with any regular teaching activities during the summer term. In order to prevent no-shows, a protective charge of 25 € applies.
In case of insufficient interest (too few registered participants), the course will be canceled. To register, please use the registration link on the course website:

https://www.kurse.rrze.fau.de/tca/courseOverview/show/2563?pageid=2001

It is necessary to set up an account with the “RRZE Schulungszentrum” in order to process your payment. A description to help you with this is available here:

EN:
https://www.anleitungen.rrze.fau.de/files/2020/05/how-to-register.pdf

DE:
https://www.anleitungen.rrze.fau.de/files/2020/05/anmelde-anleitung.pdf

Should you have difficulties with this process, please let us know.

Teacher: Dr. Klaus Iglberger

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.

Course prerequisites:

Course participants should have basic UNIX/Linux knowledge (login with secure shell, shell commands, simple scripts, editor vi or emacs). A solid base on C++ and at least one year of experience with the language is needed. This includes a good familiarity with the syntax of C++, experience with templates and inheritance hierarchies.

Agenda:

Day 1: Concepts and the STL

STL Algorithms
STL Containers
constexpr

Day 2: Class Design

Compiler Generated Functions
Object Lifetimes
RAII
Move Semantics
Return Values and Parameters
Data Members
Applied Class Design
Visibility vs. Accessibility

Day 3: Dynamic Polymorphism

Motivation
Value Semantics
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