Advanced C++ with Focus on Software Engineering

Date: Wednesday, November 20 - Friday, November 22, 2019,  9:00 - 17:00
Location: LRZ Building, Garching/Munich, Boltzmannstr. 1, Kursraum 2
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 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. 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, and maintainable C++ code. The following topics will be covered: 

Day 1 schedule:
  • Concepts and the STL
  • Overview of the STL
  • Proper use of the STL
    • Proper use of algorithms
    • Proper use of containers
Day 2 schedule:
  • Class Design
  • Compiler Generated Functions
  • Move Semantics
  • Return Values and Parameters
  • Member Data
  • Member Functions
  • Visibility vs. Accessibility
Day 3 schedule:
  • Robust Code
  • Object Lifetimes
  • RAII
  • Proper Use of Dynamic Polymorphism
  • Motivation
  • Classical Design Patterns Revisited
  • Public Inheritance
  • Surprises in Object Hierarchies


Contents are subject to modifications...

Gained Skills: After this course, participants ...
  • ... will have a detailed understanding of the essential OO design principles
  • ... will have gained knowledge about fundamental C++ programming concepts and idioms
  • ... will be able to properly design classes and class interfaces
  • ... will know about the importance of exception safe programming
  • ... will avoid the usual pitfalls in the context of inheritance
  • ... will comprehend the advantages of non-intrusive 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). Solid base on C++ and at least one year of experience with the language is needed.
  • Participants have to bring their own laptop for the hands on sessions.
Language: English
Teacher: Klaus Iglberger (External)
Assitants: Carmen Navarrete (LRZ), Martin Ohlerich (LRZ)
Registration: Via the LRZ registration form. Please choose course HCPA1W19 (not available yet).