NPRG051 - Pokročilé programování v C++
|
Česká verze přednášek je vedena obvyklým způsobem, během semestru se vystřídají tři přednášející.
Cvičení se budou konat v sudých týdnech, ve 4./8./12. týdnu budou zadány domácí úkoly.
Zápočet je udělován za včasné a správné vypracování domácích úkolů zadávaných během semestru (at least 5 points from each assignment, and at least 20 points in total).
Všechny domácí úkoly musí psát výhradně student, který je odevzdává, samostatně a bez použití nástrojů AI. Můžete diskutovat o designu a souvisejících problémech se svými kolegy; kód však musíte napsat samostatně a nesmíte jej s nikým sdílet.
Splnění podmínek pro získání zápočtu je podmínkou pro připuštění ke zkoušce.
Zkouška se skládá z praktického testu a následné ústní diskuse o praktickém testu, domácích úkolech a souvisejících oblastech. Ústní část zkoušky může být vypuštěna v případě jasného výsledku praktické části.
| David Bednárek | Tomáš Faltín | Filip Zavoral |
| Středa 15:40 | Přednášky | Slajdy | Další materiály | |||
|---|---|---|---|---|---|---|
| 18.2.-11.3. + 20.5. | Introduction | Learning C++ | ||||
| Exceptions | ||||||
| Utilities | tuple | |||||
| iteration through variadic lists | ||||||
| Concepts | requirements, concepts | |||||
| Templates | standard library traits and tags | |||||
| lvalue/rvalue, perfect forwarding |
variadic templates universal references, forwarding |
|||||
| Metaprogramming in C++ | metaprogramming | |||||
| tagged indexes | ||||||
| 18.3.-8.4. | 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 | ||||
| 15.4.-6.5. | Parallel programming | introduction, race condition, std::thread, std::jthread |
|
C++11 concurrency parallel algorithms, tasks, concurrency, parallel algorithms again C++11 parallelism, C++11 concurrency again |
||
| Parallel programming | synchronization primitives: mutex, condition variable, ... | some scary reading: BAD, UGLY, and GOOD | ||||
| Parallel programming | high-level primitives: futures, parallel algorithms, memory model (quick), atomics | |||||
| Parallel programming | atomics, ABA problem, coroutines |
|
|
Exploring C++20 Coroutines, Coroutines introduction, C++20 coroutines tutorial | ||
| 13.5. | ⚠️Rektorský den - výuka zrušena | |||||
| 20.5. | Advanced topics | Tagged indices |
|
|
||
| Practicals | HW1 Feedback, coroutines |
|
|
Simple fibonacci,
Await example,
New thread in coroutine, Fibonnaci with own generator, Alphabet generator, std::future as coroutine type |
||
| Doplňkové slajdy | ||||||
| Related winter-term lectures (NPRG041) | std::variant. | |||||
| Extended versions of winter-term lectures (NPRG041) |
declarations-definitions | |||||
| templates | ||||||
| Design patterns | Visitor. | |||||
| Very advanced topics | mixin | |||||
| Metaprogramming in C++ | sfinae | |||||
| Modules | modules | |||||