První semestr na TU Delft

Za tři roky na FITu jsem se naučil spoustu věcí o kterých jsem před tím neměl ani tušení, podíval se díky tomu na rok do Singapuru, potkal spoustu nových lidí, a v posledním roce dokonce se spolužákem založil startup. Ale pokračovat v magisterském studiu se mi na stejné škole už nechtělo, a v ČR mě zrovna nic nedrželo. Chvíli jsem uvažoval o studiu na GeorgiaTech v USA, na které je možné získat prostřednictvím ČVUT stipendium, a o kterém moc zajímavě psal Vojta Mikšů. Nakonec jsem se ale rozhodl zůstat v Evropě a podal přihlášky na Aarhus University v Dánsku a TU Delft v Nizozemsku. Jako pojistku jsem vyplnil i přihlášku na FIT a FEL ČVUT. Vzali mě všude, nakonec jsem vybral Delft.

Výběrové řízení

K přihlášce bylo třeba přiložit certifikát z angličtiny (TOEFL s minimem 90 bodů), transkript odstudovaných předmětů (CGPA by mělo být alespoň 75% možného maxima), 2 doporučující dopisy (požádal jsem vedoucího bakalářky a vyučujícího jednoho předmětu), životopis, a nakonec motivační dopis. Rozsah motivačního dopisu byl kolem 1000 slov a měl jsem v něm vysvětlit motivaci pro výběr oboru, proč chci studovat zrovna v Delftu, popsat svoji bakalářskou práci a nastínit oblast, které bych se chtěl věnovat v diplomové práci.

Kladné rozhodnutí o přijetí přišlo už za 14 dní od podání přihlášky. Následně jsem měl několik měsíců čas na své finální rozhodnutí a zaplacení školného na první rok. V rámci celé EU jsou na všech školách pro všechny studenty z EU stejné podmínky jako pro místní. Na TU Delft tak platí studenti z EU školné €2083/rok, ostatní mezinárodní studenti to mají výrazně dražší (€14500/rok).

Ubytování

Ubytování pro studenty je v Delftu poskytováno exkluzivně prostřednictvím agentury DUWO. Bohužel jsem se o potvrzení nabídky ke studiu rozhodoval příliš dlouho a v květnu už bylo všechno studentské ubytování obsazené. Začal jsem odepisovat na desítky inzerátů na realitních portálech, ve Facebook skupinách, i kontaktoval pár realitních kanceláří. Bohužel bez úspěchu. Studenti ve sdílených apartmánech většinou preferují nizozemsky mluvící, majitelé soukromých bytů často nechtějí pronajímat studentům vůbec. Nakonec se mi podařilo booknout poslední volný pokoj v The Student Hotel.

The Student Hotel je síť studentských hotelů, která začala před pár lety v Amsterdamu a od té doby se rozšířila po celé Evropě. Poskytují ubytování pro mezinárodní studenty v ubytovnách připomínajících hotel. Součástí hotelu je restaurace s barem (The Commons), studovna, společenská místnost s klavírem, stolní tenis, posilovna a prádelna. Hotel je propojen s coworkingem TSH Collab. V Delftu by měli otevřít až v roce 2020, takže aktuálně byla pro mě nejbližší pobočka v Haagu.

IMG_20180901_180532
The Student Hotel

Doprava

V celém Nizozemsku je celkem dobře řešená hromadná doprava. Každý cestující má bezkontaktní kartu OV-chipkaart, kterou provede check-in při nástupu a check-out při výstupu. Stejná karta se používá na autobus, tramvaj, meziměstské vlaky, i půjčování kol. Bohužel cestování je tu i na světové poměry celkem drahé. Místní studenti to mají zdarma, ale mezinárodní studenti nárok na žádnou slevu nemají. Jediná možnost slevy je předplatit si nějaký tarif, např. 40% slevu během off-peak hours.

Díky kombinaci vysokých cen za dopravu a naprosto plochému reliéfu je tu přeprava na kole skoro národní sport. Vlastnit kolo je téměř povinnost, pěšky na delší vzdálenosti nikdo nechodí a Uber tu moc nejede. V jiných městech je možnost využít čínský bikesharing Mobike, nebo OV-fiets poskytovaný vlakovým přepravcem NS (Nederlandse Spoorwegen).

Cesta vlakem z Haagu do Delftu trvá 10 minut a dalších 10 minut autobusem z vlakového nádraží na kampus. Aktuálně tedy spíše 20 minut, kvůli rekonstrukci mostu, po jehož znovuotevření by měla na kampus vést i tramvajová trať. Ale nejrychlejší (o víkendu i jediná) možnost jak se dostat na kampus je půjčit si sdílené kolo Mobike. A pokud si předplatíte Mobike Pass, za €12/měsíc můžete využít neomezené množství 40minutových jízd. V letních měsících většinou jezdím na svém kole přímo z Haagu, je to 10 km dlouhá cesta po cyklotrase s téměř nulovým převýšením.

Kampus

Centrem kampusu se táhne Mekelpark, park s rozlohou větší než historické centrum Delftu. Ještě před pár lety na jeho místě bylo parkoviště, teď je tu pěší zóna a přes kampus projíždí už jen autobusy a kola. Po obou stranách parku se nacházejí budovy jednotlivých fakult. Při vstupu přes severní část kampusu člověk nejdříve potká Aulu, klasický příklad brutalistické architektury. Za ní stojí ikonická knihovna s pochozí travnatou střechou a kuželem, skrz který dovnitř vniká denní světlo. Naproti Aule je nově otevřená budova Pulse, která představuje první energy-neutral budovu na kampusu.

O pár desítek metrů dál stojí stará budova EEMCS (Electrical Engineering, Mathematics and Computer Science), kde trávím nejvíce času. Jedná se o jednu z nejstarších budov na kampusu a prý se ji nevyplatí již dále udržovat. Jedním z problémů je také její aerodynamika. Když se do budovy z boku opře silnější vítr, je skoro nebezpečné kolem projíždět na kole. Veškeré kanceláře tak byly minulý rok přesunuty do nové budovy a v nejbližších letech je v plánu stavba nové budovy pro výuku a demolice té stávající. O pár metrů dál je nově rekonstruované Sports & Culture centrum s vybavenou posilovnou, několika sportovními halami a venkovními hřišti.

IMG_20180822_100848
Mekelpark a fakulta EEMCS

Možností stravování je na kampusu spousta. Každá fakulta má svoji canteen nebo food&beverage corner, v některých budovách jsou i stánky soukromých podnikatelů. V Mekelparku každé poledne stojí foodtrucky se světovou kuchyní. Postupně se tak naplňuje nová vize pro stravování na kampusu. Bohužel na EEMCS je teď situace asi nejhorší, je zde pouze jedna jídelna, která je otevřená jen na oběd, a mimo to není možnost si ani koupit bagetu v automatu.

IMG_20190322_111538 (1)
Food market v Pulse

Výuka

V magisterské Computer Science jsou jen 2 tracky: Software Technology a Data Science. Oba jsou velmi podobné, liší se jen skladbou povinných předmětů. Každý track má 10 core předmětů, ze kterých je potřeba si vybrat alespoň 5. Zbytek předmětů je plně volitelný. Každý si tak může složit téméř libovolný studijní plán (Individual Exam Plan), který by měl ale aspoň trochu dávat smysl, jelikož jej musí nakonec schválit profesor z výzkumné skupiny, ve které píšete diplomovou práci, Master Coordinator a Board of Examiners. Dále jsou tu nabízeny speciální programy Cyber Security, Bioinformatics a Information Architecture, které jsou vyučovány ve spolupráci s dalšími univerzitami nebo fakultami.

Výuka na magistru tu probíhá trochu jiným stylem než jsem byl zvyklý z ČVUT. Každý akademický rok je tu rozdělený na 2 semestry a každý semestr ještě na 2 čtvrtletí. Většina předmětů trvá jen jedno čtvrtletí, některé náročnější předměty jsou rozloženy na celý semestr. Každé čtvrtletí je doporučeno mít jen 3-4 předměty (15 kreditů). Tempo je sice celkem intenzivní, ale člověk se tak může plně soustředit jen na pár předmětů.

Žádné předměty nemají povinnou účast. Práce na cvičeních je samostatná, studenti řeší úlohy sami nebo ve dvojicích, a mají možnost klást cvičícím dotazy. Nestane se tu ale, že by cvičící řešil problémy přede všemi na tabuli. Pro online komunikaci mezi studenty a učiteli existuje pro každý předmět buďto diskuzní fórum na studentském portálu, nebo tým na školním Mattermost serveru (open-source alternativa Slacku).

Je tu kladen důraz na spolupráci a učení se od ostatních. Hodně předmětů má skupinové úkoly, některé předměty jsou dokonce založeny jen na projektu a nemají vůbec teoretickou zkoušku. Teoretické zkoušky trvají většinou 3 hodiny a testují spíše hlubší porozumění dané látky a schopnost teorii aplikovat na nové typy problémů, než nutnost pamatovat si nějaké vzorce a definice, které bývají přímo součástí zadání. Známkování v Nizozemsku probíhá na škále 1-10, pro postup je většinou potřeba získat 6 a více. Zkouškové je vždy poslední 2 týdny na konci čtvrtletí a každý předmět má jen jeden termín zkoušky, případně je možnost jít na opravný termín (resit) v dalším čtvrtletí.

[IN4191] Security and Cryptography → 7.0

První z core předmětů s osnovou podle knížky Cryptography Made Simple. Kromě základů diskrétní matematiky nepředpokládal žádné znalosti kryptografie, takže velká část pro mě bylo jen opakování BI-BEZ z FITu, ale v některých tématech jsme šli více do hloubky. Například jsem se dozvěděl o různých úrovních bezpečnosti ([OW|IND]-[PASS|CPA|CCA]) a pro každé bezpečnostní schéma jsme si pomocí kryptografických her dokázali, jaký typ bezpečnosti zaručuje. Navíc jsme probrali základy homomorfického šifrování, Shamirovo sdílení tajemství, Legendre a Jacobi symboly, nějaká pokročilá podepisovací a šifrovací schémata a autentikační protokoly.

[AP3421] Fundamentals of Quantum Information → 7.5

TU Delft je jednou z předních univerzit zabývající výzkumem kvantových počítačů v Evropě. Centrem výzkumu je kvantový institut QuTech, tento rok se otevřela ještě Microsoft Quantum Lab. Vyvíjí se tu např. platforma Quantum Inspire usnadňující programování kvantových algoritmů, probíhá spolupráce s Intelem na vývoji kvantových koprocesorů. TU Delft je zároveň členem evropské Quantum Internet Alliance. Jedním z nejbližších cílů je propojit do roku 2020 Amsterdam, Delft, Haag a Leiden kvantovým internetem, který například umožní absolutně bezpečnou komunikaci využívající principu kvantového provázání.

Byla by škoda toho nevyužít, tak jsem si zapsal alespoň úvodní kurz. Je vyučovaný pod fakultou Applied Sciences, ale otevřený pro studenty fyziky, matematiky i computer science. Bylo vtipné sledovat, jak informatici měli problém s lineární algebrou a základy kvantové mechaniky, zatímco fyzici zase zápasili s binární aritmetikou a logickými hradly. Každý týden byl povinný domácí úkol a na přednášce kvíz na látku z minulé hodiny.

Začali jsme základy kvantové fyziky, jelikož předmět nevyžadoval kromě lineární algebry žádné předchozí znalosti. Seznámili jsme se s reprezentací stavu qubitů (kvantových bitů), principem superpozice a kvantovým provázáním, které umožnuje vzájemně propojit stav dvou qubitů. Jakákoliv operace provedená na jednom qubitu se pak okamžitě projeví na tom druhém. Ukázali jsme si využití kvantové komunikace pro kvantovou distribuci klíče (QKD), superhusté kódování a kvantovou teleportaci. Nakonec jsme si představili nejznámější kvantové algoritmy – Groverův vyhledávací algoritmus a Shorův algoritmus pro faktorizaci celých čísel. Předmět byl hodně teoretický a průběh algoritmů jsme jen počítali na papír. V dalším čtvrtletí na předmět navazuje prakticky zaměřený Quantum Information Project, ale na ten jsem už neměl časovou kapacitu.

Byl to předmět za nejméně kreditů a asi nejméně prakticky využitelný, ale nakonec mi zabral nejvíce času a byl jeden z nejzajímavějších.

Groverův vyhledávací algoritmus v QASM a vizualiace v Quantum Inspire Groverův vyhledávací algoritmus v QASM a jeho vizualizace v Quantum Inspire

[IN4301] Advanced Algorithms → 8.0

Další z core předmětů, tento trval celý semestr a byl rozdělen na 3 části, každou učil jiný profesor. První třetina se věnovala exaktním algoritmům pro řešení NP-těžkých problémů, což jsou problémy, pro které neznáme řešení v polynomiálním čase. Definovali jsme si ty nejznámější problémy (např. problém obchodního cestujícího, problém batohu, vrcholové pokrytí, …) a algoritmy pro jejich řešení využívající bounded search trees, dynamické programování, stromový rozklad a předzpracování.

Ve druhé části jsme se vzdali potřeby najít optimální řešení problému a zabývali se sestavováním aproximačních algoritmů a dokazováním jejich přesnosti. Pro některé problémy existují algoritmy, které nám dovolí získat libovolně přesné řešení na úkor doby běhu (polynomial-time approximation scheme). Pro některé problémy existují algoritmy, které garantují alespoň nějakou konstantní přesnost v porovnání s optimem. A některé problémy jsou naopak prokazatelně neaproximovatelné, tedy neexistuje pro ně žádný aproximační algoritmus s garantovanou přesností.

Poslední částí byl úvod do lineárního programování, což je metoda řešení optimalizačních problémů, při které se problém nejdříve formuluje jako soustava lineárních rovnic a následně se využije univerzální solver pro jejich výpočet. I lineární programování lze použít pro návrh aproximačních algoritmů za využití LP relaxace, teorie duality a semidefinitivního programování.

Předmět byl pro mě asi jedním z nejnáročnějších. Během semestru jsme měli 6 teoretických úkolů zabývajících se návrhem algoritmů a dokazováním jejich korektnosti, 3 praktické programovací úlohy (implementace exaktního a aproximačního algoritmu pro plánování úloh, implementace SDP algoritmu pro Max-Flow problém). Po dokončení každé ze tří částí následovala část zkoušky (midterm). Doporučenou literaturou byly vybrané kapitoly z Algorithm Design od Kleinberg & Tardos.

[CS4200] Compiler Construction → 6.6

Výzkum v oblasti programovacích jazyků na TU Delft, stejně jako tento předmět, vede prof. Eelco Visser. Jeho dlouhodobým projektem je vývoj Spoofax Language Workbench, nástroje pro návrh doménově specifických jazyků (DSL) a jejich překladačů. Nástroj sám používá několik vlastních DSL pro definici jednotlivých částí překladače. SDF (Syntax Definition Formalism) slouží pro definici syntaxe, Stratego pro definici přepisovacích pravidel, NaBL (Name Binding Language) pro name binding a typovou kontrolu, FlowSpec pro definici pravidel pro statickou analýzu a DynSem pro definici dynamické sémantiky jazyka.

Spoofax na základě definice jazyka umí vygenerovat překladač a veškeré podpůrné nástroje pro IDE, např. zvýraznění syntaxe nebo autocomplete. Značně tak usnadňuje vývoj a údržbu jednoduchých programovacích jazyků. Kromě výuky na TU Delft jej používají např. v Oracle Labs.

Prvních pár přednášek týkajících se syntaktické analýzy bylo pro mě opakování BI-PJP, ale postupně jsme se dostali k zajímavějším věcem jako name binding, scope graphs, type constraints, control a data flow analysis, partial evaluation, interpreter, Java bytecode a algoritmy pro garbage collection.

Předmět slouží převážně jako teorie k paralelně probíhajícímu předmětu Compiler Construction Project, ve kterém je cílem vytvořit ve Spoofax kompletní překladač pro zjednodušenou verzi Javy. Mně už se další předmět nevlezl do rozvrhu, takže jsem chodil jen na přednášky. Trochu jsem toho litoval, když jsem se pak většinu výše zmíněných jazyků musel naučit jen kvůli zkoušce. Doporučenou literaturou byly většinou papery týkající se vývoje Spoofaxu, pro klasickou teorii pak proslulá Dragon Book.

[IN4150] Distributed Algorithms → 7.5

Předmět poskytuje přehled různých algoritmů pro řešení klasických problémů v distribuovaných systémech. Takové algoritmy lze rozdělit do tří hlavních kategorií.

Synchronizace. Většina distribuovaných systémů je charakteristická tím, že nemá sdílenou paměť a sdílené hodiny. Pro případy, kdy je potřeba zachovat pořadí nějakých událostí, je potřeba implementovat vlastní synchronizační mechanismus, např. logické hodiny, díky nimž lze pak implementovat různé algoritmy pro řazení zpráv.

Koordinace. Někdy je potřeba distribuovaně z několika procesů vybrat jeden, který provede nějakou akci, problém známý jako leader election. Ve větších systémech je problémem efektivní směrování, pro které lze využít konstrukci minimum spanning tree (MST). Pokud procesy potřebují exkluzivně přistupovat ke sdíleným prostředkům, jsou tu algoritmy pro vzájemné vyloučení.

Konsenzus a fault tolerance. V případě, že stavíme systém, který má být robustní vzhledem k možným chybám a selhání komponent, je potřeba počítat s nějakou redundancí. Pokud máme několik nezávislých procesů, které se mají domluvit na sdíleném stavu, je potřeba algoritmus pro dosažení konsenzu.  Užitečnou třídou konsenzus algoritmů je state machine replication, která je např. základem pro replikaci databází. Jedněmi z nejnámějších jsou Practical Byzantine Fault Tolerance (PBFT), Paxos nebo Zyzzyva.

Přednášky spočívaly většinou pouze ve vysvětlování pseudokódu a demonstrování běhu jednotlivých algoritmů. Na cvičeních jsme pak měli implementovat vybrané algoritmy za využití Java Remote Method Invocation (RMI) a demonstrovat jejich funkčnost v distribuovaném prostředí. Kromě zkoušky bylo významnou součástí známky také paper review. Mohli jsme si vybrat relevantní paper z posledních let z konferencí DISC nebo PODC, já recenzoval Hybrid Consensus: Efficient Consensus in the Permissionless Model.

[CS4160] Blockchain Engineering → 8.9

První hodinu jsme utvořili skupiny a vybrali si ze seznamu nabízených projektů, na čem chceme pracovat. Každá skupina pracovala na jednom projektu, který měl svého vedoucího. Výstupem měl být funkční kód a krátký report.

Naše skupina pracovala na „Self-replicating Bitcoin-based entities using deep re-enforcement learning“, výsledkem naší práce je Dollynator (název odkazuje na první klonovanou ovci Dolly a umělou inteligenci Terminátora). Člověk koupí VPS a nainstaluje na něj VPN a náš program. Program na serveru následně spustí Tribler (BitTorrent klient zaměřený na soukromí vyvíjený na TU Delft) exit node, který routuje traffic v Tor síti sloužící pro stahování torrentů. Za to získává odměnu v podobě MB tokenů uložených na Trustchain (blockchain vyvíjený na TU Delft). Tyto následně může vyměnit na decentralizované směnárně za Bitcoin. Za Bitcoin nakoupí automaticky další VPS a VPN pomocí knihovny Cloudomate a celý proces se opakuje. Vznikne tak cirkulární ekonomika, která funguje bez zásahu člověka, a řeší problém s nedostatkem exit nodů v síti. O našem projektu se dokonce zmínili ve článku na TorrentFreak.

Dalším zajímavým projektem byl např. blockchain pro bookování ubytování, na kterém tým spolupracoval s Booking.com sídlícím v Amsterdamu.

Nakonec to byl více engineering, než blockchain. I když předmět nemá teoretickou zkoušku, součástí byly různé přednášky z oblasti blockchainu převážně od lidí z Delft Blockchain Lab. Úvod do Bitcoinu, Etherea, zero-knowledge proofs, Lightning Network. Jedním z pozvaných řečníků byl např. spoluzakladatel Ocean Protocolu. Ale protože každou přednášku měl někdo jiný, celkově to byl jen lehký úvod do různých témat a v žádné oblasti se bohužel nešlo příliš do hloubky.

TL;DR

Jaký je zatím celkový dojem ze studia? První týdny byly náročné, po roce opět zvykání si na každodenní komunikaci v angličtině, na nové přízvuky. Oproti bakaláři na FITu mě překvapilo celkem rychlé tempo, v některých předmětech opravdu je potřeba se připravovat na každou hodinu a studovat doporučenou literaturu. Úkoly často nejsou jen o tom něco vypočítat nebo naprogramovat, ale i vyhodnotit a napsat několikastránkový report. Magisterský program je hodně zaměřený na výzkum, místo knížek často studujeme papery popisující state-of-the-art techniky. Profesoři učí přímo to, čemu se osobně věnují, což vede obecně ke kvalitnějším přednáškám. Na druhou stranu, některé předměty mi přijdou spíše jako reklama na výzkumnou skupinu, aby přitáhli studenty, kteří u nich budou pracovat na diplomové a třeba i doktorské práci. Ale celkově mě to baví, můžu studovat jen předměty které chci, díky absenci zápočtů mi přijde studium méně psychicky náročné, a příjemný je také pocit, že mě na konci už nečeká státní závěrečná zkouška. 😀

Poslední rok na FIT ČVUT

Po návratu ze Singapuru do ČR mě čekal poslední rok bakalářského studia na ČVUT. Kreditů jsem měl již díky množství volitelných předmětů dost, zbývalo tedy jen dostudovat oborové předměty mého studijního programu. Všechny jsem je zvládl vtěsnat do zimního semestru, takže celý letní semestr jsem se pak mohl věnovat už jen psaní bakalářské práce.

Pátý semestr na FIT ČVUT

[BI-PPR] Projekt, prezentace a rétorika –> B

Předmět slouží jako příprava k bakalářské práci. Probrali jsme strukturu odborné práce, práci se zdroji, prezentační dovednosti. Pro získání zápočtu bylo potřeba mít schválené téma BP a sepsat poziční zprávu. Během semestru jsme si napsali abstrakt, úvod a provedli prvotní literární rešerši. Na poslední hodině jsme pak své téma odprezentovali jako trénink na skutečnou obhajobu, a dostali zpětnou vazbu.

[BI-PST] Pravděpodobnost a statistika –> D

Poslední a pravděpodobně nejjednodušší matematický předmět na FITu. Pořád ale dost těžký na to, abych musel bojovat o každý bod potřebný k zápočtu. Náhodné veličiny, rozdělení pravděpodobnosti, konfidenční intervaly, testování hypotéz, lineární regrese. Součástí předmětu byl i skupinový projekt, kde jsme analyzovali jednoduchý dataset pomocí R.

[BI-EIA] Efektivní implementace algoritmů –> A

Jak implementovat výpočetní algoritmy v C tak, abychom dostali z počítače maximum výkonu? Tato oblast je známa jako High Performance Computing. Jde o to napsat kód, který umožní kompilátoru provést maximum optimalizací, využít vektorových instrukcí procesoru a efektivně pracovat s hierarchií vyrovnávací paměti. Nakonec jsme si ukázali, jak jednoduše paralelizovat algoritmy pomocí direktiv OpenMP. Všechny techniky jsme si vyzkoušeli na praktických úlohách, ve kterých jsme měli zrychlit nějaký existující kód. Nakonec jsme si vyzkoušeli i kompletní implementaci, optimalizaci a paralelizaci vybraného algoritmu, já řešil LU faktorizaci.

[BI-APS] Architektura počítačových systémů –> B

Hardwarový předmět, který se zabývá převážně architekturou procesoru a jednotlivými fázemi zpracování instrukcí. Dnešní procesory umožňují proudové zpracování instrukcí (pipelining), což znamená, že provádí více po sobě jdoucích instrukcí najednou, kdy každá instrukce je v jiné fázi zpracování. Takové chování je ale kvůli možným skokům v programu spekulativní a výsledky některých instrukcí se nakonec musí zahodit. Takové případy se snaží minimalizovat různé metody predikce skoku, které jsme si také představili. Na druhé straně je datový paralelismus využívající vektorových instrukcí, které umožňují v jedné instrukci provést více výpočtů najednou. Závěrem předmětu byla semestrální práce, ve které jsme implementovali skalární procesor ve Verilogu (jazyk pro modelování elektronických systémů).

[BI-EMP] Ekonomické a manažerské principy –> A

Předmět zabývající se ekonomikou podniku a jeho celým životním cyklem, finančními výkazy, základy účetnictví. Jelikož už pár let zkušeností s podnikáním mám, zas tolik nového jsem se nedozvěděl. Ale asi jsou to dobré základy, které by měl znát každý. Předmět nemá zkoušku, je zakončen prezentací zvoleného podnikatelského záměru a tvorbou business plánu.

Bakalářská práce

Téma bakalářské práce a vedoucího je ideální si zvolit už v zimním semestru, hlavně kvůli provázanosti s předmětem BI-PPR. Je možné si vybrat z nabízených témat v systému závěrečných prací, nebo si najít vedoucícho a navrhnout nějaké vlastní téma. To by mělo alespoň trochu souviset s vaším studijním oborem, například v teoretické informatice by se nemělo jednat o čistě implementační projekt. Já jsem přišel s návrhem napsat Bitcoinovou peněženku pro Android plně podporující zařízení TREZOR (hardwarová peněženka pro kryptoměny), jelikož žádná taková ještě na trhu nebyla. Zadání mi prošlo na první pokus. Cílem práce bylo napsat obecnou knihovnu pro komunikaci mezi Android zařízením a TREZORem, a následně vytvořit Bitcoinovou peněženku demonstrující využití této knihovny.

Při implementaci mi hodně pomohla knížka Mastering Bitcoin, specifikace Bitcoin Improvement Proposals a konzultace s CTO Satoshi Labs, kteří mi dokonce poskytli na testování jejich TREZOR One i TREZOR Model T. Výsledek mé práce je k dispozici na GitHubu, do samotného textu práce je možné nahlédnout v digitální knihovně ČVUT. Text by kromě dokumentace měl posloužit i jako ucelený teoretický úvod do fungování kryptoměnových peněženek a nepředpokládá žádné předchozí znalosti kryptografie.


Bitcoinová peněženka pro Android podporující TREZOR

Státní závěrečná zkouška

Poslední den na FIT ČVUT

Po dopsání práce následovalo měsíční nepřetržité opakování všeho, co jsem se za celé studium naučil a zapomněl. Bylo zajímavé vidět, jak látka většiny předmětů do sebe zapadá, ale na druhou stranu bylo demotivující se učit znovu do detailů všechno, z čeho už jsem zkoušku udělal, a prokázal tak, že to umím.

Konečně nastal den státní zkoušky. Ráno dokončuji prezentaci k obhajobě a v poledne dorážím do školy. Dostávám 2 okruhy otázek a mám několik desítek minut času na přípravu. Obhajoba bakalářské práce proběhla bez problémů, komise žádné doplňující otázky neměla a dostal jsem A navržené vedoucím. Následovala teoretická zkouška z tematických okruhů. Tady jsem se trochu zamotal do teorie překladačů až tak, že mě skoro chtěli vyhodit, ale nakonec jsem dostal náhradní otázku. K té už jsem něco na místě vymyslel a nakonec si odnesl celkovou známku B. Ale znovu jsem si uvědomil absurditu celé zkoušky, když A s červeným diplomem od F dělila jedna nešťastně položená otázka. Naštěstí tímto dnem bylo mé studium na FITu úspěšně ukončeno.

Druhý semestr na Nanyang Technological University

Po měsíčních prázdninách, které jsem strávil cestováním po Taiwanu, Vietnamu a na pláži na tropickém ostrově v Malajsii, jsem se v lednu zase vrátil do Singapuru. Opět jsem si zapsal 5 předmětů. Celkově mi druhý semestr přišel jednodušší, předměty nevyžadovaly tolik práce během semestru, neměl jsem žádné skupinové projekty a také jsem si skoro zvyknul na místní angličtinu.

[CZ2004] Human Computer Interaction → A-

normanNa NTU povinný předmět zaměřený na tvorbu uživatelských rozhraní. Obsahem jsou principy kvalitních uživatelských rozhraní (7 Stages of Action, 8 Golden Rules of Interface Design), návrh prototypů, testování použitelnosti, ale také základy psychologie. Během semestru jsme měli vytvořit low fidelity a high fidelity prototyp pro aplikaci na správu projektů, který splňuje všechny principy dobrého user-centred designu. Předmět by se dal shrnout jako základy UX pro programátory. Mně přišla většina věcí celkem zřejmá, možná proto, že už se tvorbou aplikací několik let zabývám, ale bylo zajímavé poznat teorii za tím, a konečně jsem si přečetl skvělou knihu Design of Everyday Things od Dona Normana.

[CZ4001] Virtual and Augmented Reality → B

Virtuální a rozšířená realita je teď hodně žhavé téma. Vývoji virtuální reality se naplno věnuje Facebook, HTC i Google. Zatímco Oculus Rift od Facebooku a HTC Vive se specializují na hraní her na výkonných PC, pro Google Daydream stačí podporovaný smartphone a levný headset, má tak potenciál pro masivnější adopci. I když prototyp Google Glass se neuchytil, vyvinout brýle se skutečnou rozšířenou realitou je dlouhodobým cílem Microsoftu, Facebooku i Applu.

První polovina předmětu se věnovala VR, nebo spíše deklarativnímu jazyku VRML. Cílem bylo představit prakticky koncepty transformace 3D objektů, aplikace textur, animace a osvětlení. Tahle část byla trochu zklamáním, jelikož zastaralé VRML asi dnes už nemá žádné praktické uplatnění. VRML bych nahradil minimálně jeho nástupcem X3D, nebo WebGL, které se pak dá použít i v kombinaci s novým standardem WebVR. Ale chápu, že mělo jít spíše o představení principů, než o konkrétní technologii.

Druhá polovina semestru byla trochu zajímavjší, věnovali jsme se teorii marker-based tracking pro AR, výpočtu transformačních matic pro vykreslování 3D objektů v souřadnicích reálného světa nebo třeba principu fungování QR kódů. Ukázali jsme si, jak aplikovat AR v praxi pomocí nástrojů ARToolkit nebo Vuforia, ale žádný praktický úkol, kde bychom si to vyzkoušeli, zadán nebyl. Takže předmět byl spíše motivací začít se těmito tématy zabývat nějak více do hloubky samostatně.

artoolkit_pipeline_2 ARToolkit Pipeline

[CZ4002] Visual Information Processing and Management → B+

První část semestru jsme se zabývali kódováním a kompresí obrázků. Prošli jsme všechny základní stavební bloky komprese: aritmetické/Huffmanovo/run-length kódování, kvantizace, prediktivní kódování, diskrétní kosinová transformace. Následně jsme si ukázali, jak jsou všechny principy využity ve formátu JPEG. Nakonec jsme okrajově zavadili o image recognition a detekci hran a významných bodů. V druhém semestru jsme kódování rozšířili o časový rozměr a naučili se, jak funguje kódování videa. Tam jsou principy pro kódování obrázků rozšířeny o algoritmy pro motion estimation. Jako příklad video formátu jsme rozebrali H.264.

Během semestru nebyly žádné úkoly, až na závěr jsme měli napsat recenzi 2 paperů. První byl z oblasti zpracování videa: „A New Diamond Search Algorithm for Fast Block-Matching Motion Estimation“. Druhý paper jsme si měli najít sami z oblasti image compression and processing, já si vybral „FLIF: Free lossless image format based on MANIAC compression“.

jpeg_pipeline
JPEG Encoder

[HH2017] History of Information Technology → B+

Tento předmět nabízený fakultou Human and Social Studies jsem si zapsal na poslední chvíli, doslova pár minut před první přednáškou. Historie mě sice nikdy moc nebavila, ale přednášky v podání prof. Hallama Stevense z Harvardu byly dost zajímavé, má velký nadhled a o technologických objevech mluví v širokém historickém a sociologickém kontextu. Navíc za celý rok jediný přednášející s normální angličtinou.

Prezentace se skládaly jen z obrázků, bylo tedy potřeba chodit na přednášky a dělat si zápisky. Začíná se historií záznamu a přenosu informací, přes mechanické kalkulátory 19. století, rozvoj počítačů v období 2. světové války až k nedávné minulosti osobních počítačů a historii internetu. Předmět využívá Technology Enhanced Learning, což znamená, že po každé přednášce následovaly jako domácí úkol různé online aktivity, např. provést určité početní operace na simulátorech mechanických kalkulátorů (Arithmometer, Difference Engine), dešifrovat zprávu na simulátoru Enigmy nebo něco naprogramovat na simulátoru Altair 8800.

Během semestru jsme měli ve dvojicích prezentace na technologie z aktuálně probíraného období, já prezentoval historii modemu. Semestrální prací bylo vytvořit multimediální prezentaci rozebírající historií vybrané technologie v průběhu času, já zpracovával historii mobilních telefonů.

babbage-difference-engine-2_700 Charlese Babbage’s Difference Engine

[LC9002] Chinese Language Level 2 → A

V druhé úrovni čínštiny jsme dále rozšiřovali slovní zásobu, zaměřenou hlavně na časové údaje, nakupování, konverzace v restauraci a názvy jídel. Přišlo mi to jednodušší než první semestr. Když člověk umí základy, už to jde rychleji. Kromě 2 testů měl každý asi 10minutovou prezentaci na libovolné téma, já představil Českou republiku. Na konci semestru jsme pak měli ve dvojicích natočit několikaminutové video s dialogem a ideálně nějakým příběhem. Zpestřením bylo, když poslední hodinu učitel přinesl těsto, mleté krevety, přenosný vařič a učili jsme se vařit čínské knedlíky 饺子 (jiaozi).

charles-deluvio-271645 (1)
Čínské knedlíky

Po poslední zkoušce jsem po 9 měsících odletěl ze Singapuru, ale ještě před opuštěním Asie jsem navštívil Hong Kong, Shengzhen a Šanghaj. Využil jsem tak trochu roční studium čínštiny a poznal jedno z největších měst světa.

Teď už jsem přes měsíc doma. Jelikož mi ještě chybí na FITu pár předmětů, které se na NTU neučí, budu muset o rok prodloužit studium. Ale určitě se ten rok vyplatil, kromě studia celkem zajímavých předmětů jsem poznal lidi z celého světa, naučil se porozumět různým přízvukům angličtiny, procestoval kus Asie a koukám na svět zase s trochu větším nadhledem. Pokud máte možnost studia v zahraničí, určitě toho využijte!

První semestr na Nanyang Technological University

Přicházím k odletové bráně na Letišti Václava Havla a předkládám svůj palubní lístek. Po oskenování kódu se ale rozsvítí červená kontrolka a ozve chybový tón. Asi pro mě už není v letadle místo? Free upgrade! Dostávám nový palubní lístek s titulkem BUSINESS. Bez čekání ve frontě nastupuji do letadla a hned po usazení mě letuška vítá jménem a na stolku mi přistává sklenka šampaňského.

Takhle nějak před 6 měsíci začala moje cesta do Singapuru. Co tam? Díky ČVUT se mi naskytla možnost ročního studijního pobytu na Nanyang Technological University. Jak probíhá takové přijímací řízení, jsem popsal v minulém článku. Teď už mám nějakou dobu za sebou konec prvního semestru, tak se pokusím trochu přiblížit, jak to vypadá na jedné z nejlepších univerzit v Asii.

Kampus

Areál NTU se rozléhá na ploše 200 hektarů a je považován za jeden z nejhezčích kampusů na světě. I přes to, že se skládá z více než 100 budov, všude je spoustu zeleně a připadáte si spíše jako v zahradě. Probíhá zde také iniciativa EcoCampus, jejíž vizí je být nejekologičtějším campusem na světě. Cílem je do roku 2020 snížit o 35 % množství používané energie, vody a odpadu. V praxi to znamená třeba větší pokrytí střech solárními panely, efektivnější systém klimatizace nebo nasazení samořiditelných elektrických autobusů pro přesun po areálu.

Trochu nevýhoda je poloha na úplném západě ostrova a izolace od zbytku města, do centra se jede autobusem a metrem přes hodinu. Od místních tak můžete slyšet výraz Pulau (malajsky ostrov) NTU. Dál na západ už je jen džungle a občas se stane, že vás v koupelně překvapí krajta nebo se dveřmi prokouše luskoun.

Na druhou stranu, pokud bydlíte na kolejích, do města skoro není potřeba jezdit, na kampusu je vše potřebné – supermarket, restaurace, food courty, fast-foody (McDonald’s, Subway, KFC, Dunkin‘ Donuts), kavárny (Starbucks, The Coffee Bean & Tea Leaf), kadeřnictví i pobočka banky. Pro sportovní rekreaci je k dispozici stadion, posilovna, tenisové kurty, bazén a běžecká trasa.

IMG_20161117_115350
Hall of Residence 3

IMG_20161116_185422
North Hill Food Court

IMG_20170119_194041
Školní McDonald’s

NTU se skládá z několika fakult, většina jich sídlí ve společné budově a sdílí přednáškové místnosti. Hlavní a nejstarší budova je rozdělena na 2 propojené části – North Spine a South Spine. Chodby jsou většinou z jedné strany otevřené, takže můžete přecházet mezi místnostmi nebo sedět u stolku a být pořád na čerstvém vzduchu. Architektonicky zajímavá je budova The Hive, otevřená v roce 2015. Vzhledem připomíná včelí úl nebo košíky s dim sum (tradiční čínské chuťovky). Uvnitř jsou menší třídy vybavené interaktivními tabulemi a kulatými stoly, u kterých sedí studenti po skupinách. Netradiční rozložení tříd má pomoci realizovat tzv. flipped classroom model, styl výuky založený na větší interaktivitě mezi studenty a učitelem. Za zmínku stojí ještě budova School of Art, Design & Media, která má na celé ploše střechy trávník.

IMG_20170127_121017 (2)
The Hive, „dim sum building“

IMG_20161124_115854
School of Art, Design & Media

Výuka

Délka bakalářského studia v Singapuru je obvykle 4 roky a pak jde většina rovnou pracovat, na magisterský program pokračuje málokdo. Doporučený průchod programem Computer Science je na NTU takový, že první 3 roky se studují povinné předměty, z toho jeden semestr je vyhrazen pro povinný internship. Poslední rok má každý specializované předměty podle svého oboru a pracuje na závěrečném projektu.

Styl výuky u většiny předmětů jsou klasické přednášky a cvičení. U některých předmětů jsou cvičení po menších skupinách, někde jen formou přednášky, kde učitel ukazuje řešení příkladů. Všechny přednášky jsou automaticky nahrávány a můžete si je kdykoliv pustit, ale cvičení se nenahrávají a odpovědi se nezveřejňují, takže se hodí tam být, protože podobné příklady se pak objeví ve zkoušce. V každém technickém předmětu jsme měli nějaký skupinový projekt, jehož výstupem bylo zpracovat několikastránkový report, popisující jak jsme postupovali a jakých jsme dosáhli výsledků.

[CZ4031] Database System Principles → A

Předmět zabývající se principy, na kterých funguje většina relačních databázových systémů. Ne z pohledu uživatele, ale vnitřního fungování databázového stroje. Vše od typů indexů (B+ Tree a Hash index), přes různé algoritmy pro implementaci databázových operátorů (selekce, projekce, vektorový součin, spojení) a optimalizace dotazů prováděné databázovým strojem. Posledním tématem byla správa transakcí a jak mohou být realizovány jejich ACID vlastnosti (atomicita, konzistence, nezávislost, trvanlivost) pomocí logování, zámků a dalších mechanismů. Součástí byly 2 skupinové projekty, které spočívaly v konstrukci SQL dotazů nad relativně velkou databází a následně vytvořením vhodných indexů, aby provedení dotazů bylo co nejrychlejší. Celkem zajímavý předmět, díky kterému jsem pochopil, co všechno probíhá mezi tím, co se předá databázi SQL dotaz a tím, kdy se vrátí výsledek.

pgadmin_query_plan
Vizualizace prováděcího plánu v pgAdmin

[CZ4032] Data Analytics And Mining → B+

Jaké je nejvíc trendy povolání pro 21. století? Data mining, nebo-li vytěžování znalostí z dat, je v současnosti hodně populární oblast, překrývající se statistikou, strojovým učením a databázovými systémy. Je možné ho využít třeba k optimalizaci marketingových kampaní, doporučování podobných produktů v e-shopech, detekci zneužití kreditních karet nebo v bioinformatice. Běžný postup spočívá v předzpracování dat, aplikaci vhodných algoritmů (typickými úlohami jsou vytěžování asociačních pravidel, klasifikace, regrese, shlukování a detekce anomálií) a vyhodnocení výsledků. V rámci skupinového projektu jsme si celý proces vyzkoušeli v praxi, náš tým se zabýval predikcí úspěchu studentů na základě demografických a sociálních ukazatelů a dalších atributů. Obsah přednášek a cvičení je založen na knížce Introduction to Data Mining.

infographic

[CZ4042] Neural Networks → B

Výzkum v oblasti umělých neuronových sítí (výpočetní model inspirovaný lidským mozkem) probíhá tak rychle, že obsah tohoto předmětu musí být každý rok upravován, aby zůstal aktuální. Jen během posledního roku se objevily následující aplikace: samořiditelná auta, přirozený překlad cizích jazyků, převod textu na řeč nebo přenesení uměleckého stylu na fotky. Naučili jsme se různé architektury neuronových sítí: Perceptron, Multi-layered Perceptron, Deep Convolutional Neural Network, Autoencoder, Self-Organizing Feature Maps, Principle Component Analysis, Hopfield Networks. Co se matematiky týče, stačila znalost vlastních čísel, parciálních derivací a násobení matic. Některé koncepty jsme si vyzkoušeli i v praxi. Využití MLP pro klasifikaci e-mailového spamu, predikce ceny nemovitostí v Kalifornii na základě jejich dispozic a polohy, rozpoznávání ručně psaných číslic pomocí konvoluční neuronové sítě a využití autoencoderu pro kompresi obrázků. Na přednáškách se probírala většinou jen teorie, ale byly dostupné ukázkové programy pro Matlab. Ten byl i doporučený k řešení úloh, ale mohli jsme se naučit a použít cokoliv. Já si na první úlohy nejdřív vyzkoušel Python s TensorFlow, ale konvoluční síť jsem musel kvůli výkonu trénovat na GPU v laboratoři, kde byl jen Matlab s Neural Network Toolboxem. Od příštího roku má předmět kompletně přejít na Python, který se většinou používá i v praxi.

lenet5
Konvoluční neuronová síť LeNet 5

[HE9091] Principles of Economics → B+

Základy mikroekonomie a makroekonomie podle knížky Principles of Economics. Prošli jsme většinu základních ekonomických pojmů – posuny nabídky a poptávky, elasticita poptávky, maximalizace zisku, externality, ekonomika veřejné politiky, výpočet HDP, nezaměstnanost, finanční trhy, bankovní systém, hospodářský cyklus, mezinárodní obchod a mnoho dalšího. Zase jsem si trochu rozšířil obzory a nějaké ty základy ekonomie by měl znát asi každý.

IMG_20170127_120534
Uvnitř The Hive, kde probíhala cvičení z ekonomie

[LC9001] Chinese Language Level 1 → B+

Singapur má 4 oficiální jazyky. Většinou se dá všude domluvit anglicky, druhým nejpoužívanějším je mandarinská čínština. Ta je zároveň i nepoužívanějším jazykem na světě vůbec. Za semestr jsme se naučili něco přes 100 základních znaků/slov. Gramatika je velmi jednoduchá, jazyk nemá žádné skloňování a časování, v podstatě stačí jen znát slova a skládat je za sebe ve správném pořadí. Výzva jsou čínské znaky, na závěrečný test ale naštěstí stačilo umět pinyin (přepis výslovnosti znaků do latinky). Další komplikací je, že čínština je tónový jazyk, každá slabika se dá vyslovit 4 různými tóny (tón udává, jak by se měla měnit výška hlasu při vyslovování slabiky – konstantní, nahoru, dolů, dolů a nahoru) a tím dostane úplně jiný význam. Hodiny byly celkem zábavné, občas jsme nahlédli do čínské kultury, ale hlavně jsme procvičovali poslech, konverzaci, gramatiku, v domácích úkolech i psaní.

IMG_20170127_121434
Chinese Heritage Centre

Zkoušky

Jak tu probíhají zkoušky? Zkouškové období trvá 3 týdny, každý předmět má předem daný termín a je jen jeden pokus. Zkouška většinou tvoří 60 % výsledného hodnocení, zbytek je práce v semestru. Hodnocení probíhá aplikací Gaussovy křivky, takže záleží, jak dopadnou ostatní. Během semestru tak nikdo netuší, jak na tom je, motivuje to tedy k co nejlepším výsledkům, ale také větší soutěživosti.

Může to vypadat, že jsem se pořád jen učil. Ale o víkendech jsem poznával Singapur, stihl jsem i výlet do Kuala Lumpur a na Pulau Bintan v Indonésii. V polovině semestru je tu tzv. recess week, kdy si místní studenti opakují učivo. Já mezitím jezdil na skútru a surfoval na Bali. #YOLO. Trochu mě tak překvapily docela dobré známky, které přišly měsíc po konci zkouškového.

Z ČVUT do Singapuru

Už před nástupem na VŠ jsem přemýšlel o tom, že bych si nějaký ten semestr vyzkoušel studovat v zahraničí. Je to skvělá příležitost rozšířit si obzory, poznat nové lidi, jinou kulturu a v neposlední řadě také zlepšit angličtinu.

Možnost hlásit se na mezinárodní programy je na ČVUT otevřená pro studenty od druhého ročníku. Způsobů, jak vycestovat, je více. Přes celoevropský program Erasmus se dá dostat na zajímavé školy po celé Evropě. Ale kdo by se chtěl podívat trochu dál, ČVUT má také tzv. mimoevropské bilaterální dohody (MBD) se školami po celém světě – od USA, Kanady, Austrálie až po Japonsko a Čínu.

Výběrové řízení pro MBD probíhá ve 4 kolech, kde v každém kole jsou v nabídce jiné země. Na přihlášce se uvádí vždy 3 školy, seřazené podle priority. Já se přihlásil na podzim minulého roku hned do prvního kola a z nabízených univerzit vybral:

  • Nanyang Technological University, Singapore – Nejrychleji rostoucí univerzita v žebříčku TOP 50, má velký moderní campus s množstvím zeleně a učí se tu celkem zajímavé předměty z oblasti machine learningu i s přesahem do ekonomie. V USA bych asi sice byl vystaven kvalitnější angličtině, ale Singapur mě lákal víc také kvůli své poloze a vlivu asijské kultury.
  • University of Wisconsin–Madison, USA – Největší a nejstarší univerzita ve Wisconsinu, asi nejprestižnější v USA, se kterou má ČVUT dohodu. Madison je celkem malé pěkné univerzitní město.
  • Union College, Schenectady, USA – Relativně malá, ale v USA také docela uznávaná univerzita.

Podle čeho se rozhodne, zda a kam vlastně pojedete? Hodnotí podle několika kritérií. Tím prvním je motivace. Součástí přihlášky je motivační dopis v angličtině, kde je potřeba vysvětlit, proč chcete jet do zahraničí, a ke každé univerzitě připsat nějaký smysluplný důvod, proč zrovna tam.

Dalším kritériem je písemný test z angličtiny. Ten obsahoval několik úkolů především na slovotvorbu, doplňování slov do textu, a nakonec jsme měli napsat esej na téma “old vs. modern, large vs. small universities”. Přišlo mi to celkem jednoduché, z testu jsem získal 19 bodů z 20. Následoval anglický pohovor ve dvojicích, kde jsme měli nejdříve říct něco o školách, které jsme si vybrali, a potom jsme se bavili o nějakém tématu souvisejícím s naším oborem, u mě to bylo konkrétně o tom, co je machine learning a kdo stál u zrodu počítačů. Z pohovoru jsem dostal 17 bodů z 20. Posledním kritériem je pak průměr za celé dosavadní studium.

Výsledek přijímacího řízení jsem se dozvěděl koncem ledna. Vyšla mi hned moje první volba, NTU v Singapuru, což mě celkem potěšilo. Tím jsem však byl pouze nominován ze strany ČVUT a nastalo ještě dlouhé čekání na vyjádření o přijetí od NTU. Měla by to být jen formalita, přesto nám ale bylo doporučeno, ať s nákupem letenek ještě počkáme. Uvítací dopis nakonec dorazil koncem května.

Tak jsem si koupil letenku, kufr, průvodce Lonely Planet, zařídil očkování, která se do asijských zemí doporučují, a odletěl. Všechno to bylo dost narychlo. Teď už jsem týden v Singapuru. Semestr tady totiž začíná už v srpnu a končí v listopadu, celý prosinec jsou prázdniny a druhý semestr začíná v lednu. A jelikož tu zůstávám na oba semestry, snad dokážu dostatečně proniknout do místní kultury. Určitě budou tedy následovat články o výuce na NTU a životě v Singapuru, lah!