2015-11-02 Advanced C++ with Focus on Software Engineering (HCPA1W15)

Date:November 2-4, 2015 9:00 - 17:00
Location:LRZ Building, Garching/Munich, Boltzmannstr. 1
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: 

Monday schedule:
  • 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
  • Class Design
    • Know what your compiler does for you
    • Inside/Outside: What should (not) be inside a class?

Tuesday schedule:
  • Class Design (cont.)
    • Const Correctness
    • Interface design
    • Visibility vs. Accessibility
  • Robust Code
    • Error propagation
    • Exception Safety
    • RAII
    • Handling Legacy Code
  • Proper Use of Dynamic Inheritance
    • Non-public inheritance
    • Public inheritance

Wednesday schedule:
  • Dependency-Breaking Techniques
  • Non-Intrusive Design
  • C++11/14 Update

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
PrerequisitesCourse 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:English
Teacher:Klaus Iglberger (External)
AssitantsCarmen Navarrete (LRZ), Anupam Karmakar (LRZ), David Brayford (LRZ), Carla Guillen (LRZ)
Registration:Via the LRZ registration form. Please choose course HCPA1W15.