Python v aplikované vědě (FSI-T0P)

Akademický rok 2020/2021
Garant: Ing. Matěj Týč, Ph.D.  
Garantující pracoviště: ÚFI všechny předměty garantované tímto pracovištěm
Jazyk výuky: čeština
Cíle předmětu:
Cílem kursu je seznámit studenty s programováním v jazyce Python s využitím ekosystému svobodného software. Po jeho absolvování budou studenti schopni psát programy pomocí moderních postupů, mezi něž patří využití návrhových vzorů, softwarové testování a tvorba dokumentace. Studenti budou připraveni na řešení typických fyzikálně-inženýrských úloh zahrnující zpracování a vizualizaci dat.
Výstupy studia a kompetence:
Studenti budou v rámci kurzu řešit dílčí úlohy reprezentující typické problémy týkající se zpracování dat a pracovat na závěrečném projektu. Na základě tohoto budou schopni efektivně využít rozvíjející se ekosystém okolo programovacího jazyka Python k řešení reálných úkolů.
Prerekvizity:
Základní pojmy procedurálního programování - proměnná, funkce (parametr, návratová hodnota, předávání hodnotou vs předávání odkazem), datové typy, koncept práce se soubory (otevírání, zápis, kódování), znalost formátování řetězců.
Obsah předmětu (anotace):
Obsahem kursu je řešení modelových úloh, na kterých budou ilustrovány postupy softwarového inženýrství vedoucí k jejich řešení. Studenti budou seznámeni s principy technik test-driven development, code review a naučí se, jak strukturovat a dokumentovat svůj kód tak, aby se vzrůstající složitostí neztrácel na použitelnosti. Studenti mohou pro práci využívat grafické prostředí Enthought Canopy (k dispozici pro MS Windows, Mac OSX i Linux).
Metody vyučování:
Předmět je vyučován formou přednášek, které mají charakter výkladu základních principů a teorie dané disciplíny. Cvičení je zaměřeno na praktické zvládnutí látky probrané na přednáškách.
Způsob a kritéria hodnocení:
Podmínkou udělení zápočtu je vypracování samostatného závěrečnoho projektu. Téma projektu je zadáno v průběhu semestru po vzájemné dohodě. Výsledky řešení zadaných příkladů budou předány v elektronické formě. Při udělení zápočtu musí student prokázat porozumění a zdůvodnit použitý způsob řešení.
Vymezení kontrolované výuky a způsob jejího provádění a formy nahrazování zameškané výuky:
Přítomnost na cvičení je povinná a je sledována vyučujícím. Způsob nahrazení zmeškané výuky ve cvičení bude stanovena vyučujícím na základě rozsahu a obsahu zmeškané výuky.
Typ (způsob) výuky:
    Přednáška  13 × 1 hod. nepovinná                  
    Cvičení s počítačovou podporou  13 × 1 hod. povinná                  
Osnova:
    Přednáška Seznámení s koncepty jazyka Python a s ekosystémem okolo něj
Struktura softwarového projektu v Pythonu, struktura modulů a balíčků.
Proměnné, základní datové typy, funkce, předávání hodnotou / odkazem
Úvod do oběktově orientovaného programování (OOP)
Úvod do návrhových vzorů, použití vzoru "strategie".
Úvod to testování a do vizualizace dat
Prohloubení znalostí OOP, návrhové vzory "továrna", "dekorátor"
Tvorba dokumentace, návrhové vzory "fasáda" a "adaptér".
Použití modulů třetích stran.
Tvorba grafických (GUI) aplikací, návrhové vzory "pozorovatel" a MVC
Tvorba GUI aplikací, návrhový vzory "stav".
Záludnosti jazyka Python
    Cvičení s počítačovou podporou Cvičný projekt Hello World
Praktická tvorba formálně správného Python projektu
Cvičný projekt Vrhací kostka
Vrhací kostka - objektové rozhraní
Vrhací kostka - tvorba falešné kostky
Vrhací kostka - testování funkčnosti, odhalení falešných kostek
Vrhací kostka - zobecnění
Simulace deskové hry
Používáme Google Deep Dream
GUI projekt
GUI projekt
praktické ukázky
Literatura - základní:
1. Summerfield, M.: Python 3 - Výukový kurz, COMPUTER PRESS, 2012
2. Burris, E.: Programming in the Large with Design Patterns, Pretty Print Press, 2012
3. Scipy lecture notes: http://www.scipy-lectures.org/
Zařazení předmětu ve studijních programech:
Program Forma Obor Spec. Typ ukončení   Kredity     Povinnost     St.     Roč.     Semestr  
B3A-P prezenční studium B-FIN Fyzikální inženýrství a nanotechnologie -- 2 Volitelný 1 3 L