|
Vyučující
|
-
Váša Libor, prof. Ing. Ph.D.
|
|
Obsah předmětu
|
1. Algoritmické myšlení, abstraktní datové typy. Vývojový diagram. Výpočetní složitost. 2. Zásobník, fronta, řešení úloh. 3. Prioritní fronta, řešení úloh. 4. Seznam, slovník, invertovaný seznam, řešení úloh. 5. Řazení, vyhledávání, třídění a řešení úloh. Mediány, kvantily. 6. Rozptylové tabulky se zřetězením. Hashovací funkce, řešení úloh 7. Stromy, stromové struktury, základní pojmy. 8. Použití stromů pro řešení úloh. 9. Grafy a grafové struktury. 10. Použití grafů pro řešení úloh. 11. Množinové algoritmy - generování permutací, podmnožin, řešení úloh 12. Textové algoritmy, řešení úloh. 13. Rekurze, příklady rekurze, řešení úloh.
|
|
Studijní aktivity a metody výuky
|
- Kontaktní výuka
- 52 hodin za semestr
- Příprava na dílčí test [2-10]
- 8 hodin za semestr
- Příprava na zkoušku [10-60]
- 30 hodin za semestr
- Projekt individuální [40]
- 39 hodin za semestr
|
| Předpoklady |
|---|
| Odborné znalosti |
|---|
| rozumět jednoduchým programům zapsaným v imperativním programovacím jazyce (Java, python) |
| rozumět významu a použití základních řídících struktur imperativního programování (cykly, podmínky) |
| rozumět základům reprezentace dat v počítači (koncept proměnné, pole, datové typy) |
| Odborné dovednosti |
|---|
| psát jednoduché programy v imperativním programovacím jazyce |
| Obecné způsobilosti |
|---|
| bc. studium: efektivně využívá různé strategie učení k získání a zpracování poznatků a informací, hledá a rozvíjí účinné postupy ve svém učení, |
| bc. studium: zvažuje možné klady a zápory jednotlivých variant řešení, včetně posouzení jejich rizik a důsledků, |
| Výsledky učení |
|---|
| Odborné znalosti |
|---|
| orientovat se v základních datových strukturách (zásobník, fronta, tabulka, graf, strom) |
| popsat rozhraní základních datových struktur |
| orientovat se v základních algoritmech pro zpracování množin (generování permutací apod.) |
| orientovat se v základních algoritmech pro zpracování textových řetězců (vyhledání podřetězce apod.) |
| porozumět způsobu zápisu a vykonání rekurzivního programu |
| Odborné dovednosti |
|---|
| využívat základní datové struktury pro řešení běžných programátorských úkolů |
| samostatně navrhovat algoritmy pro řešení běžných programátorských úloh |
| identifikovat základní programátorské vzory v běžných úlohách |
| číst jednoduché programy využívající základní datové struktury a porozumět jejich funkci |
| Obecné způsobilosti |
|---|
| bc. studium: samostatně a odpovědně se na základě rámcového zadání rozhodují v souvislostech jen částečně známých, |
| Vyučovací metody |
|---|
| Odborné znalosti |
|---|
| Přednáška založená na výkladu, |
| Přednáška s demonstrací, |
| Přednáška s diskusí, |
| Odborné dovednosti |
|---|
| Cvičení (praktické činnosti), |
| Obecné způsobilosti |
|---|
| Přednáška založená na výkladu, |
| Hodnotící metody |
|---|
| Odborné znalosti |
|---|
| Písemná zkouška, |
| Test, |
| Průběžné hodnocení, |
| Odborné dovednosti |
|---|
| Demonstrace dovedností (praktická činnost), |
| Obecné způsobilosti |
|---|
| Písemná zkouška, |
|
Doporučená literatura
|
-
Lafore, Robert. Data structures & algorithms in Java. Corte Madera : Waite Group Press, 1998. ISBN 1-57169-095-6.
-
Mareš, Martin; Valla, Tomáš. Průvodce labyrintem algoritmů. 1. vydání. 2017. ISBN 978-80-88168-19-5.
-
Ryant, Ivan. Algoritmy a datové struktury objektově. Vydání první. 2017. ISBN 978-80-270-1660-0.
|