IB111 Základy programování
|
Speciální seminární skupinaZákladní informace
Průběh semestruSkupina je normálně rozvrhovaná, nicméně nemá pravidelnou (každotýdenní) výuku. V průběhu semestru proběhne několik setkání (přesné termíny budou upřesněny na začátku semestru):
ProjektyOčekává se vypracování tří projektů spadajících do níže uvedených témat. Témata rámcově odpovídají běžným domácím úlohám, v rámci této skupiny se ovšem očekává výrazně rozsáhlejší zpracování. Témata jsou záměrně zadána neurčitě a otevřeně, součástí úlohy je také domyslet si vlastní zajímavé zadání. Nemějte nicméně strach z otevřenosti zadání, zadání a očekávání budou upřesněna na konzultacích a v případě potřeby dostanete konkrétní rady, jak postupovat. Na konci semestru odevzdáváte kompletní zdrojové kódy a zprávu (ve formátu PDF), která bude obsahovat pro každý projekt:
Materiály odevzdáte do Odevzdávárny v ISu. Pokud máte zdrojové kódy na githubu (či podobné službě), stačí do zprávy uvést odkaz. Simulace strategií pro jednoduchou hruNapište program, který bude schopen simulovat souboje různých strategií v jednoduché hře. Zpracujte statistiky, např. kdo vítězí s jakou pravděpodobností, jak dlouho průměrně hra trvá. Zvolte hru a strategie tak, aby výsledky nebyly dopředu zřejmé (triviálně odhadnutelné). Ztvárnění výsledků formou grafu je vhodné (doporučeno použít matplotlib, ale dá se tolerovat i Excel). U tohoto projektu je přirozené využít v programu objekty a v rámci procvičení použití objektů v Pythonu to bude požadováno. Pokud s nimi nemáte zkušenost, udělejte první verzi (pro říjnovou konzultaci) bez objektů, ale očekávejte, že pro finální verzi bude potřeba přejít na objektovou reprezentaci (na přednášce se budou objekty probírat v druhé polovině semestru). Náměty na hry:
Zpracování datNajděte zajímavý zdroj dat a "zpracujte" jej. Vytvořený program by měl dělat nejen "načtení dat", ale i nějaký netriviální "výpočet" nad daty (příp. zajímavé propojení více zdrojů dat). Výstupem by měly být zajímavé analýzy. Použitá data musí být dostatečně bohatá, aby zpracování vedlo na dostatečně rozsáhlý program. Konkrétně se očekává, že skrze tento projekt prokážete schopnost používat datové struktury (např. slovník, vnořené seznamy). Formulujte explicitně otázky, které byste rádi z pomocí dat zodpověděli. Začněte klidně s ambiciózními otázkami, které není reálné v rámci projektu zcela zodpovědět, ale poslouží vám jako užitečné vodítko, kterým směrem analýzy ubírat. Příklady: "Které aspekty zemí (velikost, počet obyvatel, vzdálenost od ČR) nejvíce ovlivňují, jak moc čeští studenti tyto země znají?", "Které politické strany mají nejstabilnější výsledky ve volbách?", "Existují výrazné rozdíly v povahových vlastnostech mezi obyvateli různých států?". Náměty na zdroje dat:
Další inspirace (typy analýz i metody): Learn Python Through Public Data Hacking ObrázkyTento projekt má dvě části: "rekurzivní fraktály" a "bitmapy". Rekurzivní fraktály: Vytvořte programy pro vykreslování fraktálů s rekurzivní strukturou, inspirujte se obrázky s názvy Sierpińského trojúhelník, Kochova vločka, Hilbertova křivka, rekurzivní stromečky (uvedené ve slidech z průběhu semestru). Pro vykreslování doporučuji použít buď želví grafiku (module "turtle" v Pythonu) nebo si udělat vlastní vykreslování do vektorového formátu SVG. Implementujte jak některé klasické fraktály, tak vlastní variace. Implementujte vše pomocí rekurze (nepoužívejte přístupy jako jsou "L-systémy"). Bitmapy: Napište program, který zpracovává nebo generuje bitmapové obrázky (za použití knihovny Image, implementace Pillow). Vymyslete si vlastní zadání, které bude nějakým způsobem originální. Pokud si vyberete nějaký relativně jednoduchý úkol (detekce hran), zpracujte více algoritmů a ty porovnejte. Náměty:
|