IV122 Matematika a programování
O předmětu
Ujasnění očekávání
O čem předmět je:
- O lepším pochopení matematických pojmů a metod skrze praktické
programování.
- O procvičení programátorských schopností na algoritmicky zajímavých
příkladech. Praktický trénink přechodu od teoretického algoritmu k funkční
implementaci.
- O souvislostech mezi pojmy z různých oblastí matematiky, algoritmy a
programátorskými konstrukcemi.
- O radosti z objevování, o ocenění elegance, o experimentování, o tom, jak
matematika a programování mohou být kreativní.
O čem předmět není:
- O úvodní výuce matematických pojmů.
- O úvodní výuce programování.
- O výuce syntaxe konkrétního programovacího jazyka nebo vývojového
prostředí.
Předpoklady
- Znalost matematických pojmů na úrovni bakalářských matematik na FI nebo
schopnost se samostatně potřebné pojmy doučit.
- Schopnost samostatně programovat v libovolném jazyce (hodí se objektový a
spíše vysokoúrovňový).
Forma předmětu
Předmět má tři části, které se budou volně prolínat a navazovat:
- Přednáška: Stručná rekapitulace jedné oblasti matematiky (připomenutí
pojmů, metod), vysvětlení algoritmů, které jsou nad rámec základní výuky,
formulace souvisejích problémů a popis základních myšlenek řešení, ilustrace
základních principů implementace.
- Cvičení: Samostatné programování vybraných problémů na základě doporučené
"kostry".
- Samostatná práce: Dokončení (rozšíření) programů ze cvičení,
implementace dalších problémů, samostatný větší projekt.
Implementaci je možno realizovat v libovolném programovacím jazyce podle
vlastní volby. Vhodný jazyk pro studovaný typ problémů je Python - ten bude
používán pro ilustrativní účely a je doporučen i v případě, že jste jej zatím
nepoužívali (po syntaktické stránce nebudeme potřebovat mnoho konstrukcí a
naučit se relevantní část Pythonu není náročné). Nicméně klidně můžete používat
svůj oblíbený jazyk (nicméně C není doporučeno).
Mnoho probíraných témat vede ke grafickému ztvárnění. Pro grafický výstup
bude používán primárně jazykově nezávislý formát SVG (znalost není potřeba,
bude stručně osvětlen na úvodní přednášce).
Osnova
Předběžná osnova (předmět běží poprvé, takže osnova bude přizpůsobována
s ohledem na průběh a zkušenosti):
- Teorie čísel a kombinatorika (prvočísla, dělitelnost, generování
kombinací, vizualizace výpočtů, ...).
- Geometrie a geometrické operace (želví grafika, vykreslování základních
geometrických objektů, základní geometrické operace a algoritmy, lineární
transformace a matice, ...).
- Fraktály a chaos (Sierpinsky, Hilbert, Mandelbrot, Feigenbaum a
spol.).
- Pravděpodobnost a statistika (náhodná čísla, hry s náhodou, náhodné
procházky, ...).
- Grafy a bludiště (řešení a generování bludišť, aplikace grafových
algoritmů v kontextu bludišť, ...).
Ukončení
Přesná podoba ukončení bude určena na začátku semestru. Rámcově půjde o následující:
- Účast na cvičení, aktivita v průběhu semestru.
- Individuální projekt (implementace jednoho náročnějšího algoritmu).
- Zkouška (probírané matematické pojmy, algoritmy).