NPRG051 - Advanced Programming in C++
|
In English, there is only one event in the weekly timetable, categorized as "tutorials" for technical reasons.
For enrollment, select the Czech lecture + the English tutorials; however, you are not supposed to visit the Friday lectures.
Each week, the English event will be used as a lecture, a consultation, or dedicated to the homework assignments, according to the schedule below.
The yellow parts are well supported by external resources and left to self-study, followed by consultations.
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.
David Bednárek |
Thu 15:40 | Lectures / Tutorials / Topics / Consultations | Slides | External / additional resources | ||||
---|---|---|---|---|---|---|---|
Feb 20 | Introduction | ![]() |
![]() |
Learning C++ | |||
Concepts | requirements, concepts | ![]() |
![]() |
||||
Feb 27 | Templates | lvalue/rvalue, perfect forwarding | ![]() |
![]() |
variadic templates universal references, forwarding |
||
Mar 6 | Templates | working with references and values | ![]() |
![]() |
|||
Templates | standard library traits and tags | ![]() |
![]() |
||||
Mar 13 | Assignment #1 | ||||||
Self-study | Metaprogramming in C++ | iteration through variadic lists | ![]() |
![]() |
|||
metaprogramming | ![]() |
![]() |
|||||
Type deduction | auto, structure bindings, deduction rules | ![]() |
structured bindings type deduction C++20 | ||||
Type deduction | deduction rules, CTAD, uniform initialization | ![]() |
CTAD initialization | ||||
Type system | type compatibility, type erasure, any, variant, visit, overload | ![]() |
type erasure overload variant | ||||
Libraries | ranges, span, ud literals, ..., C++23 & beyond | ![]() |
ranges chrono | ||||
Parallel programming |
![]() |
C++11 concurrency parallel algorithms, tasks, concurrency, parallel algorithms again C++11 parallelism, C++11 concurrency again |
|||||
Parallel programming | ![]() |
some scary reading: BAD, UGLY, and GOOD | |||||
Parallel programming |
![]() |
||||||
Networking, databases, AIO Coroutines |
![]() ![]() |
![]() ![]() |
Exploring C++20 Coroutines, Coroutines introduction, C++20 coroutines tutorial | ||||
Mar 20 | Consultations (S203) | ||||||
Mar 27 | Consultations (S203) | ||||||
Apr 3 | Consultations (S203) | ||||||
Apr 10 | Feedback #1 + Assignment #2 | ![]() |
![]() |
||||
Apr 17 | Consultations (S203) | ||||||
Apr 24 | Consultations (S203) | ||||||
May 1 | Holiday | ||||||
May 8 | Holiday | ||||||
May 15 | Feedback #2 + Assignment #3 | ||||||
May 22 | Consultations (S203) | ||||||
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 |