2018-02-28 Advanced C++ with Focus on Software Engineering @ RRZE (HCPA2W17)

Date:February 28 - March 2, 2018 9:00 - 17:00
Location:

FAU Erlangen-NĂĽrnberg
Computer Science Building
Martensstr. 3
91058 Erlangen

Room 02.135-113 (2nd floor)

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:

 1st day schedule (9:00 - 17:00)

  • 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:00)

  •  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:00)

  • 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
  • Non-Intrusive Design

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).

Participants are required to have a solid base on C++ and at least one year, better two years, of C++ experience. The course expects that all participants are familiar with the syntax of the language and have used inheritance and templates before. It assumes that the most common standard library components are familiar (for instance std::vector).

Language:English
Teacher:Klaus Iglberger (External)
Registration:Registration: via https://www.lrz.de/services/schulung/course-registration/course-registration.php. Please use the Course ID HCPA2W17. The number of participants is limited to 25. The course is free of charge for people from academia.