An introductory programming course for physics students. Basics of the Python language. Problem solving using
structured procedural programming methodology. Presentation of selected numerical algorithms. Exercises on
computers to acquire practical skills, from data preparation to numerical processing to visualization of results.
Last update: Kudrnová Hana, Mgr. (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ů.
Last update: Kudrnová Hana, Mgr. (05.05.2023)
Aim of the course -
Students ready to express a thought in a programming language (like Python, C, Fortran).
Last update: Ledvinka Tomáš, doc. Mgr., Ph.D. (03.05.2023)
Student schopný vyjádřit myšlenku pomocí programovacího jazyka (např. Python, C, Fortran).
Last update: Ledvinka Tomáš, doc. Mgr., Ph.D. (03.05.2023)
Course completion requirements - Czech
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.
Last update: Ledvinka Tomáš, doc. Mgr., Ph.D. (28.09.2024)
Literature -
Lecture notes:
http://utf.troja.mff.cuni.cz/~ledvinka
http://geo.mff.cuni.cz/~lh/NOFY056
and also
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
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
Last update: Ledvinka Tomáš, doc. Mgr., 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
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
Last update: Ledvinka Tomáš, doc. Mgr., Ph.D. (03.05.2023)
Teaching methods -
Lecture + practicals
Last update: HANYK/MFF.CUNI.CZ (12.04.2008)
Přednáška + praktická cvičení
Last update: HANYK/MFF.CUNI.CZ (12.04.2008)
Requirements to the exam - Czech
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.
Last update: Hanyk Ladislav, RNDr., Ph.D. (09.10.2017)
Syllabus -
Structured procedural programming
Programming languages, source code, program execution, command line. Python program structure. Variables, values, types. Programming statements: assignment statement, conditional statement, loop statements, jump statements. Elementary data types. Expressions and evaluation rules. Lists, arrays and other structured data types. Procedures and functions, parameters, returning function results, global and local variables. Using object types, methods and attributes. Libraries, program modularization.
Numerical programming toolbox
Properties of real data types, spreading of numerical error. Standard mathematical functions, random numbers. Data input and output, formatting, text and binary files. Using numerical libraries. Visualization of computed data. Input and output redirection. Debugging.
Numerical algorithms
Algorithm complexity. Integer algorithms: Euclidean algorithm, Eratosthenes sieve. Mini-algorithms: quadratic equation, Horner’s method. Numerical linear algebra: matrix multiplication, Gauss elimination, LU factorization. Polynomial approximation. Numerical quadrature formulas, Monte Carlo method. Root finding: bisection, Newton’s method. Initial-value problem for system of ordinary differential equations: Euler and Runge-Kutta methods.
Non-numerical problems
Dynamic data structures, searching, sorting.
Last update: Ledvinka Tomáš, doc. Mgr., 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í.
Last update: Ledvinka Tomáš, doc. Mgr., Ph.D. (03.05.2023)