Course: Programming in C++

» List of faculties » FAV » KIV
Course title Programming in C++
Course code KIV/CPP
Organizational form of instruction Lecture + Tutorial
Level of course Bachelor
Year of study not specified
Semester Winter
Number of ECTS credits 4
Language of instruction Czech
Status of course Compulsory-optional
Form of instruction Face-to-face
Work placements This is not an internship
Recommended optional programme components None
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.


Study plans that include the course
Faculty Study plan (Version) Category of Branch/Specialization Recommended year of study Recommended semester