F6060 Programování zkouška (jaro 2025)

záznam o předmětu v Informačním systému MU: https://is.muni.cz/auth/predmet/sci/jaro2025/F6060

Základní informace

pokyny k přípravě na zkoušku a zkoušce samotné F6060_pokyny.pdf (verze z 15.2.2025)

sbírka vzorových úloh ke zkoušce F6060_sbirka.pdf (verze z 22.2.2023)

datové soubory ke sbírce data_sbirka.zip (verze z 19.9.2022)

Zadání minulých zkoušek

rok zadání zkoušky datové soubory
2021 25.6.2021 data_AA-Duracell-Ultra_R43.txt
2022 13.5.2022
25.5.2022 sunspots.dat
9.6.2022 fulleren1.dat, fulleren2.dat
2023 19.5.2023 nautilus.txt
25.5.2023 molekuly.txt
1.6.2023 coeffs.txt
2024 31.5.2024
6.6.2024 NP.xy
19.6.2024 particles.txt
27.6.2024

Předpokládané znalosti a dovednosti

K úspěšnému absolvování zkoušky je potřebná znalost základů programování v některém z vyšších programovacích jazyků (Python, Julia, C, C++, GNU Octave a Matlab, Java, Ruby, Fortran a jiné). Výběr jazyka není v zásadě omezen, zamýšlené použití některého z méně rozšířených jazyků ale konzultujte předem. Pokud teprve stojíte před výběrem jazyka k nastudování, lze doporučit Python, který se těší ve fyzikální komunitě velké oblibě a jehož základy je možné poměrně snadno ovládnout. Vhodné zdroje pro samostudium Pythonu jsou uvedeny v seznamu doporučené literatury.

Vzhledem k zaměření na studující fyzikálních oborů bude při zkoušce kladen důraz na prvky potřebné pro numerické výpočty a zpracování dat - vyčíslování výrazů, vytváření smyček a podmíněných příkazů, sestavování funkcí, práci s vektory a maticemi. U mnohých úloh bude rovněž třeba vykreslit funkční závislosti nebo sadu datových bodů, což může být provedeno zabudovanými příkazy (např. plot či mesh v GNU Octave a Matlab), s využitím grafické knihovny (např. Matplotlib v případě Pythonu) nebo uložením dat do souboru a následným vykreslením v externím programu (MS Excel, LibreOffice Calc, QtiPlot, Gnuplot apod.). Nezbytná je schopnost editace zdrojových kódů ve vhodném editoru nebo vývojovém prostředí (dle vlastního výběru) a jejich kompilace nebo spuštění v interpreteru (v závislosti na vybraném jazyku). U zkoušky budou vyžadovány správně fungující programy, je tedy důležité dostatečným cvičením získat praktické zkušenosti s odladěním programů.

Příprava ke zkoušce bude spočívat v domácím procvičování s použitím sbírky vzorových zkouškových úkolů a zadání zkoušek z předchozích let. Samotné základy programování si lze osvojit například v některém z kurzů nabízených pro studující fyzikálních oborů. Studijní katalog uvádí aktuálně tyto:

Určité minimum programátorských dovedností v jazyce Python získají studující i absolvováním kurzu který obsahuje i velmi krátký praktický úvod do Pythonu a Python pak využívá při implementaci numerických metod.

Řadu kurzů lze nalézt také v nabídce jiných oborů nebo fakult, jejich zaměření však může být vzdálené potřebám fyziky. Při úvahách o případném absolvování některého z těchto kurzů je tedy vhodné důkladně prozkoumat jeho osnovu s přihlédnutím k požadavkům naší zkoušky z programování. Za zvážení stojí například

Zkouška

Studující absolvuje praktickou zkoušku, při které během vymezené doby sestaví program řešící zadaný úkol z níže uvedených okruhů. U zkoušky budou nabízeny dvě úlohy, z nichž si studující jednu vybere. Podmínkou úspěšného absolvování zkoušky je správné fungování programu a obhájení vypracovaného řešení v následné diskuzi se zkoušejícím. Časová dotace bude velkorysá, bude k dispozici asi 6 hodin (může být upraveno podle náročnosti konkrétních zadání) na vyřešení jedné úlohy s obtížností, jakou mají vzorové úlohy.

Zkoušky probíhají prezenční formou. Při vypracovávání úloh budou studující využívat vlastní výpočetní techniku (přinesené vlastní notebooky a podobné přístroje), což přináší výhodu stejného prostředí, na které jsou zvyklí z domácího procvičování. V nepravděpodobném případě, že studující nemá vhodný přístroj k dispozici, je třeba zavčas kontaktovat zkoušejícího, aby mohla být zajištěna nějaká alternativa. Bude povoleno hledat na webu informace týkající se syntaxe programovacích jazyků, využívat učebnic těchto jazyků a různých manuálů, tutoriálů a referenčních příruček, funkcí z knihoven (např. NumPy, Matplotlib) a balíčků (GNU Octave, Matlab), ale hledání ostatních druhů informací (zejména částí řešení konkrétních úloh například na webových fórech) a také využívání umělé inteligence bude zakázáno. Rovněž tak veškerá online komunikace (emaily, chaty apod.) bude zapovězena, aby se mimo jiné zabránilo poradám s přáteli na síti. Po uplynutí vyměřeného času studující svá řešení odevzdají a budou následovat diskuse řešení se zkoušejícím. V rámci diskuse se náležitě probere postup řešení a zkoušející může rovněž vyžadovat vypořádání se s jednoduchými rozšířeními úlohy. Hodnocení zkoušky známkou bude založeno na kvalitě zpracování úlohy a na reakcích v následné obhajobě a diskusi.

Jak je uvedeno v Informačním systému, absolvováním zkoušky má studující osvědčit:

Okruhy témat úloh ke zkoušce

Následující výčet obsahuje všeobecné popisy okruhů numerických úloh, které budou zadávány při zkoušce: Jak bylo zmíněno výše, je jedním z hlavních cílů zkoušky ověřit, zda jsou studující schopni přetavit popis algoritmu ve skutečný kód. Numerické metody tedy není třeba ke zkoušce studovat, budou použity jen ty dostatečně jednoduché a jejich důkladný popis bude součástí zadání. Vzhledem k uvedenému cíli také nebude uznáno použití funkce z knihovny, která by daný numerický problém řešila, ta může být využita pouze pro srovnání. V zadáních se mohou objevit i jiné numerické úlohy obdobné náročnosti, které nejsou explicitně vyjmenovány v uvedených okruzích, u nich ovšem bude zvláště detailně popsán algoritmus výpočtu. Dobrou představu o způsobu formulace úloh poskytuje sbírka vzorových příkladů k procvičování a také sada zadání z předchozích let.

Doporučená literatura k Pythonu