Ako si (ne)vybrať bakalársku prácu

Milá študentka, milý študent,

na konci 2. ročníka bakalárskeho štúdia Ťa čaká dôležité rozhodnutie. Musíš sa rozhodnúť pre tému svojej bakalárskej práce, na ktorej budeš  v ďalšom ročníku pracovať. V hlave Ti teraz víri mnoho otázok (Ale ako sa rozhodnúť? Ktorá téma je vhodná pre mňa? Zvládol by som tú tému?). Otázok je teraz viac ako odpovedí, ale odpovede postupne prídu.

Začnime teda od začiatku. Máme niekoľko základných faktov:

  • Témy bakalárskych prác sú prístupné v AIS.
  • Základné delenie tém je podľa aplikačnej domény, a teda sa môžeš rozhodnúť pre tému z oblasti bezpečnosti informačných systémov alebo softvérového inžinierstva.
  • Tému je potrebné si vybrať do konca letného semestra, teda do 30.6. Napriek tomu, že je možné sa na tému priamo prihlásiť v AIS, je potrebné sa najprv skontaktovať s vedúcim práce a prediskutovať s ním očakávania a ciele danej témy. Po diskusii sa vedúci rozhodne o prijatí alebo neprijatí študenta na danú tému.

Simon Sinek napísal zaujímavú knihu Start with Why, v ktorej rozpráva o význame otázky Prečo? a snaží sa vysvetliť, že táto otázka je dôležitejšia ako otázky Ako? a Čo?.

Vysvetlime si, čo tieto 3 otázky znamenajú pre výber témy bakalárskej práce:

  • Prečo je tento problém dôležité riešiť?
  • Ako budem tento problém riešiť? Aké riešenie použijem? Akú technológiu alebo aký programovací jazyk zvolím?
  • Čo vlastne bude výsledkom riešenia? Každý problém môže mať viacej riešení. Aj keď dvaja robia to isté, výsledok môže byť úplne odlišný. Zodpovedať otázku Čo? je pri výbere témy bakalárskej práce najmenej dôležité. Inak povedané, na zodpovedanie otázok Ako? a Čo? je počas dvoch semestrov v 3. ročníku bakalárskeho štúdia dosť času.

Najdôležitejší postreh Simona Sineka je, že len otázka Prečo? je dlhodobým zdrojom inšpirácie a energie pre riešenie problému. To znamená, že je nutné si tému bakalárskej práce vybrať tak, aby ste vedeli Prečo riešite zvolený problém a Prečo je riešenie tohoto problému dôležité.

Ale ja chcem programovať v Pythone… Áno, aj to je jedna z myšlienok, ktorá Ti momentálne víri v hlave. Je to dôležitá myšlienka, ale nemala by byť rozhodujúca pri výbere témy. Neodpovedá totiž na otázku Prečo?, ale na otázku Ako?. Riešiť ľubovolný projekt, len preto, že je v Pythone, Ťa môže obrať o ďalšie príležitosti. Pri riešení problému môžeš zistiť, že iné technológie,  ako je napríklad Angular web aplikácia, Qt aplikácia alebo Android appka, sú vhodnejšie.

Uveďme si konkrétny príklad. Predpokladajme, že ambícia je vyriešiť hľadanie vo veľkých dátach. Prečo je potrebné riešiť tento problém? Pretože hľadanie vo veľkých dátach môže pomôcť navrhovať lieky, tak aby boli účinné, objasniť ako sa šíria nákazlivé choroby, pochopiť vzťah medzi počasím a teplotou oceánov, alebo vyhodnotiť obrovské množstvo dát z vesmírnych misií tak, aby sme vedeli predvídať, kedy na Zem najbližšie spadne asteroid.

Všetky tieto problémy sú istotne veľkým zdrojom inšpirácie pre riešenie niečoho fundamentálne dôležitého.

A teraz analýza „Ako si NEvybrať bakalársku prácu“. Najlepšie na to poslúži výmena emailov ohľadom témy bakalárskej práce (skrátená a upravená verzia):

Študent: Mám záujem robiť bakalársku prácu v jednej z oblastí: Data engineering, Data science, databázy.

M. Drozda: Ak vás článok zaujal, môžeme sa dohodnúť na téme bakalárskej práce.

Š: Ďakujem za link. Aj keď je vyvíjanie nových algoritmov zaujímavé, touto cestou sa nechcem vydať, nakoľko sa to javí veľmi zamerané na matematiku. Na druhej strane, použiť správny algoritmus na zlepšenie efektivity pri získavaní údajov z databázy je pre mňa viac lákavé.

MD: A ako chcete robiť Data science bez matematiky? Bez matematiky vám ostáva len front end development, html, css a php.

Š: Ak správne rozumiem, Data engineering je skôr o návrhu, tvorbe databáz, pipelines pre veľké množstvo dát a Data science o aplikovaní matematiky (štatistiky a analytiky) na dáta. Obe odvetvia potrebujú matematiku, no na prvý pohľad sa mi zdá, že Data science ju využíva omnoho viac a je pre ňu kľúčová. Kdežto v Data engineering sú potrebné skôr softvérové zručnosti a písanie kódu.

MD: Ten článok je o návrhu a tvorbe databáz. Na to, aby ste vedeli navrhnúť algoritmus pre databázu, musíte vedieť, ako funguje sql db engine, napr. isam, čo je matematika.

Š: Tvorba vlastných algoritmov nie je môj cieľ, skôr používanie už existujúcich. Často nastáva situácia, kde je lepšie vytvoriť vlastný algoritmus namiesto už existujúceho?

MD: Existujúce algoritmy nepochopíte a nebudete vedieť používať, pokiaľ ich matematicky nepochopíte. A bez pochopenia ich nebudete vedieť implementovať.

Š: Porozmýšľam nad tým, dalo mi to nový pohľad na danú oblasť. Môžem si vybrať, v akých jazykoch implementujem riešenie? Databázu budem musieť vytvoriť vlastnú, alebo použiť už existujúci database engine ?

MD: My už máme rozpracované riešenie v C++. Databáza už existuje, ale zatiaľ v nej nie sú reálne dáta, takže je možné použiť aj inú ako MySQL. Alebo myslíte iný engine ako isam?

Š: Aké majú C++ a isam výhody v tomto použití?

MD: C++ má výhodu, že je to oveľa rýchlejšie ako Python. Ináč povedané, môžete použiť Python, ale Python knižnice sú v C++, takže výber je obmedzený. Mám ale dojem, že nastáva skoro 100% nedorozumenie. Tá ťažká časť je pochopiť, prečo súčasné databázy nie sú pre vyhľadávanie v časových radoch vhodné, a ako tento problém vyriešiť. Samozrejme, implementácia musí byť efektívna, ale len odráža pochopenie veci.

Š: Myslím, že táto téma nie je pre mňa vhodná. Ďakujem Vám za informácie a konzultovanie, dosť mi to pomohlo.

Podarilo sa prediskutovať, prečo je vlastne hľadanie vo veľkých dátach potrebné? Zdá sa, že cieľ bola téma bakalárskej práce v Pythone, ale bez implementácie algoritmov, čo je skoro nemožné.

Ak si stále hľadáš tému bakalárskej práce a rád/rada by si sa naučil/-la indexovať veľké dáta a hľadať vo veľkých dátach, a popritom (možno) vyriešiť, čo sa ešte nikomu nepodarilo, téma je stále voľná. Téma je postaviť vyhľadávač ako Google, ale pre veľké dáta, nie pre textové reťazce.

Are you ready for a challenge?