PředmětyPředměty(verze: 964)
Předmět, akademický rok 2024/2025
   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í
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.
doc. Mgr. Michal Belda, Ph.D.
Vyučující: doc. Mgr. Michal Belda, Ph.D.
RNDr. Ladislav Hanyk, Ph.D.
doc. RNDr. Pavel Kocán, Ph.D.
doc. Mgr. Pavel Kudrna, Dr.
doc. Mgr. Tomáš Ledvinka, Ph.D.
RNDr. Peter Matvija, Ph.D.
prof. RNDr. František Němec, Ph.D.
Mgr. Vojtěch Pleskot, Ph.D.
doc. RNDr. Jakub Velímský, Ph.D.
Je neslučitelnost pro: NMUE022
Ve slož. prerekvizitě: NPRG041, NPRG041, NPRX041
Anotace -
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ů.
Poslední úprava: Kudrnová Hana, Mgr. (05.05.2023)
Cíl předmětu -

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

Poslední úprava: Ledvinka Tomáš, doc. Mgr., Ph.D. (03.05.2023)
Podmínky zakončení předmětu

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 prostřednictvím odevzdané práce prokázat zvládnutí látky uvedené v sylabu. Používá se bodový systém a student si může vybrat, zda na zápočet požadovancýh 80 ze 100 bodů dosáhne prostřednictvím kratších úloh testujících jednotlivé okruhy témat nebo jediné zápočtové úlohy.

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

Poslední úprava: Ledvinka Tomáš, doc. Mgr., Ph.D. (28.09.2024)
Literatura -
  • 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

Poslední úprava: Ledvinka Tomáš, doc. Mgr., Ph.D. (03.05.2023)
Metody výuky -

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

Poslední úprava: HANYK/MFF.CUNI.CZ (12.04.2008)
Požadavky ke zkoušce

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.

Poslední úprava: Hanyk Ladislav, RNDr., Ph.D. (09.10.2017)
Sylabus -
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í.

Poslední úprava: Ledvinka Tomáš, doc. Mgr., Ph.D. (03.05.2023)
 
Univerzita Karlova | Informační systém UK