PředmětyPředměty(verze: 945)
Předmět, akademický rok 2023/2024
   Přihlásit přes CAS
Programování pro fyziky - NOFY056
Anglický název: Programming for Physicists
Zajišťuje: Kabinet výuky obecné fyziky (32-KVOF)
Fakulta: Matematicko-fyzikální fakulta
Platnost: od 2023
Semestr: zimní
E-Kredity: 5
Rozsah, examinace: zimní s.:2/2, Z+Zk [HT]
Počet míst: neomezen
Minimální obsazenost: neomezen
4EU+: ne
Virtuální mobilita / počet míst pro virtuální mobilitu: ne
Stav předmětu: vyučován
Jazyk výuky: čeština
Způsob výuky: prezenční
Způsob výuky: prezenční
Další informace: http://utf.troja.mff.cuni.cz/~ledvinka
http://geo.mff.cuni.cz/~lh/NOFY056
Garant: RNDr. Ladislav Hanyk, Ph.D.
doc. Mgr. Tomáš Ledvinka, Ph.D.
Mgr. Michal Belda, Ph.D.
Je neslučitelnost pro: NMUE022
Ve slož. prerekvizitě: NPRG041, NPRG041, NPRX041
Anotace -
Poslední úprava: Mgr. Hana Kudrnová (05.05.2023)
Výchozí kurz programování pro studenty fyziky. Základy jazyka Python. Řešení problémů za použití metodiky strukturovaného procedurálního programování. Předvedení vybraných numerických algoritmů. Cvičení nad počítači pro nabývání praktických dovedností, od přípravy dat přes jejich numerické zpracování po vizualizaci výsledků.
Cíl předmětu -
Poslední úprava: doc. Mgr. Tomáš Ledvinka, Ph.D. (03.05.2023)

Student schopný vyjádřit myšlenku pomocí programovacího jazyka (např. Python, C, Fortran).

Podmínky zakončení předmětu
Poslední úprava: RNDr. Ladislav Hanyk, Ph.D. (09.10.2017)

Pro absolvování předmětu je předepsán zápočet i zkouška.

Pro získání zápočtu je třeba zpracovat v požadovaném rozsahu práci zadanou vyučujícím (tj. vedoucím cvičení), obvykle jednu rozsáhlejší zápočtovou úlohu a/nebo několik průběžně zadávaných jednodušších úloh. Součástí hodnocení může být i ocenění účasti na cvičeních, splnit zápočet je však možné odevzdáním požadované práce i bez účasti na cvičeních. Vyučující může stanovit bodový systém, se kterým seznámí studenty na začátku semestru.

Konání zkoušky není podmíněno získáním zápočtu ani účastí na přednáškách.

Literatura -
Poslední úprava: doc. Mgr. Tomáš Ledvinka, Ph.D. (03.05.2023)
  • Poznámky k přednáškám: http://utf.troja.mff.cuni.cz/~ledvinka, http://geo.mff.cuni.cz/~lh/NOFY056
  • Pecinovský R., Začínáme programovat v jazyku Python, Grada, 2020
  • Wang J., Wang A., Introduction to Computation in Physical Sciences - Interactive Computing and Visualization with Python, Springer, 2023
  • Dokumentace: https://www.python.org/doc/, https://numpy.org/doc/, https://docs.scipy.org/doc/scipy/
  • Herout P., Učebnice jazyka C, Kopp, 2010
  • Moler C., Numerical Computing with MATLAB, MathWorks, 2004, https://www.mathworks.com/moler.html
  • Press W. H., Teukolsky S. A., Vetterling W. T., Flannery B. P., Numerical Recipes in C/Fortran: The Art of Scientific Computing, Second Edition, Cambridge University Press, 1992, http://www.nrbook.com/a/bookcpdf.php, http://www.nrbook.com/a/bookfpdf.php

Metody výuky -
Poslední úprava: HANYK/MFF.CUNI.CZ (12.04.2008)

Přednáška + praktická cvičení

Požadavky ke zkoušce
Poslední úprava: RNDr. Ladislav Hanyk, Ph.D. (09.10.2017)

Konání zkoušky není podmíněno získáním zápočtu ani účastí na přednáškách. Zkouška má písemnou a ústní část, student musí úspěšně vykonat obě části. Během písemné části student prokazuje schopnost algoritmizace několika drobnějších úloh pomocí vybraného programovacího jazyka, v ústní části je prověřena studentova znalost látky vyučované na přednáškách.

Sylabus -
Poslední úprava: doc. Mgr. Tomáš Ledvinka, Ph.D. (03.05.2023)
Strukturované procedurální programování
Programovací jazyky, zdrojový text, spouštění programu, příkazový řádek. Struktura programu v jazyce Python. Proměnné, hodnoty, typy. Příkazy a příkazové konstrukce: přiřazovací příkaz, podmíněné příkazy, příkazy cyklu, příkazy skoku. Základní datové typy. Výrazy a pravidla jejich vyhodnocování. Seznamy, pole a jiné strukturované datové typy. Procedury a funkce, předávání a druhy argumentů, způsoby vracení výsledku funkce, globální data, lokalita. Použití objektového přístupu, metody a atributy. Knihovny, modularizace programů.

Výbava numerického programátora
Vlastnosti reálných datových typů, šíření numerických chyb. Standardní matematické funkce, náhodná čísla. Vstup a výstup dat, formátování dat, textové a binární soubory. Použití numerických knihoven. Vizualizace výsledků. Přesměrování standardního vstupu a výstupu. Ladění.

Numerické algoritmy
Časová a paměťová složitost algoritmů. Celočíselné algoritmy: Eukleidův algoritmus, Eratosthenovo síto. Mini-algoritmy: řešení kvadratické rovnice, Hornerovo schéma. Numerická lineární algebra: maticové násobení, Gaussova eliminace, LU faktorizace. Polynomická aproximace. Numerické integrování: kvadraturní vzorce, Monte Carlo. Hledání kořenů: bisekce, Newtonova metoda tečen. Počáteční úloha pro soustavy obyčejných diferenciálních rovnic: Eulerova metoda, Rungeovy-Kuttovy metody.

Nenumerické problémy
Dynamické datové struktury, vyhledávání, třídění.

 
Univerzita Karlova | Informační systém UK