NPRG051 - Advanced Programming in C++

David Bednárek     Jakub Yaghob     Filip Zavoral

Timetable and slides

Toto je předběžný harmonogram přednášek a cvičení. Obsah přednášek i slajdy budou během semestru aktualizovány.
Posluchárna rozvržená pro cvičení bude využita pro zadávání a vyhodnocení tří domácích úkolů zadaných v průběhu semestru - viz světle modré řádky.

DateLectureTopicsSlidesExternal resources (en)
16.2. Introduction
Templates templates, concepts
23.2. variadic templates, perfect forwarding variadic templates
universal references, forwarding
2.3. Introduction to Metaprogramming Working with references and values
9.3. Policy clases, traits
16.3. Type deduction auto, structure bindings, range-based for, type deduction structured bindings   auto decltype   C++20
23.3. deduction rules, CTAD, uniform initialization, modules, attributes type deduction   CTAD   initialization   modules  
30.3. Type system type compatibility, type erasure, variant, any type erasure   overload   variant
6.4. Libraries string_view, span, ud literals, chrono, filesystem, format, ranges, C++23 & beyond chrono   ranges  
6.4. Assignment #1
13.4. Parallel programming C++11 concurrency
parallel algorithms, tasks, concurrency, parallel algorithms again
C++11 parallelism, C++11 concurrency again
20.4. Deadline #1
20.4. Parallel programming some scary reading: BAD, UGLY, and GOOD
27.4. Parallel programming
27.4. Feedback #1
Assignment #2
4.5. Networking, databases, AIO
Coroutines


Exploring C++20 Coroutines, Coroutines introduction, C++20 coroutines tutorial
11.5. Deadline #2
11.5. Rektorský den
18.5. Metaprogramming in C++, SFINAE metaprogramming
sfinae
18.5. Feedback #2
Assignment #3
8.6. Deadline #3
Additional slides
Extended versions of winter-term lectures
(NPRG041)
declarations-definitions
exceptions
Deeper examples related to summer-term lectures tuple
Very advanced topics mixin
Modules, interoperability Modules modules
interoperability