OAVENP0003 Programování

Fyzikální ústav v Opavě
zima 2021
Rozsah
10 hodin přednášek, 30 hodin cvičení. 6 kr. Ukončení: zk.
Vyučující
Mgr. Debora Lančová, Ph.D. (přednášející)
Mgr. Debora Lančová, Ph.D. (cvičící)
Garance
RNDr. Kateřina Klimovičová, Ph.D.
Fyzikální ústav v Opavě
Rozvrh
St 11:25–12:10 LPS
  • Rozvrh seminárních/paralelních skupin:
OAVENP0003/01: St 12:15–14:40 LPS, D. Lančová
Předpoklady
(FAKULTA(FU) && TYP_STUDIA(N))
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Mateřské obory/plány
Cíle předmětu
Obsahem předmětu je seznámení se základními znalostmi a pojmy potřebnými pro programování vědeckých i komerčních aplikací nezávisle na použitém programovacím jazyce. Úvodní část kurzu bude věnována základním myšlenkovým schématům a algoritmům nutným k pochopení principů sekvenčního programování. Další část bude věnována základním prvkům obvyklých programovacích jazyků, jako jsou konstanty, proměnné, klíčová slova a řídící struktury. V návaznost na popis formální definice programovacího jazyka budou demonstrovány konkrétní způsoby softwarových vývojových prostředí, kompilace a interpretace kódu. Budou popsány různé metody realizace uživatelského rozhraní kódu a jeho vazby na použité hardwarové a softwarové technologie. V závěru kurzu budou diskutovány alternativy přístupu ke strukturování a výstavbě kódu jako jsou např. procedurální programování, objektové programování, neprocedurální a deklarativní jazyky, paralelizace kódu. Ač je volba programovacího jazyka pro studentské projekty arbitrární, kurz bude primárně orientován na jazyk C++ a na vysokoúrovňové programovací jazyky jako např. Python nebo IDL.
Osnova
  • Přednášky pokryjí následující témata: • Pojem počítačového programu, Von Neumanova architektura počítače, procesor, paměť, program, data, strojový kód, programovací jazyk, souborový systém, vstupní a výstupní zařízení. • Filozofie sekvenčního programování, provádění programu, řídící struktury programu (podmínky a cykly), algoritmy a jejich implementace. • Základní prvky syntaxe programovacího jazyka: klíčová slova, proměnné, konstanty, operátory, funkce, procedury, syntaktická pravidla. • Vývojová prostředí, tvorba a ladění kódu: Integrovaná vývojová prostředí, kompilátory, linkery, knihovny funkcí, debuggery, interprety. • Uživatelský vstup a výstup, I/O operace, zápis do souborového systému, grafický výstup, interface kódu pro GUI, přímý přístup do paměti. • Alternativy výstavby a strukturování kódu: procedurální jazyky, objektové programování, deklarativní a neprocedurální jazyky • Paralelizace kódu: OpenMP, MPI – symetrický multiprocesing versus programování na clusterech
Literatura
    povinná literatura
  • sUčebnice jazyka C, Pavel Herout, Kopp, České Budějovice, 2009, ISBN 978-80-7232-383-8
  • Numerical Recipes. The Art of Scientific Computing, 3rd Edition, 2007, ISBN 0-521-88068-8. (C++ code)
    doporučená literatura
  • Numerical Recipes in Fortran. The Art of Scientific Computing, 2nd Edition, 1992, ISBN 0-521-43064-X.
  • B. Stroustrup: The C++ Programming Language. 3rd edition. Addison-Wesley 1997. ISBN 0-201-88954-4.
Metody hodnocení
Student vypracuje semestrální projekt (počítačový program) řešící astrofyzikálně problém dohodnutý s cvičícím. Funkčnost vyvinutého kód je podmínkou pro zápočet. Úspěšná obhajoba a diskuze řešení – vyvinutého kódu - je předmětem zkoušky.
Další komentáře
Předmět je dovoleno ukončit i mimo zkouškové období.
Předmět je vyučován každoročně.
Předmět je zařazen také v obdobích zima 2020, zima 2022, zima 2023, zima 2024.