PV264 Seminar on programming in C++

Fakulta informatiky
podzim 2023
Rozsah
0/2/1. 3 kr. (plus ukončení). Ukončení: k.
Vyučující
RNDr. Nikola Beneš, Ph.D. (přednášející)
Mgr. Adam Matoušek (přednášející)
RNDr. Petr Ročkai, Ph.D. (přednášející)
Bc. Jakub Šárník (cvičící)
Mgr. František Bráblík (pomocník)
Ing. Oliver Šintaj (pomocník)
Garance
RNDr. Nikola Beneš, Ph.D.
Katedra počítačových systémů a komunikací – Fakulta informatiky
Dodavatelské pracoviště: Katedra počítačových systémů a komunikací – Fakulta informatiky
Rozvrh seminárních/paralelních skupin
PV264/01: Út 12:00–13:50 B130, N. Beneš, A. Matoušek, P. Ročkai, J. Šárník
PV264/02: Út 18:00–19:50 B011, N. Beneš, A. Matoušek, P. Ročkai, J. Šárník
Předpoklady
PB161 Programování v jazyce C++
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Mateřské obory/plány
předmět má 39 mateřských oborů, zobrazit
Cíle předmětu
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).
Výstupy z učení
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.
Osnova
  • Generic programming, templates, concepts. Metaprogramming, compile-time evaluation, useful idioms.
Literatura
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Výukové metody
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.
Metody hodnocení
A scoring system based on homework, peer review, and activity during the seminars; final programming exam.
Vyučovací jazyk
Angličtina
Informace učitele
Recommended reference guide: cppreference.com
Další komentáře
Studijní materiály
Předmět je vyučován každoročně.
Předmět je zařazen také v obdobích jaro 2017, jaro 2018, jaro 2019, podzim 2020.

PV264 Advanced Programming in C++

Fakulta informatiky
podzim 2020
Rozsah
2/2/0. 3 kr. (plus ukončení). Ukončení: k.
Vyučující
RNDr. Nikola Beneš, Ph.D. (přednášející)
Mgr. Lukáš Korenčik (cvičící)
RNDr. Jan Mrázek (cvičící)
RNDr. Vladimír Štill, Ph.D. (cvičící)
Mgr. Adam Matoušek (pomocník)
Garance
RNDr. Nikola Beneš, Ph.D.
Katedra počítačových systémů a komunikací – Fakulta informatiky
Dodavatelské pracoviště: Katedra počítačových systémů a komunikací – Fakulta informatiky
Rozvrh
Út 12:00–13:50 A318
  • Rozvrh seminárních/paralelních skupin:
PV264/01: Út 14:00–15:50 B130, L. Korenčik, J. Mrázek, V. Štill
PV264/02: St 16:00–17:50 B130, L. Korenčik, J. Mrázek, V. Štill
Předpoklady
PB161 Programování v jazyce C++
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Mateřské obory/plány
předmět má 37 mateřských oborů, zobrazit
Cíle předmětu
The goal of this course is to expose students to advanced usage of the C++ programming language.
Výstupy z učení
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.
Osnova
  • 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
Literatura
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Výukové metody
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).
Metody hodnocení
Two programming homework assignments, one group project in the second half of the semester (groups of up to three students), project presentation, peer review.
Vyučovací jazyk
Angličtina
Informace učitele
Recommended reference guide: cppreference.com
Další komentáře
Studijní materiály
Předmět je vyučován každoročně.
Předmět je zařazen také v obdobích jaro 2017, jaro 2018, jaro 2019, podzim 2023.

PV264 Advanced Programming in C++

Fakulta informatiky
jaro 2019
Rozsah
2/2/0. 4 kr. (plus ukončení). Ukončení: k.
Vyučující
RNDr. Nikola Beneš, Ph.D. (přednášející)
RNDr. Vladimír Štill, Ph.D. (cvičící)
RNDr. Jan Mrázek (cvičící)
Mgr. Lukáš Korenčik (cvičící)
Mgr. Adam Matoušek (pomocník)
Garance
doc. RNDr. Eva Hladká, Ph.D.
Katedra počítačových systémů a komunikací – Fakulta informatiky
Dodavatelské pracoviště: Katedra počítačových systémů a komunikací – Fakulta informatiky
Rozvrh
Út 19. 2. až Út 14. 5. Út 16:00–17:50 D3
  • Rozvrh seminárních/paralelních skupin:
PV264/01: Čt 21. 2. až Čt 16. 5. Čt 16:00–17:50 B130, N. Beneš, L. Korenčik
PV264/02: St 16:00–17:50 B130, L. Korenčik, V. Štill
Předpoklady
PB161 Programování v jazyce C++ && ( (! PB173 Vývoj aplikací v C/C++ ) || SOUHLAS )
The course is not open for students that have taken the Advanced C++ seminar group of PB173.
Omezení zápisu do předmětu
Předmět je otevřen studentům libovolného oboru.
Cíle předmětu
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.
Osnova
  • 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)
Literatura
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Výukové metody
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).
Metody hodnocení
Two programming homeworks, one group project in the second half of the semester (groups of up to three students), project presentation.
Vyučovací jazyk
Angličtina
Informace učitele
Recommended reference guide: cppreference.com
Další komentáře
Studijní materiály
Předmět je vyučován každoročně.
Předmět je zařazen také v obdobích jaro 2017, jaro 2018, podzim 2020, podzim 2023.

PV264 Advanced Programming in C++

Fakulta informatiky
jaro 2018
Rozsah
2/2/0. 4 kr. (plus ukončení). Ukončení: k.
Vyučující
RNDr. Nikola Beneš, Ph.D. (přednášející)
RNDr. Jan Mrázek (cvičící)
RNDr. Vladimír Štill, Ph.D. (cvičící)
Garance
doc. RNDr. Eva Hladká, Ph.D.
Katedra počítačových systémů a komunikací – Fakulta informatiky
Dodavatelské pracoviště: Katedra počítačových systémů a komunikací – Fakulta informatiky
Rozvrh
Po 16:00–17:50 D3
  • Rozvrh seminárních/paralelních skupin:
PV264/01: St 10:00–11:50 B130, N. Beneš, J. Mrázek, V. Štill
PV264/02: Út 10:00–11:50 B130, N. Beneš, J. Mrázek, V. Štill
Předpoklady
PB161 Programování v jazyce C++ && ( (! PB173 Vývoj aplikací v C/C++ ) || SOUHLAS )
The course is not open for students that have taken the Advanced C++ seminar group of PB173.
Omezení zápisu do předmětu
Předmět je otevřen studentům libovolného oboru.
Cíle předmětu
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.
Osnova
  • 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)
Literatura
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Výukové metody
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).
Metody hodnocení
Two programming homeworks, one group project in the second half of the semester (groups of up to three students), project presentation.
Vyučovací jazyk
Angličtina
Informace učitele
Recommended reference guide: cppreference.com
Další komentáře
Studijní materiály
Předmět je vyučován každoročně.
Předmět je zařazen také v obdobích jaro 2017, jaro 2019, podzim 2020, podzim 2023.

PV264 Advanced Programming in C++

Fakulta informatiky
jaro 2017
Rozsah
2/2/0. 4 kr. (plus ukončení). Ukončení: zk.
Vyučující
RNDr. Nikola Beneš, Ph.D. (přednášející)
RNDr. Jan Mrázek (cvičící)
RNDr. Vladimír Štill, Ph.D. (cvičící)
Garance
doc. RNDr. Eva Hladká, Ph.D.
Katedra počítačových systémů a komunikací – Fakulta informatiky
Dodavatelské pracoviště: Katedra počítačových systémů a komunikací – Fakulta informatiky
Rozvrh
St 12:00–13:50 A217, kromě St 10. 5.
  • Rozvrh seminárních/paralelních skupin:
PV264/01: Čt 18:00–19:50 B130, N. Beneš, V. Štill
PV264/02: Čt 14:00–15:50 B130, N. Beneš, V. Štill
Předpoklady
PB161 Programování v jazyce C++ && ( (! PB173 Vývoj aplikací v C/C++ ) || SOUHLAS )
The course is not open for students that have taken the Advanced C++ seminar group of PB173.
Omezení zápisu do předmětu
Předmět je otevřen studentům libovolného oboru.
Cíle předmětu
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.
Osnova
  • 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)
Literatura
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Výukové metody
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).
Metody hodnocení
Two programming homeworks, one group project in the second half of the semester (groups of up to three students), project presentation, final written exam.
Vyučovací jazyk
Angličtina
Informace učitele
Recommended reference guide: cppreference.com
Další komentáře
Studijní materiály
Předmět je vyučován každoročně.
Předmět je zařazen také v obdobích jaro 2018, jaro 2019, podzim 2020, podzim 2023.

PV264 Seminar on programming in C++

Fakulta informatiky
podzim 2024

Předmět se v období podzim 2024 nevypisuje.

Rozsah
0/2/1. 3 kr. (plus ukončení). Ukončení: k.
Vyučováno kontaktně
Vyučující
RNDr. Nikola Beneš, Ph.D. (přednášející)
Mgr. Adam Matoušek (přednášející)
RNDr. Petr Ročkai, Ph.D. (přednášející)
Bc. Jakub Šárník (cvičící)
Mgr. František Bráblík (pomocník)
Ing. Oliver Šintaj (pomocník)
Garance
RNDr. Nikola Beneš, Ph.D.
Katedra počítačových systémů a komunikací – Fakulta informatiky
Dodavatelské pracoviště: Katedra počítačových systémů a komunikací – Fakulta informatiky
Předpoklady
PB161 Programování v jazyce C++
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Mateřské obory/plány
předmět má 38 mateřských oborů, zobrazit
Cíle předmětu
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).
Výstupy z učení
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.
Osnova
  • Generic programming, templates, concepts. Metaprogramming, compile-time evaluation, useful idioms.
Literatura
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Výukové metody
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.
Metody hodnocení
A scoring system based on homework, peer review, and activity during the seminars; final programming exam.
Vyučovací jazyk
Angličtina
Informace učitele
Recommended reference guide: cppreference.com
Další komentáře
Předmět je vyučován jednou za dva roky.
Výuka probíhá každý týden.
Předmět je zařazen také v obdobích jaro 2017, jaro 2018, jaro 2019, podzim 2020, podzim 2023.

PV264 Advanced Programming in C++

Fakulta informatiky
podzim 2022

Předmět se v období podzim 2022 nevypisuje.

Rozsah
2/2/0. 3 kr. (plus ukončení). Ukončení: k.
Vyučující
RNDr. Nikola Beneš, Ph.D. (přednášející)
Mgr. Lukáš Korenčik (cvičící)
RNDr. Jan Mrázek (cvičící)
RNDr. Vladimír Štill, Ph.D. (cvičící)
Mgr. Adam Matoušek (pomocník)
Garance
RNDr. Nikola Beneš, Ph.D.
Katedra počítačových systémů a komunikací – Fakulta informatiky
Dodavatelské pracoviště: Katedra počítačových systémů a komunikací – Fakulta informatiky
Předpoklady
PB161 Programování v jazyce C++
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Mateřské obory/plány
předmět má 39 mateřských oborů, zobrazit
Cíle předmětu
The goal of this course is to expose students to advanced usage of the C++ programming language.
Výstupy z učení
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.
Osnova
  • 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
Literatura
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Výukové metody
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).
Metody hodnocení
Two programming homework assignments, one group project in the second half of the semester (groups of up to three students), project presentation, peer review.
Vyučovací jazyk
Angličtina
Informace učitele
Recommended reference guide: cppreference.com
Další komentáře
Předmět je vyučován každoročně.
Výuka probíhá každý týden.
Předmět je zařazen také v obdobích jaro 2017, jaro 2018, jaro 2019, podzim 2020, podzim 2023.

PV264 Advanced Programming in C++

Fakulta informatiky
podzim 2021

Předmět se v období podzim 2021 nevypisuje.

Rozsah
2/2/0. 3 kr. (plus ukončení). Ukončení: k.
Vyučující
RNDr. Nikola Beneš, Ph.D. (přednášející)
Mgr. Lukáš Korenčik (cvičící)
RNDr. Jan Mrázek (cvičící)
RNDr. Vladimír Štill, Ph.D. (cvičící)
Mgr. Adam Matoušek (pomocník)
Garance
RNDr. Nikola Beneš, Ph.D.
Katedra počítačových systémů a komunikací – Fakulta informatiky
Dodavatelské pracoviště: Katedra počítačových systémů a komunikací – Fakulta informatiky
Předpoklady
PB161 Programování v jazyce C++
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Mateřské obory/plány
předmět má 39 mateřských oborů, zobrazit
Cíle předmětu
The goal of this course is to expose students to advanced usage of the C++ programming language.
Výstupy z učení
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.
Osnova
  • 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
Literatura
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Výukové metody
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).
Metody hodnocení
Two programming homework assignments, one group project in the second half of the semester (groups of up to three students), project presentation, peer review.
Vyučovací jazyk
Angličtina
Informace učitele
Recommended reference guide: cppreference.com
Další komentáře
Předmět je vyučován každoročně.
Výuka probíhá každý týden.
Předmět je zařazen také v obdobích jaro 2017, jaro 2018, jaro 2019, podzim 2020, podzim 2023.

PV264 Advanced Programming in C++

Fakulta informatiky
jaro 2020

Předmět se v období jaro 2020 nevypisuje.

Rozsah
2/2/0. 3 kr. (plus ukončení). Ukončení: k.
Vyučující
RNDr. Nikola Beneš, Ph.D. (přednášející)
RNDr. Jan Mrázek (cvičící)
RNDr. Vladimír Štill, Ph.D. (cvičící)
Garance
RNDr. Nikola Beneš, Ph.D.
Katedra počítačových systémů a komunikací – Fakulta informatiky
Dodavatelské pracoviště: Katedra počítačových systémů a komunikací – Fakulta informatiky
Předpoklady
PB161 Programování v jazyce C++ && ( (! PB173 Vývoj aplikací v C/C++ ) || SOUHLAS )
The course is not open for students that have taken the Advanced C++ seminar group of PB173.
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Mateřské obory/plány
předmět má 37 mateřských oborů, zobrazit
Cíle předmětu
The goal of this course is to expose students to advanced usage of C++ programming language.
Výstupy z učení
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.
Osnova
  • 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)
Literatura
  • MEYERS, Scott. Effective modern C++. First edition. Beijing: O'Reilly, 2014, xv, 315. ISBN 9781491903995. info
Výukové metody
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).
Metody hodnocení
Two programming homeworks, one group project in the second half of the semester (groups of up to three students), project presentation, final written exam.
Vyučovací jazyk
Angličtina
Informace učitele
Recommended reference guide: cppreference.com
Další komentáře
Předmět je vyučován každoročně.
Výuka probíhá každý týden.
Předmět je zařazen také v obdobích jaro 2017, jaro 2018, jaro 2019, podzim 2020, podzim 2023.