Logo ČVUT
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE
STUDIJNÍ PLÁNY
2018/2019

Vědecké programování v Pythonu

Přihlášení do KOSu pro zápis předmětu Zobrazit rozvrh
Kód Zakončení Kredity Rozsah Jazyk výuky
12PYTH Z 2 0+2 česky
Přednášející:
Jakub Urban
Cvičící:
Pavel Váchal (gar.), Jakub Urban
Předmět zajišťuje:
katedra fyzikální elektroniky
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:
Další informace:
http://server.ipp.cas.cz/~urban/PythonLectures
Rozvrh na zimní semestr 2018/2019:
Rozvrh není připraven
Rozvrh na letní semestr 2018/2019:
Rozvrh není připraven
Předmět je součástí následujících studijních plánů:
Platnost dat k 23. 5. 2019
Aktualizace výše uvedených informací naleznete na adrese http://bilakniha.cvut.cz/cs/predmet2859806.html