Vyučující
|
-
Hlavenka Jakub, Ing.
-
Hosek Milan, doc. Ing. Ph.D.
|
Obsah předmětu
|
1. Základní koncepty moderního C++, coding standard, std::array, std::vector 2. Reprezentace datových typů v paměti, STL, iterátory, RAII, chytré ukazatele 3. Objekty, virtuální metody, const, constexpr a final, přetěžování funkcí a operátorů 4. Lambda funkce, vyjímky a std:: algoritmy, random 5. Vícenásobná dědičnost, práce s typy, proudy (soubory a další) 6. Copy a move sémantika, šablony 7. Variadické šablony, dynamický vs. statický polymorfismus, CRTP 8. Vlákna v C++ a základní synchronizační primitiva, paralelní algoritmy 9. Koncepty, korutiny, moduly 10. Ladění kódu 11. Profilování kódu, hledání úniků paměti 12. Překlad vybraných vysokoúrovňových konstrukcí (např. devirtualizace), optimalizace, čistá abstrakce 13. Vybrané podpůrné knihovny a nástroje jazyka C++ (Boost, Qt, CMake)
|
Studijní aktivity a metody výuky
|
- Projekt individuální [40]
- 38 hodin za semestr
- Kontaktní výuka
- 39 hodin za semestr
- Příprava na zkoušku [10-60]
- 30 hodin za semestr
|
Předpoklady |
---|
Odborné znalosti |
---|
Znát a umět používat programovací jazyk C a alespoň jeden objektový programovací jazyk. |
Rozumět a být schopen aplikovat znalosti z teoretické informatiky (např. výpočetní složitost) |
Mít alespoň základní povědomí o fungování procesoru a dělení adresního prostoru (alokace paměti, zásobník a halda) |
Odborné dovednosti |
---|
Být schopen analyzovat a dekomponovat problém, navrhnout algoritmické řešení a implementovat jej. |
Obecné způsobilosti |
---|
bc. studium: své učení a pracovní činnost si sám plánuje a organizuje, |
bc. studium: uplatňuje při řešení problémů vhodné metody a dříve získané vědomosti a dovednosti, kromě analytického a kritického myšlení využívá i myšlení tvořivé s použitím představivosti a intuice, |
bc. studium: zvažuje možné klady a zápory jednotlivých variant řešení, včetně posouzení jejich rizik a důsledků, |
mgr. studium: samostatně a odpovědně se na základě rámcového zadání rozhodují v souvislostech jen částečně známých, |
Výsledky učení |
---|
Odborné znalosti |
---|
Základní a pokročilé konstrukce jazyka C++ včetně těch z moderních standardů. |
Znát principy moderních kompilovaných programovacích jazyků a jejich vztah k efektivitě a bezpečnosti |
Znát vztah C++ k ostatním programovacím jazykům. |
Odborné dovednosti |
---|
Umět použít jazyk C++ pro implementaci menších a středně velkých softwarových projektů s vysokou mírou využití prostředků jazyka ke zvýšení bezpečnosti a efektivity výsledného programu. |
Umět analyzovat a zhodnotit kvalitu svého programu pomocí dostupných nástrojů. |
Umět rozhodnout, pro jaký problém se jazyk C++ hodí a pro jaký ne. |
Obecné způsobilosti |
---|
bc. studium: samostatně a odpovědně se na základě rámcového zadání rozhodují v souvislostech jen částečně známých, |
Vyučovací metody |
---|
Odborné znalosti |
---|
Přednáška s demonstrací, |
Přednáška s diskusí, |
Cvičení (praktické činnosti), |
Řešení problémů, |
Skupinová výuka, |
Samostudium, |
Samostatná práce studentů, |
Diskuse, |
Odborné dovednosti |
---|
Přednáška založená na výkladu, |
Přednáška s diskusí, |
Cvičení (praktické činnosti), |
Přednáška s demonstrací, |
Řešení problémů, |
Skupinová výuka, |
Samostudium, |
Diskuse, |
Obecné způsobilosti |
---|
Samostudium, |
Hodnotící metody |
---|
Odborné znalosti |
---|
Praktická zkouška, |
Demonstrace dovedností (praktická činnost), |
Průběžné hodnocení, |
Odborné dovednosti |
---|
Praktická zkouška, |
Demonstrace dovedností (praktická činnost), |
Průběžné hodnocení, |
Obecné způsobilosti |
---|
Průběžné hodnocení, |
Doporučená literatura
|
-
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.
|