The course is offered to students of any study field.
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.
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)
MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014. xv, 315. ISBN 9781491903995. info
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).
Two programming homeworks, one group project in the second half of the semester (groups of up to three students), project presentation.
Language of instruction
Further comments (probably available only in Czech)
The course is taught annually.
The course is taught: every week.