2020-06-20 ONLINE: Advanced C++ with Focus on Software Engineering

Date:Saturday, June 20, June 27, and July 4, 2020, 09:00-17:00 CEST
Location:ONLINE via ZOOM
Contents: "There is no point in developing software unless you care about it doing it well." (Andrew Hunt, David Thomas: The Pragmatic Programmer)

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.

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


Contents are subject to modifications.

The course is made possible via the friendly support by KONWIHR, the "Competence Network for Scientific High Performance Computing in Bavaria".

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.

Gained Skills: After this course, 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:

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.

Language:English
Teacher:Klaus Iglberger (External)
Registration:

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