After successful completion of the course, students are able to:... inspect modern C++ code.... understand the core ideas guiding modern software development... understand the language features available in C++17 and how to apply them.... select appropriate functionality from the standard library to solve common problems.... apply C++ to solve a problem in the scope of a project work.... generate interfaces between C++ code and other languages (python).
The aim of this lecture is to understand the core principles of modern C++ and how to use them. This lecture will start at the very beginning ("Hello World!") and guide students to working on highly automated projects with several contributors, applying modern C++ to avoid common pitfalls encountered in large software projects.
Language features:- Value Categories- Value and Reference Semantics- Functions- User-defined types (Classes)- Template Metaprogramming- Function objects (lambda functions)
Features of the Standard library:- Data containers- Smart pointers- Iterators- Algorithms
From C++ code to an executable program:- Compiling- Linking- Operating System libraries
Programming tools and frameworks covered in the course:- Linux command line (bash)- Version Control System (git)- Build Systems (GNU Make, CMake)- Testing Frameworks (CTest)- Compiler toolchains (GCC, LLVM)
The lecture will be held online. There are small weekly assignments which need to be handed-in. Finally, a self-assigned C++ project needs to be handed-in together with a written report.
The final grade is based on the hand-in discussions (40%) from the weekly assignments and the final project (60%).