Popis předmětu - B2B99PPC

Přehled studia | Přehled oborů | Všechny skupiny předmětů | Všechny předměty | Seznam rolí | Vysvětlivky               Návod
B2B99PPC Praktické programování v C/C++ Rozsah výuky:2p+2c
Garanti:Faigl J., Vítek S. Role:P Jazyk výuky:CS
Vyučující:Dobeš J., Chrpa L., Vítek S. Zakončení:KZ
Zodpovědná katedra:13137 Kreditů:6 Semestr:L

Anotace:

Předmět seznamuje studenty s C++ a dále rozvíjí praktické dovednosti programování v C/C++ s důrazem na řešení výpočetních úloh a více-vláknových aplikací s využitím paralelního programování. První část přednášek je věnována objektově orientovanému programování v C++ a seznámení studentů se základními datovými kontejnery standardní knihovny STL. Studenti se seznámí s principy paralelního programování více-vláknových aplikací, mechanismy synchronizace a modely více-vláknových aplikací. Druhá část je věnována rozvinutí algoritmického uvažování při řešení výpočetních úloh prohledávání stavového prostoru dvěma základními přístupy: metodami uspořádaného prohledávání grafové reprezentace stavového prostoru a lokálními optimalizačními technikami. Dále budou studenti seznámeni s modely přesné datové reprezentace necelých čísel, reprezentací matic a maticovými výpočty.

Cíle studia:

Cílem předmětu je seznámit studenty s praktickými aspekty programováni v C/C++. Studenti se naučí efektivně implementovat algoritmy a numerické metody, které se běžně využívají v elektronických systémech.

Osnovy přednášek:

1. Principy objektově orientovaného programování: třídy, objekty, zapouzdření
2. Dědičnost a polymorfismus
3. Generické typy
4. Výjimky a ladění programu
5. Kontejnery (knihovna STL)
6. Datové proudy a operátory
7. Paralelní programování - metody synchronizace výpočetních vláken
8. Paralelní programování - modely více-vláknových aplikací a paralelizace výpočtů (např. OpenMP)
9. Grafové struktury a jejich prohledávání
10. Dynamické programování
11. Výpočetní úlohy s plovoucí řádovou čárkou a přesné datové reprezentace
12. Reprezentace matic a maticové výpočty
13. Numerické knihovny v C/C++ a optimalizační algoritmy (hill climbing, simulated annealing)
14. Vývoj jazyka C/C++, verze a standardy (C++11/C++14), jejich rozšíření, přenositelnost a překladače

Osnovy cvičení:

Praktická cvičení jsou zaměřena na získání a procvičování programovacích návyků tak, aby studenti byli schopni samostatně vytvářet čitelné a přenositelné kódy s důrazem na využití existujících standardních knihoven a datových kontejnerů. V průběhu semestru studenti odevzdávají programovací úlohy jejichž bodové hodnocení se skládá z bodů za správnost a efektivitu kódu, dále pak z bodů zohledňující kvalitu zdrojových kódů, jejich čitelnost a znovu použitelnost. Náplň jednotlivých cvičení se skládá z praktického osvojení témat diskutovaných na přednášce a zadání domácího úkolu.

Literatura:

[1] Stroustrup: Programming: Principles and Practice Using C++ (2nd Edition), 2014, ISBN 978-0321992789
[2] Stroustrup: The C++ Programming Language (4th Edition), 2013, ISBN 978-0321563842
[3] Sedgewick, Wayne: Algorithms (4th Edition), 2011, ISBN 978-0321573513

Požadavky:

Předmět vyžaduje základní znalosti procedurálního programování, které lze získat v předmětu "Procedurální programování".

Poznámka:

2p+2c+5d

Předmět je zahrnut do těchto studijních plánů:

Plán Obor Role Dop. semestr
BPEK_2018 Před zařazením do oboru P 2
BPEK_2016 Před zařazením do oboru P 2


Stránka vytvořena 17.12.2018 17:48:15, semestry: Z,L/2020-1, L/2017-8, L/2019-20, Z,L/2018-9, Z/2019-20, připomínky k informační náplni zasílejte správci studijních plánů Návrh a realizace: I. Halaška (K336), J. Novák (K336)
Za obsah odpovídá: doc. Ing. Ivan Jelínek, CSc.