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. 😀