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 podle potřeby, zejména v návaznosti na zadávání a vyhodnocování domácích úkolů

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
Introduction Learning C++
Exceptions
Concepts requirements, concepts
Templates lvalue/rvalue, perfect forwarding variadic templates
universal references, forwarding
Templates working with references and values
Templates standard library traits and tags
Metaprogramming in C++ iteration through variadic lists
metaprogramming
tagged indexes
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
Doplňkové slajdy
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