Logo ČVUT
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE
STUDIJNÍ PLÁNY
2021/2022

Efektivní programování v C++

Přihlášení do KOSu pro zápis předmětu Zobrazit rozvrh
Kód Zakončení Kredity Rozsah Jazyk výuky
NI-EPC Z,ZK 5 2P+1C česky
Přednášející:
Daniel Langr (gar.), Pavel Tvrdík
Cvičící:
Daniel Langr (gar.), Pavel Tvrdík
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, pozorovatelné chování, pravidlo as-if, optimalizace, jednotky překladu, ABI

2. Jednotky překladu a pozorovatelné chování, ODR, interní linkage, inline, statické a dynamické spojování, PIMPL

3. Nedefinované chování, doba života objektů, statická a dynamická alokace uložiště, inicializace a destrukce

4. Cena dynamických alokací, zarovnání, padding, placement new, vlastnící objekty

5. Technika Small string optimization

6. Výrazy new[] a delete[], obsah objektů, vektorová třída

7. Kategorie hodnot, typy referencí, navazování referencí, std::move

8. Emplace sémantika, perfect forwarding, dispatching

9. Šablony, instanciace šablon, dedukce argumentů šablon, specializace šablon, variadické šablony, template parameter pack

10. Function parameter pack, koncepty a omezení (constraints), SFINAE

11. Bezpečnost výjimek, alokátory, small buffer optimization, empty base optimization, type erasure

12. Type erasure, std::function, std::any, std::variant, CRTP, ADL

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++

Prata, C++ Primer Plus

Reddy, API Design for C++

Stroustrup, Programming - Principles and Practice Using C++

Stroustrup, The C++ Programming Language

Sutter and Alexandrescu, C++ Coding Standards: 101 Rules, Guidelines, and Best Practices

Vandervoorde and Josuttis, C++ Templates - The Complete Guide

Williams, C++ Concurrency in Action

cppreference.com, www.cplusplus.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 2021/2022:
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
místnost TH:A-s135
Langr D.
11:00–12:30
(přednášková par. 1)
Thákurova 7 (FSv-budova A)
As135
Čt
místnost T9:351
Langr D.
11:00–12:30
SUDÝ TÝDEN

(přednášková par. 1
paralelka 101)

Dejvice
NBFIT PC ucebna
místnost T9:351
Langr D.
12:45–14:15
SUDÝ TÝDEN

(přednášková par. 1
paralelka 102)

Dejvice
NBFIT PC ucebna
místnost T9:351
Langr D.
14:30–16:00
SUDÝ TÝDEN

(přednášková par. 1
paralelka 103)

Dejvice
NBFIT PC ucebna

Rozvrh na letní semestr 2021/2022:
Rozvrh není připraven
Předmět je součástí následujících studijních plánů:
Platnost dat k 17. 9. 2021
Aktualizace výše uvedených informací naleznete na adrese http://bilakniha.cvut.cz/cs/predmet6071806.html