Advanced Programming in C++

Course Goal

The goal is to teach programming in modern C++ (as defined in the ISO C++14 and possibly ISO C++17 standards), including advanced topics such as move semantics, generic programming and metaprogramming using templates, functional programming, parallel programming using threads, …

The officially supported compiler is clang. For more details about the usage of clang on the school computers and the recommended analysis tools, see the Tools page.

The main C++ reference source is the C++ reference web page.


There will be two homework assignments in the first half of the semester. The homework solution will not be awarded points, the evaluation is pass/fail only. Each homework assignment may be submitted multiple times. For more details about the submission procedure, see the Homework page. (Currently under reconstruction.)


In the second half of the semester, you will work on a group project. The project includes a checkpoint, a presentation talk, and two code reviews (one at checkpoint time, one at the end of semestr) of another group’s project. The expected group size is 2–3 students. You may choose from a list of suggested topics. The projects will be awarded at most 6 points, distributed as follows:

At most three points can be deduced from this total for the following reasons:

To pass the course, every student has to get at least 4 points. If the project is awarded less that the maximal number of points, the group may rework their project and resubmit it during the exam period after the semester. For more details, see the Project page.