Pokročilé programovací techniky

Studijní plán: Aplikovaná informatika - kombi, platný od ZS 2019/2020

Předmět Pokročilé programovací techniky (PPT)
Garantuje Katedra technických studií (KTS)
Garant Ing. Marek Musil
Jazyk česky
Počet kreditů 4
Prezenční studium
Přednáška1 h
Cvičení2 h
Kombinované studium
Cvičení12 h
Studijní plán Typ Sem. Kred. Ukon.
Aplikovaná informatika - kombi, platný od ZS 2019/2020 PV 6 4 kr. KZ
Aplikovaná informatika - kombi, platný od ZS 2021/2022 PV 6 4 kr. KZ
Aplikovaná informatika - platný od ZS 2019/2020 PV 6 4 kr. KZ
Aplikovaná informatika - platný od ZS 2021/2022 PV 6 4 kr. KZ
Erasmus - Aplikovaná informatika - příjezd na krátkodobý studijní pobyt PV 1 4 kr. KZ

Anotace

Předmět se zaměřuje na plné pochopení role programátora ve vývojovém týmu. Student si především ujasní vhodné praktiky a pravidla pro maximalizaci vlastního programátorského výkonu. Od plného využití vlastností vybraného IDE přes pravidla systematické restrukturalizace kódu až k pochopení smyslu kontinuální integrace. Současně s tím budou také nastíněny techniky a postupy pro získání plné kontroly nad vyvíjenou aplikací.

Výuková témata předmětu nejsou vázána na konkrétní programovací jazyk. Především na cvičení jsou řešeny praktické problémy implementované napříč spektrem používaných programovacích jazyků (např. Java, Python, C#, C++). Cvičení předmětu jsou koncipována jako týmová práce a diskuze nad řešením mezi jednotlivými týmy.

Cíle výuky

Znalosti: Student zná principy a techniky extrémního programování, zná vývojová prostředí pro vývoj aplikací, zná datové kolekce a jejich vnitřní implementace. Student zná principy testování a zná jednotlivé typy testů, zná nástroje xUnit pro implementaci testů. Student zná význam dokumentačních komentářů a nástroje pro generování dokumentace. Student zná principy dynamického programování. Student zná podstatu návrhových vzorů, kriteriální dělení návrhových vzorů a zástupce jednotlivých kategorií. Student zná techniky vytváření programových modulů a knihoven, zná nástroje používané pro předávání informace mezi vrstvami aplikace. 
 
Dovednosti: Student umí popsat principy a techniky extrémního programování, umí vyjmenovat jednotlivé techniky a umí je aplikovat v řadě reálných příkladů (aplikací). Student umí používat nástroj xUnit pro implementaci testů, umí vyjmenovat a popsat jednotlivé typy testů, umí využít jednotlivé typy testů v reálných problémech programování. Student umí použít dokumentační komentáře, umí aplikovat nástroje generování dokumentace. Student umí používat programové moduly a knihovny, umí implementovat knihovnu a využít nástrojů mechanismu výjimek („exceptions”) pro předávání informace mezi vrstvami aplikace. Student umí programovat proti rozhraní a vytvářet moduly nezávislé na uživatelském rozhraní aplikace. Student je schopen implementovat problém hromadného zpracování dat, načíst data seznamů a naplnit datovou strukturu, zpracovat data a uložit výsledky kategorizace do souboru textového nebo souboru xml.  
 
 
Obecné způsobilosti: Student má přehled o extrémního programování a je schopen využít techniky extrémního programování při realizaci projektu a také jako plnohodnotný člen týmu. Student je schopen pracovat v týmu a uplatnit se jako plnohodnotný člen týmu při realizaci projektu. Student umí používat nástroje určené pro vývoj aplikací.  Student je schopný získané znalosti prezentovat a obhájit.

Struktura předmětu

  • Principy a techniky extrémního programování 
  • Pokročilá práce s IDE, pracovní prostředí, GIT 
  • Vývoj aplikace s GUI, vrstvy aplikace, předávání dat, obsluha chybových stavů 
  • Mechanismus výjimek (exceptions) – praktické uplatnění 
  • Pokročilé datové struktury, jejich implementace a využití 
  • Datové kolekce programovacích jazyků, implementace složitých datových struktur (seznam seznamů) 
  • Hromadné zpracování dat – metodika, postupy, ošetření chyb, logování 
  • XML 
  • Dokumentace kódu, dokumentační komentáře 
  • Refaktoring a generování kódu 
  • Ladění aplikace, krokování, ladící výstupy 
  • Testování jednotek, testy řízený vývoj, testování UI 
  • Integrační testy, kontinuální integrace 
  • Čistý kód 
  • Programování v páru 
  • Návrhové vzory, programování proti rozhraní 
  • Knihovny 
  • Dynamické programování 
  • Projekt. 

Sylabus

  • Principy a techniky eXtrémního Programování
  • Vývojová prostředí jazyka, nástroje pro vývoj aplikací - ladění, testování
  • Pokročilá práce s IDE, pracovní prostředí
  • Přístupy objektového modelování
  • Dynamické programování
  • Vrstvy aplikace, moduly, knihovny - rozhraní knihoven, programování proti rozhraní
  • Pokročilé (složité) datové struktury, implementace, inicializace a využití
  • Datové kolekce programovacích jazyků (Python, Java, C#, C++)
  • Hromadné zpracování dat - metodika, postupy, ošetření chyb, logování, XML
  • Výjimky (Exceptions), mechanismus vyjímek a jejich praktické využití
  • Dokumentace kódu, dokumentační komentáře
  • Refaktoring a generování kódu, čistý kód
  • Ladění aplikace, krokování, ladící výstupy
  • Testování jednotek, testy řízený vývoj, druhy testů
  • Integrační testy, kontinuální integrace
  • Testování UI, vývoj aplikace s GUI
  • Návrhové vzory (Design Patterns)
  • Programování v páru

Doporučená literatura

  • BECK, Kent. Extrémní programování. Praha: Grada, 2002. Moderní programování. ISBN 80-247-0300-9. (povinná)
  • BECK, Kent. Programování řízené testy. Praha: Grada, 2004. Moderní programování. ISBN 80-247-0901-5. (povinná)
  • BECK, K. Extreme programming eXplained: embrace change. Reading, MA: Addison-Wesley, 2000, 190 p. ISBN 02-016-1641-6. (povinná)
  • ROY, Uttam K. Advanced Java Programming. 1. vyd. India: Oxford Unviersity Press, 2015, ISBN 978-0-19-945550-8. (doporučená)
  • HEROUT, Pavel Testování pro programátory. České Budějovice: Kopp, 2016. ISBN 978-80-7232-481-1. (doporučená)
  • STEPHENS, Matt a Doug ROSENBERG. Testování softwaru řízené návrhem. Brno: Computer Press, 2011. ISBN 978-80-251-3607-2. (doporučená)
  • HEROUT, Pavel Java a XML. České Budějovice: Kopp, 2007. ISBN 978-80-7232-307-4. (doporučená)

^ nahoru ^