Aspects of modern C++ for HPC
Content
Keywords: Interface design, SOLID principles, Move semantics, RAII, Smart pointers, STL containers, Iterators, STL algorithms, Lambda expressions
Starting with the C++11 standard, the way to program C++ applications has evolved dramatically, enabling to write more maintainable and performant software for HPC. Researchers and code developers at univerities often cannot afford to explore the most recent developments of the C++ programming language.
In this course we provide a primer to HPC-related aspects of modern C++ such as ...
- ... modern class design (including move semantics, RAII, and smart pointers),
- ... leveraging recent advances of the STL, in particular algorithms.
Additionally, we will discuss good practices from modern software design such as the SOLID principles.
We expect participants to be familiar with basic C++ (Writing classes, syntax, manual memory management), build systems such as GNU Make, and version control using Git.
Agenda
- 09:00-12:00 Morning session
- Classes
- What are interfaces?
- SOLID principles (quick overview)
- Ctors, special member functions
- Move semantics, RAII
- Inheritance
- Back to SOLID: In-depth
- Ownership semantics: Smart pointers
- Classes
- 12:00-13:00 Lunch Break
- 13:00-17:00 Afternoon session
- STL containers
- Iterators
- Range-based for loops
- STL algorithms
- Lambda expressions
- Templates
Further breaks as required
Trainer(s)
- Dr.Marcel Giar (HKHLR)
- Dr. Christian Iwainsky (HKHLR)