PV264 Advanced Programming in C++

Fakulta informatiky
jaro 2019
Rozsah
2/2/0. 4 kr. (plus ukončení). Ukončení: k.
Vyučující
RNDr. Nikola Beneš, Ph.D. (přednášející)
RNDr. Vladimír Štill, Ph.D. (cvičící)
RNDr. Jan Mrázek (cvičící)
Mgr. Lukáš Korenčik (cvičící)
Mgr. Adam Matoušek (pomocník)
Garance
doc. RNDr. Eva Hladká, 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
Rozvrh
Út 19. 2. až Út 14. 5. Út 16:00–17:50 D3
  • Rozvrh seminárních/paralelních skupin:
PV264/01: Čt 21. 2. až Čt 16. 5. Čt 16:00–17:50 B130, N. Beneš, L. Korenčik
PV264/02: St 16:00–17:50 B130, L. Korenčik, V. Štill
Předpoklady
PB161 Programování v jazyce C++ && ( (! PB173 Vývoj aplikací v C/C++ ) || SOUHLAS )
The course is not open for students that have taken the Advanced C++ seminar group of PB173.
Omezení zápisu do předmětu
Předmět je otevřen studentům libovolného oboru.
Cíle předmětu
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++14 standard
  • 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
  • Future of C++ (C++17, proposed concepts)
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 homeworks, one group project in the second half of the semester (groups of up to three students), project presentation.
Vyučovací jazyk
Angličtina
Informace učitele
Recommended reference guide: cppreference.com
Další komentáře
Studijní materiály
Předmět je vyučován každoročně.
Předmět je zařazen také v obdobích jaro 2017, jaro 2018, podzim 2020, podzim 2023.