Sylabus predmetu AGP113C - Algoritmy a programování I (VŠPP - ZS 2019/2020)

     Čeština          Angličtina          

Kód předmětu: AGP113C
Název česky: Algoritmy a programování I
Název anglicky: Algorithms and Programming I
Způsob ukončení a počet kreditů: zkouška (3 kredity)
Forma výuky: prezenční, 2/3 (počet hodin přednášek týdně / počet hodin cvičení týdně)
kombinovaná, 8/0 (počet hodin přednášek za období / počet hodin cvičení za období)
Jazyk výuky: čeština
Garant předmětu: doc. Ing. Josef Kokeš, CSc.
Vyučující: doc. Ing. Josef Kokeš, CSc. (cvičící, garant, přednášející, zkoušející)
Prerekvizity: žádné
Anotace:
Cílem předmětu je seznámit studenty s pojmy algoritmus, algoritmizace, program, se základními principy a s fundamentálními pojmy fungování počítačů. Studenti se seznámí se základními programovacími technikami a rozvinou své schopnosti vytváření algoritmů, konkrétně pak v programovacím jazyce JAVA. Předmět je koncipován jako dvousemestrální, přičemž první semestr je povinný pro všechny studenty, zatímco druhý navazující semestr je volitelný. Výuka v prvním semestru sestává ze tří logických, na sebe navazujících bloků. Obsahem prvního bloku je seznámení se s principy činnosti počítače, se základními pojmy jako jsou instrukce, program, kompilátor, interpreter, datové typy, proměnné. Na to navazuje druhý blok, ve kterém je kladen důraz na porozumění pojmu algoritmus a na formulování technik, jimiž se algoritmy formulují, zapisují a testují. Ve třetím, fundamentálním bloku se principy a myšlenky, získané v předcházejících blocích, aplikují na základní metody a techniky práce s vývojovým prostředím, s principy a strukturou programovacího jazyka JAVA. Dále se student seznámí se základními způsoby řízení toku programu. V rámci cvičení paralelně k získávání nových znalostí a informací, budou rozšiřovat praktické dovednosti pro psaní jednoduchých programů. Náplň cvičení je shodná s náplní přednášek; rozdíl spočívá v tom, že na cvičení se prakticky procvičuje odpřednášená látka.

Charakter předmětu: převážně znalostní, rozvíjející získané znalosti do praktických dovedností.
 
Obsah předmětu:
1.První blok, 1. část: základní pojmy, principy činnosti počítače, se základními pojmy jako jsou instrukce, program, kompilátor, interpreter. Pojem složitosti algoritmu. (dotace 0/0)
2.První blok, 2. část: pojem algoritmu, jeho zápis a verifikace. Klasifikace programovacích paradigmat (imperativní, funkcionální, procedurální, deklarativní, logické). Pojem příkazu, návěští, funkce, události (triggeru), rozhraní. (dotace 0/0)
3.Druhý blok, 1. část: Úvod do jazyka JAVA význam a historie, základní pojmy, identifikátor, proměnná, přiřazení, datové typy, výrazy, operátory. Knihovny. Vstup a výstup. (dotace 0/0)
4.Druhý blok, 2. část: seznámení s vývojovým prostředím, kompilace, spuštění programů. Ladění: breakpoint, evaluace proměnných, ladicí tisky. (dotace 0/0)
5.Druhý blok, 3. část: Základní typy aplikací (konzolová aplikace, grafické rozhraní, paralelní a sériové algoritmy), výhody a nevýhody. Řízení běhu programu problém lineárního běhu programu, podmínkové konstrukce, cykly, výjimky (if, if else, switch, cyklus for, cyklus while, cyklus do-while, příkazy break a continue). (dotace 0/0)
6.Druhý blok, 4. část: Příklady a vzorové projekty. (dotace 0/0)
7.Druhý blok, 5. část: Zásady psaní zdrojového kódu užitečné rady, jak psát kód, přehlednost kódu, názvy proměnných, tříd a objektů. Rozdělení SW podle licencování. (dotace 0/0)
8.Třetí blok, 1. část: Základní datové struktury: pojem typu a proměnné. Jednoduché datové typy: ordinální (logická hodnota, char, int, výčtový typ), neordinální ( float, double, void, pointer) a zvláštní (pointer, soubor, void). (dotace 0/0)
9.Třetí blok, 2. část: Složitější datové typy (pole, řetězec, seznam, záznam, union), jednoduchý spojový seznam, dvojitý spojový seznam a práce s nimi. (dotace 0/0)
10.Třetí blok, 3. část: Strom, binární strom, AVL stromy, vyváženost, rotace stromu. (dotace 0/0)
11.Třetí blok, 4. část: Algoritmy pro vyhledávání indexové, postupné, metoda půlení, hashovací metody, kolize a jejich řešení (vnitřní, vnější). (dotace 0/0)
12.Třetí blok, 5. část: Algoritmy pro řazení (uspořádání) bublinkové, Shakesort, Shellsort, Quicksort. (dotace 0/0)
13.Shrnutí, opakování, náměty k vlastním úvahám. (dotace 0/0)
 
Výstupy z učení:
Odborné znalosti:
- Student umí:

- identifikovat a vysvětlit základní principy práce počítače,
- identifikovat a vysvětlit základní pojmy algoritmizace a psaní programů,
- vysvětlit a aplikovat základní algoritmy,
- popsat a využívat základní příkazy jazyka C.

Odborné dovednosti:

- Student umí:

- algoritmizovat slovně zadané praktické úlohy,
- vytvořit jednoduchou aplikaci v programovacím jazyce C, tuto aplikaci testovat a ladit,
- upravovat a rozšiřovat jednoduché aplikace v tomto jazyce.

Obecné způsobilosti:

- Student umí:

- orientovat se v terminologii IT,
- pracovat s materiály a získávat tak další informace pro zlepšení svých programátorských znalostí a dovedností
- využívat programovacího prostředí, pracovat s jeho novými verzemi.
 
Vstupní znalosti:
Tento předmět je úvodním předmětem do studia IT, nepředpokládají se žádné předběžné znalosti.
 
Způsob a metody výuky:
Studentům je doporučeno navštěvovat přednášky, na kterých budou vysvětleny jednotlivé pojmy a metody programování, a cvičení, na kterých budou mít možnost jednotlivé metody v praxi vyzkoušet a ověřit si tak jejich řádné pochopení. V případě nepochopení některých aspektů vyučované problematiky je možné požádat o konzultaci, a to přednostně prostřednictvím e-mailu. Docházka na přednášky a cvičení je dobrovolná, důležité je pochopení problematiky. Přesto docházku lze doporučit s ohledem na komplikovanost některých pasáží vyučované problematiky.
Je potřeba se zaměřit na získání rutiny v konstruování a psaní algoritmů. Proto je potřeba procvičit velké množství příkladů, od nejtriviálnějších po složité. Tomu odpovídá značná časová dotace na cvičení. Těžiště práce studentů proto je ve cvičeních.
 
Rámcové podmínky zápočtu:
Zápočet se uděluje bezprostředně před zkouškou. Podmínky pro zápočet a zkoušku jsou podrobně probrány v Tématu 00, které je součástí studijních materiálů. Studijní materiály jsou k dispozici pro stažení.
 
Rámcové podmínky zkoušky:
Podmínkou pro zkoušku je zápočet. Zápočet se uděluje bezprostředně před zkouškou. Podmínky pro zápočet a zkoušku jsou podrobně probrány v Tématu 00, které je součástí studijních materiálů. Studijní materiály jsou k dispozici pro stažení.
 
Studijní zátěž:
DruhPrezenční studiumKombinované studium
Účast na přednáškách/tutoriálech26 h8 h
Účast na cvičeních39 h0 h
Příprava na přednášky/tutoriály0 h16 h
Příprava a prezentace seminární práce/referátu0 h28 h
Příprava na souhrnný zápočtový test0 h13 h
Příprava na zkoušku13 h13 h
Celkem78 h78 h
 
Literatura:
Základní:
HEROUT, P. JAVA rozšířené vydání zahrnuje změny od Java 5. Nakladatelství KOPP, 2007. ISBN 978-80-7232-323-4.
KNUTH, D., E. Umění programování - Základní algoritmy. Praha: Computer Press, 2008. 0 ISBN 80-251-2025-5.
FAIN, Y. The Java Tutorial for the Real World. Smart Data Processing, 2002. ISBN 0-9718439-0-2.
CORMEN, T H. -- LEISSERSON, C T. -- RIVEST, R L. -- STEIN, C. Introduction to Algorithms. MIT Printing, 2000. ISBN 007013151.
WWW.ALGORITMY.NET. www.algoritmy.net. www.algoritmy.net.

Doporučená:
HTTP://78.80.64.226/. http://78.80.64.226/. http://78.80.64.226/.
HTTP://WWW.TUTORIALSPOINT.COM/JAVA/INDEX.HTM. http://www.tutorialspoint.com/java/index.htm. http://www.tutorialspoint.com/java/index.htm.
WIRTH, N. Algoritmy a štruktúry údajov. Bratislava: Alfa, 1989. 0 ISBN 80-05-00153-3.
THOMAS H.C., LEISERSON, C., E., RIVEST, R., L., STEIN, C. Introduction to Algorithms. Massachusetts Institut of Technology, 2009. 0 ISBN 978-0-262-03384-8.


Poslední změnu provedla Mgr. Nikola Najzarová dne 16. 8. 2019.

Typ výstupu: