Algoritmy a programovanie III

Vyučujúci

Zaradený v študijných programoch

Výsledky vzdelávania

Po absolvovaní predmetu študenti budú schopní:
A) rozumieť syntaktickým základom jazyka C++ a sémantickým základom objektovo orientovaného prístupu k vytváraniu zdrojových kódov C++ programov v integrovanom vývojovom prostredí
B) orientovať sa v princípoch a fungovaní vybraných vyhľadávacích, usporiadavacích, šifrovacích, numerických algoritmov a budú schopní implementovať tieto algoritmy v C++ programoch
C) orientovať sa v princípoch a fungovaní zložitejších dátových štruktúr, ako sú napr. dvojrozmerné pravidelné a nepravidelné dynamické polia a jednosmerný lineárny zoznam a budú schopní implementovať tieto dátové štruktúry v C++ programoch
D) analyzovať zadanie programátorskej úlohy, navrhnúť algoritmus jej riešenia a implementovať navrhnutý algoritmus pomocou syntaktických pravidiel jazyka C++ a objektovo orientovanej paradigmy do zdrojového kódu riešiaceho zadanú programátorskú úlohu
E) pre navrhnutý algoritmus riešenia zadanej úlohy vedieť vybrať vhodnú dátovú štruktúru pre ukladania dát tohto algoritmu
F) pomocou debugera integrovaného vývojového prostredia analyzovať správanie sa finálneho programu, s implementovaným algoritmom používajúcim špecifikovanú dátovú štruktúru, pre testovacie vstupné dáta
G) z otestovaného zdrojového kódu programu riešiaceho zadanú programátorskú úlohu zostaviť finálny program pre cieľový operačný systém a cieľovú hardvérovú platformu
H) na profesionálnej úrovni prezentovať a obhajovať nimi navrhované riešenia zadaných programátorských úloh
I) vypracovať technickú dokumentáciu (správu) opisujúcu nimi navrhnuté riešenie zadanej programátorskej úlohy

Stručná osnova predmetu

1) Základné koncepty objektovo orientovaného programovania
2) Ďalšie programovacie techniky a črty orientovaného programovania
3) Práca s dátovými prúdmi pomocou objektov knižničných tried v programe vytvorenom v jazyku C++, dedičská hierarchia knižničných tried pre prácu s dátovými prúdmi
4) Dedičnosť, polymorfizmus a kompozícia objektov v objektovo orientovanom C++ programe
5) Dynamická alokácia a dealokácia pamäte, polia a ukazovatele, adresová aritmetika a referencie v C++ programe
6) Algoritmy, skupiny (druhy) algoritmov
7) Zložitosť (výpočtová náročnosť) algoritmov
8) Vybrané vyhľadávacie algoritmy, ich princípy a fungovanie v C++ programe
9) Vybrané usporiadavacie algoritmy, ich princípy a fungovanie v C++ programe
10) Jednosmerný lineárny zoznam, jeho princíp a fungovanie v C++ programe
11) Vybrané metódy šifrovania informácie, ich princípy a fungovanie v C++ programe
12) Vybrané algoritmy numerického derivovania matematických funkcií, ich princípy a fungovanie v C++ programe
13) Vybrané algoritmy numerického integrovania matematických funkcií, ich princípy a fungovanie v C++ programe

Odporúčaná literatúra

STROUSTRUP, B. Programovací jazyk C++. Praha: BEN - technická literatura, 1997. ISBN 80-86056-20-1
ECKEL, B. Myslíme v jazyku C++. Praha: Grada, 2000. ISBN 8024790092
ECKEL, B. Myslíme v jazyku C++, 2. díl. Praha: Grada, 2006. ISBN 8024710153
SCHILDT, H. Nauč se sám C++. Praha: SoftPress, 2001. ISBN 8086497135
GLASSBOROW, F. Naučte se programovat! podrobný průvodce programováním v C++. Praha: Grada, 2005. ISBN 80-247-1243-1
VIRIUS, M. Programování v C++. Praha: Grada, 2017. ISBN 978-80-271-0502-1
VIRIUS, M. Programovací jazyk C++ 2. díl. Praha: ČVUT Praha, 2016. ISBN 978-80-01-06050-6
VIRIUS, M. Programovací jazyk C++ 3. díl. Praha: ČVUT Praha, 2017. ISBN 978-80-01-06089-6
VIRIUS, M. Od C k C++. České Budějovice: Kopp, 2004. ISBN 80-7232-110-2
VIRIUS, M. Jazyky C a C++. Praha: Grada, 2011. ISBN 9788024739175

Podmienky na absolvovanie predmetu

Cvičenia (40% z hodnotenia predmetu)
Náplňou cvičení je riešenie zadaných programátorských úloh. Okrem týchto úloh študenti riešia samostatné domáce programátorské zadania tematicky nadväzujúce na prednášky a riešené programátorské úlohy z cvičení. Svoje riešenia samostatných domácich zadaní, s ich technickým opisom, študenti komentujú a v prípadnej diskusii obhajujú pred ostatnými študentmi ich študijnej skupiny. Riešenia samostatných programátorských domácich zadaní študentov sú ohodnotené (10% z hodnotenia predmetu). Riešením a hodnotením samostatných domácich zadaní sa overuje dosiahnutá úroveň výsledkov vzdelávania B, C, D, E, F, G, H, I. V rámci cvičení študenti absolvujú samostatnú písomnú prácu, riešenie programátorského zadania v integrovanom vývojovom prostredí, ktorá je ohodnotená (30% z hodnotenia predmetu). Riešením a hodnotením problémovej úlohy zo samostatnej písomnej práce sa overuje dosiahnutá úroveň výsledkov vzdelávania B, C, D, E, F, G.
Skúška (60% z hodnotenia predmetu)
Skúška sa skladá z dvoch častí:
- zo samostatnej skúškovej písomnej práce, riešenie programátorského zadania v integrovanom vývojovom prostredí, a obhajoby tohto riešenia (50% z hodnotenia predmetu). Riešením a hodnotením problémovej úlohy zo samostatnej skúškovej písomnej práce a obhajobou tohto riešenia sa overuje dosiahnutá úroveň výsledkov vzdelávania B, C, D, E, F, G, H.
- z ústnej časti, kde študenti odpovedajú na teoretické otázky zo syntaxe jazyka C++, z princípov objektovo orientovaného programovania v jazyku C++, princípov a fungovania vybraných vyhľadávacích, usporiadavacích, šifrovacích, numerických algoritmov a z princípov a fungovania zložitejších dátových štruktúr, ako sú napr. dvojrozmerné pravidelné a nepravidelné dynamické polia a jednosmerný lineárny zoznam (10% z hodnotenia predmetu). Ústnou časťou skúšky a jej hodnotením sa overuje dosiahnutá úroveň výsledkov vzdelávania A, B a C.

Pracovné zaťaženie študenta

Pracovné zaťaženie študenta (v hodinách): 6 kreditov x 26 h = 156 h
Rozdelenie pracovného zaťaženia študenta
účasť na cvičeniach, seminároch 52 h,
príprava na semináre 26 h,
spracovanie domácich zadaní 12 h,
príprava na samostatnú písomnú prácu 18 h,
príprava na skúšku 48 h.

Jazyk, ktorého znalosť je potrebná na absolvovanie predmetu

Slovenský jazyk

Dátum schválenia: 10.02.2023

Dátum poslednej zmeny: 18.05.2022

Dátum schválenia: 10.02.2023

Dátum poslednej zmeny: 18.05.2022