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

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

Základní informace

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

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

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) 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