Diplomový seminár  2-INF-92x

Ciele predmetu: Sledovať postup prác študentov na diplomových prácach. Zoznámiť ich s formou, spôsobom písania a prezentovania diplomovej práce. Prezentácie jednotlivých študentov z literatúry týkajúcej sa diplomovej práce a z vlastných výsledkov. Diskusie k prezentáciám. Kontrola textovej podoby pracovnej verzie diplomovej práce. Záverečná prezentácia.

V letnom semestri 2014 sa predmet vyučuje v stredu 11.30 (2h) v M-V. Ak máte akékoľvek otázky, neváhajte ma kontaktovať (najlepšie mailom).

Diplomová práca je záverečná práca magisterského štúdia a v stupňoch štúdia sa radí medzi bakalársku a dizertačnú prácu. V každej z nich máte dokumentovať svoje schopnosti, ale každá z nich sleduje iné ciele. Toto je dôležité si uvedomiť pri výbere témy, pretože pri hodnotení sa neberie ohľad iba na to, či ste vytvorili užitočné dielo, ale hlavne na splnenie týchto cieľov.

V bakalárskej práci ide o to, aby ste preukázali znalosť   ''remesla'', t.j. štandardnej, kultivovanej a viac-menej rutinnej práce. V oblasti aplikácií to môže vyzerať tak, že dostanete špecifikáciu a Vy vyberiete vhodné prostredie, knižnice atď., navrhnete a implementujete príslušný softvér, otestujete ho, napíšte dokumentáciu tak, že výstupom je kultivovaný produkt. Špecifikácia môže vyžadovať z Vašej strany si nejaké veci doštudovať (napr. úloha "implementujte algoritmus z článku XY"; články opisujúce algoritmy sú väčšinou písané tak, že predpokladajú istú znalosť v danej oblasti a popisujú iba hlavnú ideu, pričom mnohé implementačné detaily nechávajú na čitateľa). V oblasti teórie môže ísť o to, naštudovať a pochopiť niekoľko článkov, vedieť z nich napr. vyabstrahovať dôkazové metódy, použiť ich vo veľmi podobných situáciách a napísať výsledok formou odborného článku. Tieto a podobné schopnosti sa pokladajú za bakalársku úroveň a pri diplomovej práci sa považujú za nutnú podmienku (t.j. ak ich Vaša práca nespĺňa, máte problém, ale zároveň máte problém, ak sú hlavným ťažiskom Vašej práce; nasleduje nepríjemná otázka oponenta: ''V čom táto práca prekračuje bakalársku úroveň?").

Cieľom diplomovej práce je preukázať, že schopnosti, ktoré ste počas štúdia získali, viete použiť kreatívne ( na rozdiel od dizertačnej práce, kde sa navyše vyžaduje, aby ste vytvorili niečo zaujímavé, t.j. niečo, čo dokumentovateľne zaujme ľudí na medzinárodnej úrovni ). Už pri výbere témy treba myslieť na to, čo bude hlavným bodom, ktorým túto kreativitu dokumentujete obhajobnej komisii. Samozrejme, toto posúdenie nie je formalizovateľné; v teoretickej oblasti je zvyčajne ťažiskom práce dôkaz nejakého tvrdenia, pri ktorom buď vymyslíte vlastnú dôkazovú techniku, prípadne netriviálnym spôsobom použijete existujúce techniky. Pri aplikačných prácach je to zvyčajne buď nový algoritmus, alebo netriviálne použitie pokročilých dátových štruktúr, prípadne návrh systému/metodiky v situácii, keď sa dá ukázať, v čom je takýto prístup nový a netriviálny (netrivialita sa tu nechápe v zmysle množstva investovanej práce, ale v zmysle prekvapujúcich nápadov).

Diplomová práca je dlhodobý projekt, jeden z mála, s ktorými sa počas štúdia stretnete. Jednou z vecí, ktoré sa na nej máte naučiť, je aj hospodárenie s časom pri dlhších projektoch. Je to v prvom rade Vaša práca, takže je na Vás, aby ste sa so školiteľom dohodli na časovom rozvrhu (odporúčam dohodnúť si pravidelné stretnutia aj v prípade, keď na práci nie je progres) a potom ho dodržiavali. Pri obhajobe sa očakáva, že odovzdáte dielo, ktorého obsah (čo do kvality aj kvantity) zodpovedá času, ktorý ste mali k dispozícii. Špeciálne zorientovať sa v problematike trvá dosť dlho; aj keď sa v prvých fázach zdanlivo nič nedeje, nápady väčšinou potrebujú čas, aby dozreli. Zvyčajne treba vyskúšať najprv jednoduchšie verzie problémov, ''pohrať sa'' s rôznymi prístupmi, aby výsledná práca nepôsobila tak, že ste spísali prvú vec, ktorá človeka napadne. Takisto opísať súčasný stav poznania v oblasti a spísať vlastné výsledky tak, aby text bol kultivovaný a zrozumiteľný, si spravidla vyžaduje niekoľko pokusov, čo samozrejme tiež potrebuje čas. Práca, ktorá zjavne pôsobí ako šitá horúcou ihlou si môže z obhajoby odniesť odporúčanie prepísať ju a prísť nabudúce, aj keď obsahuje sľubné výsledky.

Dobré je hneď po získaní témy prečítať niekoľko kľúčových materiálov k danej problematike a skúsiť vyriešiť ''hračkársky'' problém (resp. napísať ''hello world''), aby ste si tému ''ohmatali''. Potom je dobré si v spolupráci so školiteľom ujasniť, čo sú ''plán A'' a ''plán B''. Ide o to, že ak má práca priniesť zaujímavé výsledky, musí mať aj istú mieru neistoty (ak je hneď od začiatku jasné, ako veci dopadnú, ťažko ich potom nazvať kreatívnymi). Na druhej strane téma by Vám mala dávať rozumnú istotu, že ak budete na nej zodpovedne pracovať, tak niečo sa urobiť podarí. Plán A by mala byť ambiciózna predstava toho, čo by bolo super, keby sa podarilo urobiť. Plán B by mala byť verzia, na ktorú môžte prejsť, ak sa ukáže, že plán A je ťažší, ako sa zdalo, a ktorý s veľkou mierou istoty prinesie štandardné výsledky. Je dobré mať plán B pripravený dopredu, lebo sa vyhnete nervozite, ak sa náhodou veci nebudú vyvíjať podľa Vašich najlepších predstáv. Hneď, ako si ujasníte, kam by práca mala smerovať (samozrejme, oba plány sa v priebehu práce môžu zmeniť, podľa toho, ako sa veci budú vyvíjať), je dobré začať pracovať na pláne A, a zároveň sa pustiť aj do študovania širšieho okruhu materiálov, aby ste získali expertízu v danej oblasti.

Nezabudnite si nechať dosť času na spísanie Vašich výsledkov. Ak máte v práci experimenty, vedzte, že nech ich budete plánovať akokoľvek, v skutočnosti budú trvať dlhšie. Pri hodnotení experimentov sa zvlášť berie do úvahy, či ich metodika a rozsah zaručuje dostatočnú výpovednú hodnotu. Na to je treba veľa, veľa času.

Opis súčasného stavu problematiky je dobré robiť priebežne, aby ste pri konci nemali pred sebou úlohu vytvoriť priveľa textu za príliš krátky čas.

Okrem vlastných výsledkov sa v práci hodnotí Vaša schopnosť zorientovať sa v novej oblasti a ucelene podať prehľad toho, čo je v nej aktuálne dôležité. Tento opis ''state-of-art'' môžte koncipovať buď ako samostatnú kapitolu práce (súčasný stav -- vlastné výsledky), alebo môžte prácu členiť tematicky, pričom Vaše výsledky uvádzate priamo v kontexte s existujúcimi. Tak či onak je kriticky dôležité, aby bolo veľmi zreteľne na prvý pohľad vidieť autora výsledku. Vaše príspevky by mali byť zreteľne označené a každý prebraný výsledok musí mať referenciu, odkiaľ ste ho čerpali (nereferencovanie prebratých výsledkov zvyčajne znamená veľmi nepríjemné obvinenia).

Zhrnutie súčasného stavu nemá za cieľ poskytnúť kompletný kurz v danej oblasti (zväčša stačí zaviesť niekoľko základných pojmov a odkázať čitateľa na príslušnú učebnicu), ale malo by zahŕňať viac-menej všetky nové výsledky, ktoré súvisia s Vašou prácou (je nepríjemné, ak v práci tvrdíte, že robíte niečo úplne nové a pri obhajobe zistíte, že za ostatných 20 rokov na rovnakých problémoch pracovali stovky ľudí, ktorí dosiahli oveľa silnejšie výsledky, ako Vy a ktorých prácu ste úplne odignorovali; je to nepríjemné dvojnásobne, ak oponent je jeden z nich).

Súčasťou hodnotenia je jednak to, do akej miery pokrývate relevantné nové poznatky a jednak Vaša schopnosť logicky ich rozčleniť, zrozumiteľne podať, podstatným venovať viac priestoru a okrajové spomenúť vo vhodnom kontexte. Taktiež je dôležité, aby text bol konzistentný, t.j. aby ste používali na tie isté veci rovnaké označenie, nepoužívali nedefinované pojmy, nevysvetlené postupy a pod. Toto nie je také ľahké, ako sa na prvý pohľad zdá a zväčša to vyžaduje viacero iterácií textu a dostatok času. Narýchlo spísaný prehľad, v ktorom nie je jasné, čo ste chceli povedať, nepodstatné či všeobecne známe časti sú rozoberané do detailov a tie hlavné ''odmávané'', navyše s nekonzistentným značením, je spoľahlivá cesta k problémom pri obhajobe.

Pri uvádzaní doterajších výsledkov je dôležitá ich dôveryhodnosť. V zásade platí, že za dôveryhodné sa považujú výsledky, ktoré boli recenzované, t.j. boli zverejnené v časopise alebo zborníku, kde ich pred zverejnením prečítalo a skontrolovalo niekoľko recenzentov. Referencia musí obsahovať dostatok údajov, aby sa dala vyhľadať. Vyhýbajte sa referencovaniu wikipédie, osobných websránok, blogov, preprintových serverov a pod. Na získanie bibliografických dát sa odporúča použiť niektorú z databáz ako Web of Science, Scopus, DBLP, či Google Scholar. Pri softvérových produktoch je častokrát uvedené, akým spôsobom ich autori chcú referencovať. Je bežné, že hlavné idey daného produktu sú zhrnuté v článku v odbornom časopise. Referencia

[1] Balázs Dezső, Alpár Jüttner, Péter Kovács. LEMON – an Open Source C++ Graph Template Library, Electronic Notes in Theoretical Computer Science, 264(5):23 - 45, 2011.
je oveľa dôveryhodnejšia ako
[1] LEMON: http://lemon.cs.elte.hu/pub/sources/lemon-1.3.tar.gz

Diplomová práca je vedecké pojednanie a od Vás sa očakáva, že ju napíšete vhodným štýlom. Práca môže byť písaná v slovenčine alebo angličtine (v tom prípade treba pridať aj krátky slovenský abstrakt; pozor, jazyk práce je súčasťou zadania práce v ais, takže sa so školiteľom dohodnite už na začiatku) a musí dodržiavať štylistické zásady odborného textu v príslušnom jazyku. Predpokladá sa, že pri príprave prehľadu oblasti prečítate väčšie množstvo kvalitných článkov a budete mať možnosť pozorovať štýl, akým sú písané. Zrozumiteľný a kultivovaný text je krôčik smerom k spokojnému oponentovi. Nie je cieľom produkovať nudnú prózu, ale strhujúce by mali byť predovšetkým Vaše výsledky. Priveľa vtipných dialógov vedie k dojmu, že sa tým snažíte niečo zakrývať.

Pri písaní často stojíte pred dilemou: na jednej strane práca má byť čitateľná, na druhej strane má byť technicky presná a obsahovať všetky detaily. Niekedy sa to dá riešiť prílohami, napr. nie je dobré mať v hlavnom texte dokumentáciu kódu. Kód uvádzajte tam, kde chcete vysvetliť myšlienku za ním; zvyšok môže tvoriť prílohu. V každom prípade sa vyvarujte siahodlhej ''dokumentácie'' typu

V procedúre ZvysSplakva_33 sa zvýši hodnota Splakva o 33.
Keď používateľ klikne na gombík   Nový grombor, vytvorí sa nový grombor.
Technické časti v práci je dobré prezentovať ''dvojfarebne'': predstavte si, že píšete dva texty, jeden technický a jeden vysvetľujúci, ktoré sa navzájom prelínajú. Takže napríklad dlhé postupnosti výpočtov, formálne definície, prechodové funkcie, technické lemy a pod., ktoré tvoria jednu ''farbu'' je dobré okomentovať prirodzeným jazykom a vysvetliť, čo znamenajú, na čo sa použijú, prečo sú formálne spravené práve takto a pod. (druhá ''farba''). Text sa tak stáva o dosť čitateľnejší.

Ďalšia vec je, že nie je dobré mať v práci ad-hoc rozhodnutia. Ak napríklad zavádzate novú definíciu, alebo volíte nejaý prístup k návrhu systému, oponentovi často vŕta hlavou otázka ''Prečo práve tak, nšlo by to trebárs takto?'' Od práce sa očakáva, že ste skúsili viac alternatívnych prístupov a zvolili ste ten (čo) najlepší, preto odpoveď ''Veď aj tak by sa dalo, mne sa viac páčilo to moje.'' nie je úplne najšťastnejšia. Je dobré, ak aj v práci stručne zhrniete neúspešné pokusy s krátkym zhodnotením, prečo tadiaľ cesta neviedla a prečo ste sa rozhodli zvoliť iné riešenie.

V závere práce je dobré explicitne zhrnúť, čo považujete za svoj najväčší prínos. Myslite pritom na horeuvedené parametre hodnotenia diplomovej práce (ak máte v záverečnom zhrnutí prínosu iba čosi ako ''naštudoval som XY a napísal veľa textu/kódu", je dôvod na paniku).

Keďže diplomová práca je dlhší projekt, je dobré urobiť si systém, ktorý Vám pomôže mať vo veciach poriadok. Je pravdepodobné, že časti textu budete viackrát prepisovať, skúšať alternatívne prístupy, budete mať veľa rôznych predbežných súborov, tabuliek, ktoré po čase nebudete vedieť, čo vlastne znamenajú, poznámok o zaujímavých článkoch a pod. A preto: používajte version control! (RCS - revision control system) Budete môcť editovať a meniť veci bez strachu, že si niečo zmažete, kedykoľvek si môžte vytvoriť novú vetvu, aby ste skúsili nejakú alternatívu, kedykoľvek sa môžete vrátiť (naozaj to oceníte pár dní pred termínom odovzdania, ak zistíte, že tú poslednú zmenu predsa len nechcete dať do finálnej práce). Navyše, nech už budete po škole robiť čokoľvek, s nejakou formou RCS sa stretnete; je dobré využiť diplomovú prácu aj na to, aby ste sa s RCS naučili robiť. Najpoužívanejšie systémy sú Subversion (kniha) a Git ( kniha, cheatsheet). Oba sú dobre podporované, ľahko sa inštalujú a sú výborne zdokumentované. Osobne odporúčam Git kvôli ľahšiemu vytváraniu a spájaniu vetiev, ale je to vec vkusu. Takisto je dobré si repository niekde zálohovať (je veľa dostupných cloudovských úložíšť; nechcete, aby sa Vám pár dní pred odovzdaním pokazil notebook).

Pre celkové dobré vyznenie práce je okrem štylistickej a gramatickej (spellchecker je Váš priateľ) správnosti dôležitá aj typografická kvalita. TeX/LaTeX je typografický systém, ktorý produkuje veľmi kvalitný výstup ''out-of-the-box'' a má rozsiahlu podporu na písanie vedeckých článkov a kníh. Dosiahnuť podobnú kvalitu výstupu z iných typografických systémov je možné, ale musíte veľmi dobre vedieť, čo robíte. Použitie TeXu je prudko odporúčané z rôznych dôvodov. TeX má silný makroprocesor, takže môžte používať makrá na udržovanie konzistentného značenia; napríklad ak chcete nejakú hodnotu označovať $\fr M(x)$, napíšete si makro

\newcommand{\M}[1]{\ensuremath{{\mathfrak M}(#1)}\xspace}
a v texte používate \M{x}. Keď sa neskôr rozhodnete zmeniť značenie, viete to urobiť konzistentne. Takisto máte podporu na číslovanie a referencovanie rovníc, algoritmov, tabuliek a pod. Ak od začiatku píšete svoj dokument tak, že používate makrá a referencie, vyhnete sa problémom zanesenia chýb pri úpravách textu.

Užitočná je tiež podpora referencií článkov. Systém BibTeX Vám umožní udržovať si jeden súbor s údajmi o článkoch, ktoré ste čítali. Údaje vo formáte bibtex viete stiahnuť z takmer všetkých zdrojov, napríklad z DBLP vyzerá takto:

@article{DBLP:journals/siamcomp/BansalBN12,
  author    = {Nikhil Bansal and
               Niv Buchbinder and
               Joseph Naor},
  title     = {Randomized Competitive Algorithms for Generalized Caching},
  journal   = {SIAM J. Comput.},
  volume    = {41},
  number    = {2},
  year      = {2012},
  pages     = {391-414},
  ee        = {http://dx.doi.org/10.1137/090779000},
  bibsource = {DBLP, http://dblp.uni-trier.de}
}
V texte referencujete \cite{DBLP:journals/siamcomp/BansalBN12} a zoznam použitej literatúry sa Vám vygeneruje automaticky (editovať ručne zoznam desiatok článkov a kontrolovať, či sú abecedne usporiadané a správne očíslované nie je práca, ktorú by ste chceli robiť). TeX má síce dlhšiu učiacu krivku ako wysiwyg typografické systémy, ale pre rozsiahly, dlhotrvajúci projekt je to rentabilná investícia.

K dobrej práci patria aj prehľadné a typograficky kvalitné obrázky. Rastrový diagram s malým rozlíšením stiahnutý z wikipédie vyvolá v oponentovi dojem, že buď oblasti nerozumiete ani natoľko, aby ste nakreslili vlastný obrázok, alebo ste celú prácu písali dva dni pred odovzdaním; ani jedno z toho nechcete. Diagramy by podľa možnosti mali byť vo vektorovom formáte a popisy by mali používať rovnaký font, ako text. TeX umožňuje pohodlne vkladať obrázky vo formáte pdf/eps (podľa verzie). Editory ako Ipe, či Inkscape (s rozšírením Textext) Vám umožnia používať TeX na renderovanie textu v obrázkoch, takže budete mať rovnaké fonty aj matematickú sadzbu.

Na úspešné absolvovanie predmetu je nutná aktívna účasť na seminároch. Okrem Vašich prezentácií počas semestra sa predpokladá, že budete sledovať prezentácie kolegov a pomôžete im spätnou väzbou, nápadmi, postrehmi a pod.