Date: | Wednesday, June 12 - Friday, June 14, 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:- 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?
Day 2 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
Day 3 schedule:- Dependency-Breaking Techniques
- Non-Intrusive Design
- C++11/14 Update
- Kernel development
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 HCPA1S19. |
---|