Vědecké programování v Pythonu
Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
---|---|---|---|---|
12PYTH | Z | 2 | 0+2 | česky |
- Garant předmětu:
- Přednášející:
- Cvičící:
- Předmět zajišťuje:
- katedra laserové fyziky a fotoniky
- Anotace:
-
Cílem tohoto kurzu je osvojení základů moderního programovacího jazyka Python se zaměřením na vědecké výpočty. Důraz je kladen na efektivní řešení reálných problémů. Výuka probíhá interaktivně a formou praktických cvičení, jejichž obsah může být přizpůsoben obsahu dalších předmětů nebo tématům studentských prací. Studenti jsou rovněž zapojováni do probíhajícího výzkumu. V úvodní části kurzu se studenti seznámí se základními vlastnostmi jazyka Python - od základních typů až po objektově orientované nebo funkcionální programování. Větší část kurzu je věnována specifickým vlastnostem Pythonu pro vědecké programování. Prezentovány jsou hlavní numerické knihovny NumPy, SciPy a grafická knihovna Matplotlib. Ukážeme, jak tvořit efektivní kód, jak lze Python kombinovat s jinými jazyky, jaké nástroje využívat.
- Požadavky:
-
Povinné: Není požadováno předchozí absolvování žádného konkrétního předmětu
Doporučené: Základní znalost nějakého programovacího jazyka (C/C++, Fortran, Matlab, Java, Pascal apod.), základy numerických metod
- Osnova přednášek:
-
1.Úvod do Pythonu - základní vlastnosti a nástroje, konvence, datové typy, podmínky, funkce
2.Kontejnery a (im)mutable typy, iterátory, generátory
3.Funkcionální a objektově orientované programování, moduly
4.Výjimky, unit testy, Python debugger, základní moduly
5.Kompletní projekt v Pythonu - konvence, dobré praktiky, dostupné nástroje, dokumentace (Sphinx), distribuce balíků
6.Úvod do NumPy - třídy ndarray, základní operace, polynomy
7.Grafický výstup - Matplotlib, čtení a zápis z/do souborů
8.Pokročilá práce s NumPy - specifika ndarray, další třídy (matrix, masked array), lineární algebra
9.Úvod do SciPy a SymPy
10. Optimalizace numerických výpočtů - vektorizace, profilování, Cython, f2py
11. Paralelní výpočty - vlákna, procesy, message passing
- Osnova cvičení:
-
Samostatné, případně skupinové programování konkrétních úloh s použitím získaných znalostí. Součástí cvičení bude i použití větších simulačních kódů a knihoven, případně práce na aktivně řešeném výzkumném projektu. Studentům bude rovněž dán prostor pro řešení úloh spojených s další výukou nebo jejich bakalářskou či diplomovou prací.
- Cíle studia:
-
Znalosti: Základy jazyka Python, vlastnosti Pythonu pro řešení vědeckých úloh, přehled o dostupných nástrojích.
Schopnosti: Efektivní návrh a implementace vědecké úlohy v jazyce Python, schopnost vyhledat a použít dostupné nástroje.
- Studijní materiály:
-
Povinná literatura:
1.V. Haenel, E. Gouillart, G. Varoquaux: Python Scientific Lecture Notes, http://scipy-lectures.github.com
2.H.P. Langtangen: A Primer on Scientific Programming with Python
Doporučená literatura:
3.H.P. Langtangen: Python Scripting for Computational Science
4.M. Pilgrim: Dive Into Python 3, http://getpython3.com/diveintopython3
5.Z.A. Shaw: Learn Python The Hard Way, http://learnpythonthehardway.org
- Poznámka:
-
od 22/23 jen v LS
- Další informace:
- http://server.ipp.cas.cz/~urban/PythonLectures
- Pro tento předmět se rozvrh nepřipravuje
- Předmět je součástí následujících studijních plánů:
-
- BS Matematické inženýrství - Matematické modelování (volitelný předmět)
- BS Matematické inženýrství - Matematická fyzika (volitelný předmět)
- BS Matematické inženýrství - Aplikované matematicko-stochastické metody (volitelný předmět)
- BS Informatická fyzika (volitelný předmět)
- BS Aplikace softwarového inženýrství (volitelný předmět)
- BS Aplikovaná informatika (volitelný předmět)
- BS jaderné inženýrství B (volitelný předmět)
- BS Jaderné inženýrství C (volitelný předmět)
- BS Dozimetrie a aplikace ionizujícího záření (volitelný předmět)
- BS Experimentální jaderná a částicová fyzika (volitelný předmět)
- BS Inženýrství pevných látek (volitelný předmět)
- BS Diagnostika materiálů (volitelný předmět)
- BS Fyzika a technika termojaderné fúze (volitelný předmět)
- BS Fyzikální elektronika (volitelný předmět)
- BS Jaderná chemie (volitelný předmět)
- Fyzikální inženýrství - Počítačová fyzika (PS)
- Aplikace informatiky v přírodních vědách (volitelný předmět)
- Aplikované matematicko-stochastické metody (volitelný předmět)
- Jaderná a částicová fyzika (volitelný předmět)
- Matematické inženýrství - Matematické modelování (volitelný předmět)
- Kvantové technologie (volitelný předmět)
- Fyzikální inženýrství - Počítačová fyzika (PS)
- Kvantové technologie (volitelný předmět)
- Jaderná a částicová fyzika (volitelný předmět)