PV264 Advanced Programming in C++

Fakulta informatiky
podzim 2021

Předmět se v období podzim 2021 nevypisuje.

Rozsah
2/2/0. 3 kr. (plus ukončení). Ukončení: k.
Vyučující
RNDr. Nikola Beneš, Ph.D. (přednášející)
Mgr. Lukáš Korenčik (cvičící)
RNDr. Jan Mrázek (cvičící)
RNDr. Vladimír Štill, Ph.D. (cvičící)
Mgr. Adam Matoušek (pomocník)
Garance
RNDr. Nikola Beneš, Ph.D.
Katedra počítačových systémů a komunikací – Fakulta informatiky
Dodavatelské pracoviště: Katedra počítačových systémů a komunikací – Fakulta informatiky
Předpoklady
PB161 Programování v jazyce C++
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Mateřské obory/plány
Cíle předmětu
The goal of this course is to expose students to advanced usage of the C++ programming language.
Výstupy z učení
At the end of the course the students should be able to: use the C++ language (in the newest standard) on an advanced level; use various programming techniques, notably generic, functional and parallel programming; understand the principles of memory and resource management in C++; debug, test and profile C++ programs using appropriate tools; be able to use modern C++ idioms and design patterns.
Osnova
  • Introduction to the ISO C++17 and ISO C++20 standards
  • Build process; Debugging and testing
  • Functional programming in C++, lambda functions, algorithms
  • Move semantics: rvalue references, forwarding
  • Resource management, smart pointers, the RAII idiom
  • Profiling and optimizations
  • Generic programming and meta-programming using templates (variadic templates, SFINAE, ...)
  • Modern C++ idioms (CRTP, tags)
  • Parallel programming in modern C++: threads, atomic, introduction to lock-free data structures
  • Concepts
  • The future of the standard library: Ranges
Literatura
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Výukové metody
Theoretical lectures combined with practical exercises and programming homework; group project in the second half of the semester. The lectures are going to be given in English; some of the practical seminars will be taught in Czech (depends on the students' preferences).
Metody hodnocení
Two programming homework assignments, one group project in the second half of the semester (groups of up to three students), project presentation, peer review.
Vyučovací jazyk
Angličtina
Informace učitele
Recommended reference guide: cppreference.com
Další komentáře
Předmět je vyučován každoročně.
Výuka probíhá každý týden.
Předmět je zařazen také v obdobích jaro 2017, jaro 2018, jaro 2019, podzim 2020, podzim 2023.