PV264 Seminar on programming in C++

Faculty of Informatics
Autumn 2023
Extent and Intensity
0/2/1. 3 credit(s) (plus extra credits for completion). Type of Completion: k (colloquium).
Teacher(s)
RNDr. Nikola Beneš, Ph.D. (lecturer)
Mgr. Adam Matoušek (lecturer)
RNDr. Petr Ročkai, Ph.D. (lecturer)
Bc. Jakub Šárník (seminar tutor)
Mgr. František Bráblík (assistant)
Ing. Oliver Šintaj (assistant)
Guaranteed by
RNDr. Nikola Beneš, Ph.D.
Department of Computer Systems and Communications – Faculty of Informatics
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics
Timetable of Seminar Groups
PV264/01: Tue 12:00–13:50 B130, N. Beneš, A. Matoušek, P. Ročkai, J. Šárník
PV264/02: Tue 18:00–19:50 B011, N. Beneš, A. Matoušek, P. Ročkai, J. Šárník
Prerequisites (in Czech)
PB161 C++ Programming
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
fields of study / plans the course is directly associated with
there are 39 fields of study the course is directly associated with, display
Course objectives
The course builds on top of the basic C++ programming course, PB161. The goal of this course is to familiarise students with some of the more advanced parts of modern C++, focusing mainly on generic programming and metaprogramming facilities, and to further develop their C++ programming skills by solving various practical exercises. Students with an interest in a broader scope of C++ topics might want to enrol in PV294 (both courses can also be studied simultaneously).
Learning outcomes
At the end of the course, the students should be able to: design and implement a variety of C++ programs on an intermediate level; understand and use the programming techniques of generic programming and metaprogramming supported by the newest ISO standards of C++; be able to read and maintain existing C++ code using these techniques.
Syllabus
  • Generic programming, templates, concepts. Metaprogramming, compile-time evaluation, useful idioms.
Literature
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Teaching methods
Seminars with practical exercises and programming homework. The primary language of communication in the seminars depends on the students' preferences. All course materials are in English.
Assessment methods
A scoring system based on homework, peer review, and activity during the seminars; final programming exam.
Language of instruction
English
Further comments (probably available only in Czech)
Study Materials
The course is taught annually.
Teacher's information
Recommended reference guide: cppreference.com
The course is also listed under the following terms Spring 2017, Spring 2018, Spring 2019, Autumn 2020.

PV264 Advanced Programming in C++

Faculty of Informatics
Autumn 2020
Extent and Intensity
2/2/0. 3 credit(s) (plus extra credits for completion). Type of Completion: k (colloquium).
Teacher(s)
RNDr. Nikola Beneš, Ph.D. (lecturer)
Mgr. Lukáš Korenčik (seminar tutor)
RNDr. Jan Mrázek (seminar tutor)
RNDr. Vladimír Štill, Ph.D. (seminar tutor)
Mgr. Adam Matoušek (assistant)
Guaranteed by
RNDr. Nikola Beneš, Ph.D.
Department of Computer Systems and Communications – Faculty of Informatics
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics
Timetable
Tue 12:00–13:50 A318
  • Timetable of Seminar Groups:
PV264/01: Tue 14:00–15:50 B130, L. Korenčik, J. Mrázek, V. Štill
PV264/02: Wed 16:00–17:50 B130, L. Korenčik, J. Mrázek, V. Štill
Prerequisites (in Czech)
PB161 C++ Programming
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
fields of study / plans the course is directly associated with
there are 37 fields of study the course is directly associated with, display
Course objectives
The goal of this course is to expose students to advanced usage of the C++ programming language.
Learning outcomes
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.
Syllabus
  • Introduction to the ISO C++17 and ISO C++20 standards
  • Build process; 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
  • Concepts
  • The future of the standard library: Ranges
Literature
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Teaching methods
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).
Assessment methods
Two programming homework assignments, one group project in the second half of the semester (groups of up to three students), project presentation, peer review.
Language of instruction
English
Further comments (probably available only in Czech)
Study Materials
The course is taught annually.
Teacher's information
Recommended reference guide: cppreference.com
The course is also listed under the following terms Spring 2017, Spring 2018, Spring 2019, Autumn 2023.

PV264 Advanced Programming in C++

Faculty of Informatics
Spring 2019
Extent and Intensity
2/2/0. 4 credit(s) (plus extra credits for completion). Type of Completion: k (colloquium).
Teacher(s)
RNDr. Nikola Beneš, Ph.D. (lecturer)
RNDr. Vladimír Štill, Ph.D. (seminar tutor)
RNDr. Jan Mrázek (seminar tutor)
Mgr. Lukáš Korenčik (seminar tutor)
Mgr. Adam Matoušek (assistant)
Guaranteed by
doc. RNDr. Eva Hladká, Ph.D.
Department of Computer Systems and Communications – Faculty of Informatics
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics
Timetable
Tue 19. 2. to Tue 14. 5. Tue 16:00–17:50 D3
  • Timetable of Seminar Groups:
PV264/01: Thu 21. 2. to Thu 16. 5. Thu 16:00–17:50 B130, N. Beneš, L. Korenčik
PV264/02: Wed 16:00–17:50 B130, L. Korenčik, V. Štill
Prerequisites
PB161 C++ Programming && ( (! PB173 Domain spec. devel. in C/C++ ) || SOUHLAS )
The course is not open for students that have taken the Advanced C++ seminar group of PB173.
Course Enrolment Limitations
The course is offered to students of any study field.
Course objectives
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.
Syllabus
  • 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)
Literature
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Teaching methods
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).
Assessment methods
Two programming homeworks, one group project in the second half of the semester (groups of up to three students), project presentation.
Language of instruction
English
Further comments (probably available only in Czech)
Study Materials
The course is taught annually.
The course is also listed under the following terms Spring 2017, Spring 2018, Autumn 2020, Autumn 2023.

PV264 Advanced Programming in C++

Faculty of Informatics
Spring 2018
Extent and Intensity
2/2/0. 4 credit(s) (plus extra credits for completion). Type of Completion: k (colloquium).
Teacher(s)
RNDr. Nikola Beneš, Ph.D. (lecturer)
RNDr. Jan Mrázek (seminar tutor)
RNDr. Vladimír Štill, Ph.D. (seminar tutor)
Guaranteed by
doc. RNDr. Eva Hladká, Ph.D.
Department of Computer Systems and Communications – Faculty of Informatics
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics
Timetable
Mon 16:00–17:50 D3
  • Timetable of Seminar Groups:
PV264/01: Wed 10:00–11:50 B130, N. Beneš, J. Mrázek, V. Štill
PV264/02: Tue 10:00–11:50 B130, N. Beneš, J. Mrázek, V. Štill
Prerequisites
PB161 C++ Programming && ( (! PB173 Domain spec. devel. in C/C++ ) || SOUHLAS )
The course is not open for students that have taken the Advanced C++ seminar group of PB173.
Course Enrolment Limitations
The course is offered to students of any study field.
Course objectives
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.
Syllabus
  • 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)
Literature
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Teaching methods
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).
Assessment methods
Two programming homeworks, one group project in the second half of the semester (groups of up to three students), project presentation.
Language of instruction
English
Further comments (probably available only in Czech)
Study Materials
The course is taught annually.
The course is also listed under the following terms Spring 2017, Spring 2019, Autumn 2020, Autumn 2023.

PV264 Advanced Programming in C++

Faculty of Informatics
Spring 2017
Extent and Intensity
2/2/0. 4 credit(s) (plus extra credits for completion). Type of Completion: zk (examination).
Teacher(s)
RNDr. Nikola Beneš, Ph.D. (lecturer)
RNDr. Jan Mrázek (seminar tutor)
RNDr. Vladimír Štill, Ph.D. (seminar tutor)
Guaranteed by
doc. RNDr. Eva Hladká, Ph.D.
Department of Computer Systems and Communications – Faculty of Informatics
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics
Timetable
Wed 12:00–13:50 A217, except Wed 10. 5.
  • Timetable of Seminar Groups:
PV264/01: Thu 18:00–19:50 B130, N. Beneš, V. Štill
PV264/02: Thu 14:00–15:50 B130, N. Beneš, V. Štill
Prerequisites
PB161 C++ Programming && ( (! PB173 Domain spec. devel. in C/C++ ) || SOUHLAS )
The course is not open for students that have taken the Advanced C++ seminar group of PB173.
Course Enrolment Limitations
The course is offered to students of any study field.
Course objectives
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.
Syllabus
  • 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)
Literature
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Teaching methods
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).
Assessment methods
Two programming homeworks, one group project in the second half of the semester (groups of up to three students), project presentation, final written exam.
Language of instruction
English
Further comments (probably available only in Czech)
Study Materials
The course is taught annually.
The course is also listed under the following terms Spring 2018, Spring 2019, Autumn 2020, Autumn 2023.

PV264 Seminar on programming in C++

Faculty of Informatics
Autumn 2024

The course is not taught in Autumn 2024

Extent and Intensity
0/2/1. 3 credit(s) (plus extra credits for completion). Type of Completion: k (colloquium).
In-person direct teaching
Teacher(s)
RNDr. Nikola Beneš, Ph.D. (lecturer)
Mgr. Adam Matoušek (lecturer)
RNDr. Petr Ročkai, Ph.D. (lecturer)
Bc. Jakub Šárník (seminar tutor)
Mgr. František Bráblík (assistant)
Ing. Oliver Šintaj (assistant)
Guaranteed by
RNDr. Nikola Beneš, Ph.D.
Department of Computer Systems and Communications – Faculty of Informatics
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics
Prerequisites (in Czech)
PB161 C++ Programming
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
fields of study / plans the course is directly associated with
there are 38 fields of study the course is directly associated with, display
Course objectives
The course builds on top of the basic C++ programming course, PB161. The goal of this course is to familiarise students with some of the more advanced parts of modern C++, focusing mainly on generic programming and metaprogramming facilities, and to further develop their C++ programming skills by solving various practical exercises. Students with an interest in a broader scope of C++ topics might want to enrol in PV294 (both courses can also be studied simultaneously).
Learning outcomes
At the end of the course, the students should be able to: design and implement a variety of C++ programs on an intermediate level; understand and use the programming techniques of generic programming and metaprogramming supported by the newest ISO standards of C++; be able to read and maintain existing C++ code using these techniques.
Syllabus
  • Generic programming, templates, concepts. Metaprogramming, compile-time evaluation, useful idioms.
Literature
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Teaching methods
Seminars with practical exercises and programming homework. The primary language of communication in the seminars depends on the students' preferences. All course materials are in English.
Assessment methods
A scoring system based on homework, peer review, and activity during the seminars; final programming exam.
Language of instruction
English
Further comments (probably available only in Czech)
The course is taught once in two years.
The course is taught: every week.
Teacher's information
Recommended reference guide: cppreference.com
The course is also listed under the following terms Spring 2017, Spring 2018, Spring 2019, Autumn 2020, Autumn 2023.

PV264 Advanced Programming in C++

Faculty of Informatics
Autumn 2022

The course is not taught in Autumn 2022

Extent and Intensity
2/2/0. 3 credit(s) (plus extra credits for completion). Type of Completion: k (colloquium).
Teacher(s)
RNDr. Nikola Beneš, Ph.D. (lecturer)
Mgr. Lukáš Korenčik (seminar tutor)
RNDr. Jan Mrázek (seminar tutor)
RNDr. Vladimír Štill, Ph.D. (seminar tutor)
Mgr. Adam Matoušek (assistant)
Guaranteed by
RNDr. Nikola Beneš, Ph.D.
Department of Computer Systems and Communications – Faculty of Informatics
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics
Prerequisites (in Czech)
PB161 C++ Programming
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
fields of study / plans the course is directly associated with
there are 39 fields of study the course is directly associated with, display
Course objectives
The goal of this course is to expose students to advanced usage of the C++ programming language.
Learning outcomes
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.
Syllabus
  • Introduction to the ISO C++17 and ISO C++20 standards
  • Build process; 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
  • Concepts
  • The future of the standard library: Ranges
Literature
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Teaching methods
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).
Assessment methods
Two programming homework assignments, one group project in the second half of the semester (groups of up to three students), project presentation, peer review.
Language of instruction
English
Further comments (probably available only in Czech)
The course is taught annually.
The course is taught: every week.
Teacher's information
Recommended reference guide: cppreference.com
The course is also listed under the following terms Spring 2017, Spring 2018, Spring 2019, Autumn 2020, Autumn 2023.

PV264 Advanced Programming in C++

Faculty of Informatics
Autumn 2021

The course is not taught in Autumn 2021

Extent and Intensity
2/2/0. 3 credit(s) (plus extra credits for completion). Type of Completion: k (colloquium).
Teacher(s)
RNDr. Nikola Beneš, Ph.D. (lecturer)
Mgr. Lukáš Korenčik (seminar tutor)
RNDr. Jan Mrázek (seminar tutor)
RNDr. Vladimír Štill, Ph.D. (seminar tutor)
Mgr. Adam Matoušek (assistant)
Guaranteed by
RNDr. Nikola Beneš, Ph.D.
Department of Computer Systems and Communications – Faculty of Informatics
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics
Prerequisites (in Czech)
PB161 C++ Programming
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
fields of study / plans the course is directly associated with
there are 39 fields of study the course is directly associated with, display
Course objectives
The goal of this course is to expose students to advanced usage of the C++ programming language.
Learning outcomes
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.
Syllabus
  • Introduction to the ISO C++17 and ISO C++20 standards
  • Build process; 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
  • Concepts
  • The future of the standard library: Ranges
Literature
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Teaching methods
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).
Assessment methods
Two programming homework assignments, one group project in the second half of the semester (groups of up to three students), project presentation, peer review.
Language of instruction
English
Further comments (probably available only in Czech)
The course is taught annually.
The course is taught: every week.
Teacher's information
Recommended reference guide: cppreference.com
The course is also listed under the following terms Spring 2017, Spring 2018, Spring 2019, Autumn 2020, Autumn 2023.

PV264 Advanced Programming in C++

Faculty of Informatics
Spring 2020

The course is not taught in Spring 2020

Extent and Intensity
2/2/0. 3 credit(s) (plus extra credits for completion). Type of Completion: k (colloquium).
Teacher(s)
RNDr. Nikola Beneš, Ph.D. (lecturer)
RNDr. Jan Mrázek (seminar tutor)
RNDr. Vladimír Štill, Ph.D. (seminar tutor)
Guaranteed by
RNDr. Nikola Beneš, Ph.D.
Department of Computer Systems and Communications – Faculty of Informatics
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics
Prerequisites
PB161 C++ Programming && ( (! PB173 Domain spec. devel. in C/C++ ) || SOUHLAS )
The course is not open for students that have taken the Advanced C++ seminar group of PB173.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
fields of study / plans the course is directly associated with
there are 37 fields of study the course is directly associated with, display
Course objectives
The goal of this course is to expose students to advanced usage of C++ programming language.
Learning outcomes
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.
Syllabus
  • 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)
Literature
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Teaching methods
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).
Assessment methods
Two programming homeworks, one group project in the second half of the semester (groups of up to three students), project presentation, final written exam.
Language of instruction
English
Further comments (probably available only in Czech)
The course is taught annually.
The course is taught: every week.
The course is also listed under the following terms Spring 2017, Spring 2018, Spring 2019, Autumn 2020, Autumn 2023.
  • Enrolment Statistics (recent)