NPRG051 - Advanced Programming in C++
|
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).
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.
| Tomáš Faltín | Miroslav Kratochvíl |
| Thu 15:40 | Lectures / Tutorials / Topics / Consultations | Slides | External / 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 | ||||||