Jazyk C++ (FSI-SCP)

Akademický rok 2019/2020
Garant: Ing. Pavla Sehnalová, Ph.D.  
Garantující pracoviště: ÚM všechny předměty garantované tímto pracovištěm
Jazyk výuky: čeština
Cíle předmětu:
Cílem předmětu je seznámit studenty s aktuálními programovacími technikami až po normu C++17. V C++ existuje mnoho numerických knihoven pro vědeckotechnické výpočty. Studenti budou schopni vyvíjet moderní vědecké aplikace.
Výstupy studia a kompetence:
Studenti získají základní dovednosti a zkušenosti při psaní a ladění programů s využitím programovacího jazyka C++.
Prerekvizity:
Předpokládají se základní znalosti a zkušenosti s programovacím jazykem (C#, Java).
Obsah předmětu (anotace):
C++ je moderní programovací jazyk se zaměřením na vysoký výkon. Je široce používán ve velmi odlišných kontextech a má vynikající podporu jak v nástrojích, tak i v knihovnách. Jazyk dostal v roce 2011 obrovskou revizi s normou C++11 a přivedl jej tak do 21. století.
Metody vyučování:
Předmět je vyučován formou přednášek, které mají charakter výkladu základních principů a teorie dané disciplíny. Cvičení je zaměřeno na praktické zvládnutí látky probrané na přednáškách.
Způsob a kritéria hodnocení:
Klasifikovaný zápočet se uděluje na základě následujících podmínek: 30% týdenní úlohy na programování, 70% samostatný projekt. Za aktivní přínos ve výuce lze získat zvláštní ohodnocení.
Vymezení kontrolované výuky a způsob jejího provádění a formy nahrazování zameškané výuky:
Účast na přednáškách je žádoucí, účast ve cvičeních je povinná. Výuka probíhá podle týdenních rozvrhů. Způsob náhrady zameškané výuky je plně v kompetenci cvičícího.
Typ (způsob) výuky:
    Přednáška  13 × 1 hod. nepovinná                  
    Cvičení s počítačovou podporou  13 × 2 hod. povinná                  
Osnova:
    Přednáška 1. Základní části moderního C++
2. Základní datové typy
3. Pole a smyčky
4. Ukazatele a odkazy
5. Definice funkcí
6. Šablony funkcí
7. Direktivy preprocesoru
8. Třídy a objektově orientované programování
9. Přetěžování operátorů
10. Dědičnost, polymorfismus
11. Třídy šablon
12. Kontejnery a algoritmy STL
13. Knihovny pro vědecko-technické výpočty
    Cvičení s počítačovou podporou 1. Visual studio 2019
2. MSBuild, CMake, vcpkg
3. -8. Malé projekty
9. C++/CLI
10. Interoperabilita (Matlab, .NET)
11. Armadillo, Eigen, MKL
12. Boost.Numeric.Odeint
13. Zápočet
Literatura - základní:
1. Ivor Horton, Peter Van Weert Beginning C++17: From Novice to Professional Apress 2018 ISBN 1484233658
2. Bjarne Stroustrup A Tour of C++ [2nd ed.] C++ In-Depth Series Addison-Wesley 2018 ISBN 978-0-13-499783-4
3. George Em Karniadakis and Robert M. Kirby II Parallel Scientific Computing in C++ and MPI Cambridge University Press 2003 ISBN 9780511812583
4. Yair Shapira Mathematical Objects in C++: Computational Tools in A Unified Object-Oriented Approach Chapman & Hall 2009 ISBN 9781439811474
5. Miroslav Virius Programování v C++ od základů k profesionálnímu použití GRADA 2018 ISBN 978-80-271-0502-1
6. Jacek Galowicz C++17 STL Cookbook Packt Publishing 2017 ISBN 978-1-78712-049-5
7. William H. Press Numerical Recipes 3rd Edition: The Art of Scientific Computing Cambridge University Press 2007 ISBN10: 0521880688
Literatura - doporučená:
1. Joe Pitt-Francis, Jonathan Whiteley Guide to Scientific Computing in C++ (2nd edition) Springer 2017 ISBN 978-3-319-73132-2
2. Mikael Olsson C++17 Quick Syntax Reference Apress 2018 ISBN 978-1-4842-3599-7
3. Miroslav Virius Programovací jazyk C++ (1.-3. díl) ČVUT 2016 ISBN 9788001059616
Zařazení předmětu ve studijních programech:
Program Forma Obor Spec. Typ ukončení   Kredity     Povinnost     St.     Roč.     Semestr  
B3A-P prezenční studium B-MAI Matematické inženýrství -- kl 3 Povinný 1 3 L