Ročníkový projekt
Milé ovečky! Tu sa bude nachádzať, čo ma napadne k ročníkovému projektu, čo sa vám môže hodiť alebo čo po vás budem chcieť ja. Keď budete chcieť niečo vy, nebojte sa prísť alebo použite najlepšie tento mail <semancik;cgg,ms,mff,cuni,cz> a dohodneme sa.
Témy
Téma je v zásade na vás, mám tu ale nejaké nápady, ktoré by sa mi veľmi páčili. Ak ťa niektorá z nich zaujala, ale netušíš ako na to, viem poradiť.
- Stavba mnohostenov. Program vytvorí pravidelný mnohosten pre zadaný počet stien (príp. vrcholov, hrán, alebo spĺňajúci zadané podmienky). Pravidelných telies je samozrejme len 5, v ostatných prípadoch je cieľom „čo najpravidelnejší” mnohosten. Výtvor sa bude dať pozrieť v priestorovom pohľade a vygenerovať sieť, z ktorej ho po vytlačení bude možné poskladať. Je kopec dalších možností, ako tento základ rozšíríť: rôzne spôsoby zadania mnohostenu, ďalšie úpravy (napr. „stellation” je nahradenie každej steny ihlanom), možnosť meniť polohu vrcholov, ofarbovať steny, umiestniť na nich text, načítať existujúci 3D objekt a vytvoriť sieť na jeho zlepenie a iné, podľa fantázie a schopností. Každopádne dosť možností na pokračovanie ako bakalárska práca.
- Generovanie bludísk. Program na vytváranie rôznych typov bludísk, s výstupom aj vo formáte vhodnom na tlač. Možnosť vytvoriť bludisko určitého tvaru (daného maskou načítanou ako obrázok v niektorom štandardnom formáte), predpísať v bludisku polohu niektorých stien alebo naopak priechodov, automatické hľadanie a zobrazenie cesty (príp. všetkých ciest), vygenerovanie bludiska k zadanej ceste bludiskom, poschodové bludisko, nepravouhlé bludiská, prechádzanie bludiskom z vlastného pohľadu… To je len pár nápadov, čo sa dá robiť, vítané sú vlastné napady. Nie je samozrejme nutné naprogramovať všetko tu uvedené, je to len ukážka, že sa jedná o dosť širokú tému na pokračovanie bakalárskou prácou.
- Animovanie skladania origami. Cieľom je uľahčiť skladanie origami tak, že namiesto jednoduchého rozkreslenia postupu na papier, sa jednotlivé kroky predvedú animovane. Program teda zo zadaných základných krokov (napr. prelož tento roh na tamtú hranu), vytvorí animovaný postup skladania a umožní si ho pozerať podľa potreby. Je tu dosť priestoru pre vlastný tvorivý prístup k problému.
Čo sa od teba očakáva
Cieľom ročníkového projektu je vyskúšať si programovanie väčšieho diela a to iným štýlom ako prvácky zápočťák (sadnem za klávesnicu, časom uvidím čo z toho vzniklo a napíšem o tom pár fráz, hrdo zvaných dokumentácia). Teda najprv si poriadne naplánovať, čo vlastne budem robiť a ako. Takisto je to vhodná príležitosť vyskúšať si objektovo orientované programovanie, tvorbu grafického rozhrania pre užívateľa, alebo perspektívny jazyk, s ktorým zatiaľ nemáš dosť skúseností (predpokladajú sa už ale základné programátorské návyky). Nemusí teda vzniknúť program prekonávajúci všetky podobné, cieľom je niečo sa na tom niečo naučiť. Musí však byť zmysluplný, netriviálny a aspoň trochu originálny.
Čo sú základné programátorské návyky? Výber vhodných dátových štruktúr, efektívnych algoritmov, formát dátových súborov (využiť štandardné existujúce, ak je to možné), dobre okomentovaný kód, bez zbytočnej závislosti na konkrétnom vývojovom prostredí. Ak to píšeš napr. v C++, tak že to pôjde skompilovať aj iným kompilátorom ako MSVC-2006-Pro ak tomu nebráni nejaký rozumný dôvod. Takým je napr. použitie knižnice MFC, vtedy však zváž, či nevybrať radšej podobnú knižnicu prenositeľnú na iné platformy, napr. wxWidgets alebo Qt. Platformová nezávislosť nie je nutná, ale ocením ju. Minimálne však rozlišuj medzi pojmami ako jazyk, knižnica, vývojové prostredie (editor, kompilátor), operačný systém.
Teraz to teda chce výber témy, dôkladnú analýzu problému a návrh riešenia, výber platformy, jazyka, použitých knižníc alebo nástrojov a spísanie podrobnej špecifikácie. Potom je čas na implementáciu betaverzie – kostry programu a jeho základných vlastností, ktorá preverí či si to naplánovala dobre a zvládaš to. Ak máš strach, že si naplánuješ niečo príliš ťažké alebo príliš veľa, čo potom nedokážeš splniť, na to je tvoj obľúbený vedúci projektu, aby ti poradil. Programovania si užiješ ešte v dalšom semestri a určite nie je dobrá cesta písať špecifikáciu až podľa toho, čo sa ti už podarilo naprogramovať. V prvom semestri je práve na tú analýzu čas, len sa nesmie začať až v lete.
Nad čím sa zamyslieť
- čo to bude robiť (brainstorming, napíš si všetko, čo ťa napadne, potom sa to zoškrtá)
- čo to nebude robiť (škrtáme)
- kto to využije?
- existujú už na to nejaké programy? (google poradí)
- v čom budem iný?
- aké bude užívateľské rozhranie, vstupy, výstupy, dátové formáty
- platforma(y) – operačný systém, jazyk, na čom to pobeží a na čom to budeš programovať
- čo využijem už hotové (nestojí za to stráviť dva mesiace programovaním bežných numerických algoritmov alebo načítaním obrázkov v rôznych formátoch)
- kľúčové algoritmy
- a nad všetkým ostatným (-:
Termíny
- do konca marca téma a stručný popis (okolo 10 riadkov)
- do polovice mája čas na tvorivé plánovanie, rozmýšlanie nad problémami a ako ich riešiť, štúdium literatúry, celkový návrh projektu – výsledkom je podrobná špecifikácia (niekoľko strán, tak trochu kostra budúcej dokumentácie).
- do konca júna funkčná betaverzia
- v letnom semestri pokračovanie v implementácii, testovanie a tvorba dokumentácie
Počas letných prázdnin už môže byť problém ma zohnať.
A čo za to
Okrem dobrého pocitu z vytvorenia niečoho trvalého a toho čo sa pri tom naučíš aj nejaký zápočet a o rok navyše známka. A dobrý základ bakalárskej práce.
Update: 4. 4. 2005