Lecturer(s)
|
-
Dynybyl Rudolf, Ing.
-
Demko Jan, doc. Ing. Ph.D.
|
Course content
|
1. Basic concepts of modern C++, coding standard, std::array, std::vector 2. Memory representation of data types, STL, iterators, RAII, smart pointers 3. Objects, virtual methods, const, constexpr and final, function and operator overloading 4. Lambda functions, exceptions, std:: algorithms, random number generators 5. Multiple inheritance, working with types, streams (files and other) 6. Copy and move semantics, templates 7. Variadic templates, dynamic vs. static polymorphism, CRTP 8. Threads in C++ and basic synchronization primitives, parallel algorithms 9. Concepts, coroutines, modules 10. Debugging the code 11. Program profiling, memory leaks 12. Compiling selected high-level constructs (e.g.; devirtualization), optimalization, clean abstraction 13. Selected support libraries and tools of C++ (Boost, Qt, CMake)
|
Learning activities and teaching methods
|
- Individual project (40)
- 38 hours per semester
- Contact hours
- 39 hours per semester
- Preparation for an examination (30-60)
- 30 hours per semester
|
prerequisite |
---|
Knowledge |
---|
To know the C programming language and how to use it, and at least one object-oriented programming language. |
To understand and be able to use theoretical informatics knowledge (e.g.; computational complexity) |
To know the basic principles of CPU operation and division of address space (memory allocation, stack, heap) |
Skills |
---|
To be able to analyze and decompose a given problem, propose algorithmic solution and implement it. |
Competences |
---|
N/A |
N/A |
N/A |
N/A |
learning outcomes |
---|
Knowledge |
---|
To know basic and advanced C++ language features including the ones from modern standards. |
To know the principles of modern compiled programming languages and their relation to effectivity and safety. |
To know how C++ relates to other programming languages. |
Skills |
---|
To be able to use C++ to implement small and medium-sized software projects with maximum utilization of language features to increase code safety and effectivity of a resulting program. |
To know how to analyze and evaluate quality of own program using available tools. |
To be able to decide, whether to use C++ programming language to solve given problem or not. |
Competences |
---|
N/A |
teaching methods |
---|
Knowledge |
---|
Lecture with visual aids |
Lecture supplemented with a discussion |
Practicum |
Task-based study method |
Collaborative instruction |
Self-study of literature |
Individual study |
Discussion |
Skills |
---|
Lecture |
Lecture supplemented with a discussion |
Practicum |
Lecture with visual aids |
Task-based study method |
Collaborative instruction |
Self-study of literature |
Discussion |
Competences |
---|
Self-study of literature |
assessment methods |
---|
Knowledge |
---|
Practical exam |
Skills demonstration during practicum |
Continuous assessment |
Skills |
---|
Practical exam |
Skills demonstration during practicum |
Continuous assessment |
Competences |
---|
Continuous assessment |
Recommended literature
|
-
Meyers Scott. Effective Modern C++ 42 Specific Ways to Improve Your Use of C++11 and C++14. O'Reilly Media, 2015. ISBN 978-1491903995.
-
Stroustrup Bjarne. A Tour of C++ (C++ In-Depth). Addison Wesley, 2013.
|