C++ is widely used in many contexts. This training focusses on software engineering aspects of C++ such as building software, linting, testing libraries and applications, and so on. Also, best practices are discussed such as design patterns.
Learning outcomes
When you complete this training you will be able to
- assess code quality;
- build software using CMake;
- perform static code analysis and interprete the results;
- write unit tests using Catch2;
- write functional tests using CTest;
- use C++ package managagers such as Conan or vcpkg;
- use some design patterns that are useful in scientific programming;
- program in an efficient functional style using STL algorithms and rangs..
Schedule
Total duration: 4 hours
Subject | Duration |
---|---|
introduction and motivation | 5 min. |
coding best practices | 20 min. |
exception handling | 10 min. |
basic usage of CMake | 20 min. |
linking to libraries using CMake | 10 min. |
building OpenMP and MPI applications using CMake | 5 min. |
hands-on session | 20 min. |
coffee break | 10 min. |
static code analysis using Clang-tidy/cppchekc | 20 min. |
writing unit tests with Catch2 | 20 min. |
behavior-driven development with Catch2 | 10 min. |
hands-on session | 20 min. |
package management with Conan/vcpkg | 10 min. |
design pattern examples | 20 min. |
functional programming using ranges | 15 min. |
hands-on session | 20 min. |
wrap up | 5 min. |
Training materials
Slides and source code are available in the GitHub repository, as well as example code and hands-on material.
Target audience
This training is for you if you need to use the C++ programming language for production applications.
Prerequisites
You will need experience programming in C++, This is not a training that teaches you how to program in C++. You also need to be familiar with the Bash command line.
Trainer(s)
- Geert Jan Bex (geertjan.bex@uhasselt.be)