Advanced Programming in C++

Course Goal

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

The officially supported compiler is GCC 10. For more details about the usage of GCC (or its alternatives) on the school computers and on your system and about the recommended static analysis tools, see the Tools page.

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

Online Teaching in Autumn 2020

Due to the COVID-19 pandemic we are not allowed to perform classical in-classroom teaching in the autumn 2020 semester. Therefore this course will be taught purely online.

Sadly, the load of teaching online is generally higher than in-classroom teaching for both teachers and students. In PV264, we believe the load for students will be comparable as the seminars were mostly based on individual work anyway. However, due to the increased load on teachers over all our courses, we expect we will have somewhat less time for PV264 than in previous years (the massive courses for bachelor-level students are our priority). This might have some negative impact on our response times and on the amount of C++20 topics covered in this run of the course.

Homework

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.)

Projects

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.