Advanced C++
Code | Completion | Credits | Range | Language |
---|---|---|---|---|
18PCP | Z,ZK | 4 | 2P+2C | Czech |
- Course guarantor:
- Miroslav Virius
- Lecturer:
- Miroslav Virius
- Tutor:
- Miroslav Virius
- Supervisor:
- Department of Software Engineering
- Synopsis:
-
This lecture covers the virtual inheritance,variadic templetes, template metaprogramming, template libraries design and implementation, tools for data type processing in compile time and for the advanced diagnostic of the templates, concepts, coroutines, modules, ranges, views and other tools introduced in C++ 20, application of the multithreading (execution parallelization).
- Requirements:
-
Programming in C++ 1, 2.
- Syllabus of lectures:
-
1 Moving instances
2. Virtual inheritance
a. Syntactic rules, importance
b. Instance structure
c. Example
3. Template metaprogramming
a. Computational completeness of the templates
b. Type to type mapping, value to type mapping
c. Branching, loop substitution
d. Application, examples
4. Variadic templates (variable argument number templates) I.
a. Syntactic rules, parameter pack
b. parameter pack expansion
c. Examples
5. Variadic templates II.
a. Template metaprogramming with variadic templates
b. Diagnostics tools
c. Examples
6. Concepts
a. Concept derclaration
b. Using concept in metaprogramming
c. Examples
7. Modules
a. Module declaration
8. Ranges, views
a. Basic tools
b. Examples
9. Coroutines
a. Basic tools
b. Coroutine implementation
c. Examples
10. Other advanced tools in C++20 and C++23
a. Structure binding declaration
b. Constexpr functions, consteval functions
c. Generic lambda expressions
11. Multithreading I
a. Thread and its states, std::thread class
b. Basic operations with threads
c. Data access sybchronization
d. Examples
12. Multithreading II
a. Memory model
b. Atomic types
c. Asynchronous processing
d. Examples
13. Repetition, examples
- Syllabus of tutorials:
-
The same as for the lecture
- Study Objective:
-
The lecture provides a complex view on advanced tools in the C++ programming language and on the best practices for their application in programming. The lecture covers tools that are part of the C++ standard, but are not covered by the basic course. These tools are necessary for the development of advanced C++ libraries aimed not only to the effectivity, but also to the design and architecture quality.
- Study materials:
-
1.Stroustrup, Bjarne: The C++ Programming Language, 4th Edition. Addison-Wesley 2013. ISBN 978-0321563842
2.www.cppreference.com
Media and tools
?Computer with operating system, monitor, keyboard and mouse
?Integrated development environment (IDE) with C++ compiler supporting the ISO 14882:2011 standard actualized according to C++20 (or newer one)
- Note:
- Time-table for winter semester 2024/2025:
- Time-table is not available yet
- Time-table for summer semester 2024/2025:
- Time-table is not available yet
- The course is a part of the following study plans:
-
- Aplikace informatiky v přírodních vědách (elective course)
- Matematické inženýrství (elective course)
- Kvantové technologie (elective course)