Detail předmětu

Programování v Python

FSI-9PVP Ak. rok: 2027/2028 Letní semestr

Předmět se zaměřuje na pokročilé programování v jazyce Python s důrazem na vývoj podpůrných vědeckých a výzkumných aplikací. Zahrnuje pokročilé programovací techniky, návrh softwarové architektury, automatizaci výpočetních úloh, paralelní a asynchronní programování, optimalizaci výkonu a testování softwaru. Pozornost je věnována také moderním postupům vývoje, distribuce a diagnostiky aplikací a zajištění reprodukovatelnosti vědeckých výpočtů.

Vše se děje s podporou AI.

Jazyk výuky

čeština

Garant předmětu

Vstupní znalosti

Základy programování na úrovni kurzu 1IN (Informatika) a základní přehled v použití jazyka Python ve svém oboru.

Způsob zakončení předmětu a pravidla hodnocení studentů

Aktivní účast a zvládnutí zadaného problému v požadované kvalitě.
Výuka běží podle týdenních plánů. Účast na cvičeních je povinná. Způsob nahrazení zameškaných cvičení je plně v kompetenci vyučujícího.

Učební cíle

Cílem předmětu je rozvinout schopnosti studentů v oblasti pokročilého programování v jazyce Python se zaměřením na návrh, implementaci a správu podpůrných vědeckých a výzkumných aplikací. Studenti se naučí využívat pokročilé programovací techniky, navrhovat modulární a udržovatelný software, automatizovat výpočetní úlohy, optimalizovat výkon aplikací a zajišťovat jejich spolehlivost, testovatelnost a reprodukovatelnost výsledků, včetně vývoje s AI.

Použití předmětu ve studijních plánech

Program D-FIN-P: Fyzikální inženýrství a nanotechnologie, doktorský, povinně volitelný

Program D-APM-P: Aplikovaná matematika, doktorský, povinně volitelný

Typ (způsob) výuky

 

Přednáška

20 hod., nepovinná

Osnova

Všechna výuka využívá v různé míře podporu AI.




  • Pokročilé programovací techniky v Pythonu. Dekorátory, generátory, iterátory, kontextové manažery, funkcionální programování, typové anotace, generické typy a reflexe.




  • Návrh a architektura softwarových aplikací. Objektově orientovaný návrh, návrhové vzory, abstraktní rozhraní, modularizace, správa závislostí, tvorba vlastních knihoven a refaktorizace kódu.




  • Automatizace a řízení běhu programů. Metaprogramování, dynamické načítání modulů, tvorba CLI nástrojů, parametrizace aplikací, řízení výpočetních úloh a automatizace pracovních postupů.




  • Výkonné a spolehlivé programování. Paralelní a asynchronní programování, optimalizace paměti, profilování, zpracování výjimek, automatizované testování a ladění aplikací.




  • Vývoj a provoz vědeckého softwaru. Verzování, balíčkování a distribuce aplikací, automatizace sestavení a testování, logování, diagnostika a reprodukovatelnost výpočetních experimentů.