NPRG051 - Advanced Programming in C++

Course format

In English, there is only one event in the weekly timetable, assuming the role of lectures and tutorials as needed (not necessarily regularly as suggested in the SIS schedule).

Grading & Exam

Credit is awarded for timely and correct completion of homework assignments assigned during the semester.

All the homework assignments must be written solely by the student who submits them, independently and without the use of AI tools. You may discuss the design and associated problems with your peers; however, the code must be written only by you and you shall not share the code with anyone.

Obtaining credit is a condition for admission to the exam.

The exam consists of a practical test and a subsequent oral discussion of the practical test, the homework assignments, and related areas. The oral part of the exam may be omitted if the results of the practical part clearly determine the outcome of the exam.

Preliminary timetable, slides, and online materials

Tomáš Faltín     Miroslav Kratochvíl
The timetable is preliminary and approximate.
Thu
15:40
Lectures / Tutorials / Topics / ConsultationsSlidesExternal / additional resources
Feb 19 Introduction Learning C++
Concepts requirements, concepts
Feb 26 Templates lvalue/rvalue, perfect forwarding variadic templates
universal references, forwarding
Mar 5 Templates working with references and values
Templates standard library traits and tags
Mar 12 Metaprogramming in C++ iteration through variadic lists
Mar 19 metaprogramming
Mar 26 Type deduction auto, structure bindings, deduction rules structured bindings   type deduction   C++20
Apr 2 Type deduction deduction rules, CTAD, uniform initialization CTAD   initialization  
Apr 9 Type system type compatibility, type erasure, any, variant, visit, overload type erasure   overload   variant
Apr 16 Libraries ranges, span, ud literals, ..., C++23 & beyond ranges   chrono  
Apr 23 Parallel programming C++11 concurrency
parallel algorithms, tasks, concurrency, parallel algorithms again
C++11 parallelism, C++11 concurrency again
Apr 30 Parallel programming some scary reading: BAD, UGLY, and GOOD
May 7 Parallel programming
May 14 Networking, databases, AIO
Coroutines


Exploring C++20 Coroutines, Coroutines introduction, C++20 coroutines tutorial
May 21
Additional slides
Exceptions
Extended versions of winter-term lectures
(NPRG041)
declarations-definitions
templates
Deeper examples related to summer-term lectures tuple
Very advanced topics mixin
Metaprogramming in C++ sfinae
Modules modules