NPRG051 - Pokročilé programování v C++

Formát předmětu

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

Známky, zápočty a zkouška

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.

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.

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.

Předběžný plán přednášky, slajdy a další materiály

David Bednárek     Tomáš Faltín     Filip Zavoral
Středa
15:40
PřednáškySlajdyDalší 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, ...
high-level primitives: futures, executors, ...
some scary reading: BAD, UGLY, and GOOD
Parallel programming atomics, ...
Networking, databases, AIO
Coroutines


Exploring C++20 Coroutines, Coroutines introduction, C++20 coroutines tutorial
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