Předmět: Algoritmizace a programování 2

» Seznam fakult » FM » MTI
Název předmětu Algoritmizace a programování 2
Kód předmětu MTI/ALG2
Organizační forma výuky Přednáška + Cvičení
Úroveň předmětu Bakalářský
Rok studia nespecifikován
Semestr Letní
Počet ECTS kreditů 7
Vyučovací jazyk Čeština
Statut předmětu Povinný
Způsob výuky Kontaktní
Studijní praxe Nejedná se o pracovní stáž
Doporučené volitelné součásti programu Není
Vyučující
  • Královcová Jiřina, doc. Ing. Ph.D.
  • Vitvarová Jana, Ing. Ph.D.
Obsah předmětu
Základní charakteristika: Předmět prohlubuje znalosti programování v programovacím jazyce vyšší úrovně. Studenti se seznámí s problematikou objektově orientovaného návrhu, algoritmizace úloh, zpracování dat v externích diskových souborech. Praktické ukázky a cvičení jsou vedeny v programovacím jazyce Java. Důraz je kladen na získání znalostí a dovedností pokrývajících celý cyklus vývoje programů zahrnující prvky jako jsou: analýza, návrh, implementace, ladění, testování, dokumentace. Témata přednášek: 1. Objektové programování, základní vlastnosti. Objektový přístup k programování, objektový návrh. Formální zápis základního objektového návrhu - class diagram. Zapouzdření, dědičnost, polymorfismus. 2. Základní aspekty vývoje programů, fáze vývoje. Verzování. Seznámení se základními principy verzovacích systémů. 3. Chyby v programu. Výjimky. Typy výjimek. Zpracování a obsluha výjimek. Definování vlastních výjimek. Logování. 4. Testování programu. Unit testy. 5. Manipulace s diskovými soubory a adresáři. Prostředky jazyka pro vytváření a správu souborů a adresářů z kódu programu. Prostředky v balících java.io a java.io. 6. Proudy. Systém proudů pro čtení a zápis diskových souborů. Systém tříd a rozhraní. Abstraktní třídy a prostředky, základní třídy proudů pro čtení a zápis diskových souborů pro fyzický přesun dat. 7. Čtení a zápis textových souborů. Zpracování souboru po znacích. Formátovaný vstup a výstup. Kódování souboru, čtení a zápis v různém kódování. Změna kódování při vstupně/výstupních operacích na konzoli. 8. Čtení a zápis binárních souborů. Přístup po bytech. Problematika čtení/zápisu vícebytových hodnot. Soubory s náhodným přístupem 9. Rekurze v kódu - rekurzivní metody. Základní ukázky. Příklady efektivního využití při řešení některých typů úloh. Java Collection framework - základní přehled tříd a rozhraní a jejich význam. Ukázka použití. 10. Kontejnerové třídy a dynamické datové struktury. 11. Ukázka implementace vlastní dynamické datové struktury. 12. Využití "nesouborových" proudů. Zpracování souborů vybraných typů pomocí prostředků jazyka Java: ZIP, CSV, JSON, XML, YAML soubory. 13. Instruovaná ukázka řešení komplexnější úlohy demonstrující využití objektového přístupu. Návrh a implementace obecného systému pro řešení definované třídy úloh a využití tohoto systému pro řešení konkrétní úloh/úloh. Při řešení úlohy je demonstrován objektový návrh, návrh rozhraní; využívá se dědičnost, polymorfismus, základních kontejnerové třídy, genericita, vytvoření stromové struktury. Řešení konkrétní úlohy implementací navrženého rozhraní. 14. Instruovaná ukázka řešení komplexnější úlohy - dokončení. Náplň cvičení: 1. Objektový návrh. Zapouzdření dat. 2. Dědičnost a polymorfismus. 3. Rozhraní a jeho využití. 4. Využití výjimek, ošetření kódu. Logování. Praktické využití verzovacího systému. 5. Testování programu. Příprava a realizace testů. Ukázka TDD (Test Driven Development) přístupu. 6. Diskové adresáře a soubory. Procházení adresářů. 7. Základní manipulace s diskovými soubory - zápis, čtení po znacích, po bytech. Využití základních tříd proudů. 8. Textové soubory. Zpracování textu, formátovaná data. Čtení a zápis v různém kódování. 9. Binární soubory a jejich zpracování. 10. Náhodný přístup k souboru. Základní operace nad diskovým souborem - přidání, čtení, editace záznamů. 11. Využití rekurze v kódu. 12. Zpracování vybraných souborových formátů s využitím prostředků jazyka. 13. Více vláken v jediné aplikaci. 14. Zápočtový test, předání seminárních prací.

Studijní aktivity a metody výuky
Monologický výklad (přednáška, prezentace, vysvětlování), Skupinová konzultace, Cvičení, E-learning, Prezentace práce studentů, Samostudium studentů
  • Domácí příprava na výuku - 6 hodin za semestr
Výstupy z učení
Předmět prohlubuje znalosti programování v programovacím jazyce vyšší úrovně. Studenti se seznámí s postupy v oblasti objektově orientovaného programování, algoritmizace úloh a realizace algoritmů v programovacím jazyce Java. Algoritmy jsou směrovány do oblastí: zpracování textových řetězců, zpracování diskových souborů, numerické metody, realizace a procházení seznamů a stromových struktur.
Student získá znalosti v oblasti objektově orientovaného programování, algoritmizace úloh a realizace algoritmů v programovacím jazyce Java. Algoritmy jsou směrovány do oblastí: zpracování textových řetězců, zpracování diskových souborů, numerické metody, realizace a procházení seznamů a stromových struktur.
Předpoklady
Základní znalost algoritmizace, znalost základních konstrukcí jazyka Java. Zápočet z předmětu ALG1.
MTI/ALG1

Hodnoticí metody a kritéria
Kombinovaná zkouška, Praktická zkouška

Účast na cvičeních. Realizace zadané samostatné práce. Zápočtové testy. Složení zkoušky.
Doporučená literatura
  • BLOCH Joshua. Effective java. Addison-Wesley, 2018. ISBN 978-01-3468-599-1.
  • CORMEN Thomas H. Introduction to algorithms. ISBN 978-02-6203-384-8.
  • HEROUT Pavel. Java - bohatství knihoven. České Budějovice, 2008. ISBN 978-80-7232-368-5.
  • HEROUT Pavel. Testování pro programátory. ČEské Budějovice, 2016. ISBN 978-80-7232-481-1.
  • HEROUT Pavel. Učebnice jazyka Java. Ćeské Budějovice, 2010. ISBN 978-80-7232-398-2.
  • PECINOVSKÝ Rudolf. Návrhové vzory, 33 vzorových postupů pro objektové programování. Brno, 2007. ISBN 978-80-251-1582-4.
  • SCHILDT Herbert. Java 7: výukový kurz. Brno, 2012. ISBN 978-80-251-3748-2.


Studijní plány, ve kterých se předmět nachází
Fakulta Studijní plán (Verze) Kategorie studijního oboru/specializace Doporučený ročník Doporučený semestr
Fakulta: Fakulta mechatroniky, informatiky a mezioborových studií Studijní plán (Verze): Aplikované vědy v inženýrství (2019) Kategorie: Speciální a interdisciplinární obory 1 Doporučený ročník:1, Doporučený semestr: Letní