Efektivní programování v C++
Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
---|---|---|---|---|
NI-EPC | Z,ZK | 5 | 2P+1C | česky |
- Garant předmětu:
- Daniel Langr
- Přednášející:
- Daniel Langr
- Cvičící:
- Daniel Langr
- Předmět zajišťuje:
- katedra počítačových systémů
- Anotace:
-
Studenti se naučí využívat moderní rysy současných verzí jazyka C++ pro tvorbu softwaru. Důraz je kladen především na efektivitu, a to jak v podobě tvorby udržovatelných a přenositelných zdrojových kódů, tak v podobě korektních programů s nízkými nároky na paměť a procesorový čas.
- Požadavky:
-
Velmi dobré znalosti látky z předmětů BI-PA1 a BI-PA2, částečné znalosti látky z předmětů BI-SAP a BI-OSY. U BI-PA2 je rovněž doporučena znalost z „rozšiřujících materiálů“.
- Osnova přednášek:
-
1. Úvod, standardy a implementace C++, pozorovatelné chování, jednotky překladu, nedefinované chování
2. Objektový model C++ — základy
3. Objektový model C++ — pokračování
4. Objektový model C++ — příklady
5. Výrazy, reference, obsah objektů
6. Kopírování a přesun obsahu
7. Výjimky a bezpečnost, RAII
8. Šablony — základy
9. Šablony — variadické šablony, perfect forwarding, emplace sémantika
10. Šablony — výhody/nevýhody, SFINAE, koncepty a omezení
11. Type erasure, CRTP, empty base optimization, ADL
12. Výkon a efektivita
13. Short string optimization
- Osnova cvičení:
-
Na počítačových cvičeních řeší studenti úlohy navazující na přednášky; cvičící poskytuje konzultace a rady.
- Cíle studia:
-
Cílem předmětu je naučit studenty využívat současné verze jazyka C++ tak, aby v něm byli schopni vytvářet efektivní, korektní, udržovatelný a přenositelný software.
- Studijní materiály:
-
Josuttis, The C++ Standard Library-A Tutorial and Reference
Meyers, Effective Modern C++
Reddy, API Design for C++
Stroustrup, Programming - Principles and Practice Using C++
Stroustrup, The C++ Programming Language
Vandervoorde and Josuttis, C++ Templates - The Complete Guide
cppreference.com (C++ reference)
stackoverflow.com (developer forum)
isocpp.org (news, status, blogs, FAQs, discussion)
ISO/IEC 14882:2014 Information technology - Programming languages-C++
- Poznámka:
- Další informace:
- https://courses.fit.cvut.cz/NI-EPC/
- Rozvrh na zimní semestr 2024/2025:
-
06:00–08:0008:00–10:0010:00–12:0012:00–14:0014:00–16:0016:00–18:0018:00–20:0020:00–22:0022:00–24:00
Po Út St Čt Pá - Rozvrh na letní semestr 2024/2025:
- Rozvrh není připraven
- Předmět je součástí následujících studijních plánů:
-
- Mgr. specializace Teoretická informatika, 2018-2019 (volitelný předmět)
- Mgr. specializace Počítačová bezpečnost, 2020 (volitelný předmět)
- Mgr. specializace Návrh a programování vestavných systémů, 2020 (volitelný předmět)
- Mgr. specializace Počítačové systémy a sítě, 2020 (PS)
- Mgr. specializace Manažerská informatika, 2020 (volitelný předmět)
- Mgr. specializace Softwarové inženýrství, 2020 (volitelný předmět)
- Mgr. specializace Systémové programování, verze od 2020 (PS)
- Mgr. specializace Webové inženýrství, 2020 (volitelný předmět)
- Mgr. specializace Znalostní inženýrství, 2020 (volitelný předmět)
- Mgr. specializace Teoretická informatika, 2020 (volitelný předmět)
- Mgr. program, pro fázi studia bez specializace, ver. pro roky 2020 a vyšší (VO)
- Master Specialization Digital Business Engineering, 2023 (VO)
- Mgr. specializace Systémové programování, verze od 2023 (PS)
- Mgr. specializace Teoretická informatika, 2023 (volitelný předmět)