Nechce se ti číst všechno? Skoč rovnou dolů na shrnutí rozdílů mezi FIT ČVUT a TU Delft!

Známkování na TU Delft

Holandský systém výuky se v lecčem liší od toho našeho českého. Hlavní rozdíly jsou na první pohled dva: jiný systém známkování a jiná organizace výuky. Na místních univerzitách neznají “zavedené” známkování A-F, ale místo toho jsou všichni studenti hodnoceni na škále 1-10. Abyste kurzem prošli, musíte se dostat alespoň na známku 6, jinak máte smůlu. Co je ale na této škále zajímavé, je fakt, že není lineární. I když splníte úkol, tak jak byl zadán, dostanete se štěstím 8, což v překladu znamená “velmi dobrá práce”. Téměř nikdy se ale nestává, aby někdo dostal 10 a 9,5 dostává nejlepší student v ročníku. Když se mi tuto informaci podařilo vstřebat, rozhodl jsem se, že se šestkou bych se na konci klidně mohl spokojit…

Akademický kalendář

Můj rozvrh pro tento kvartál.

Můj rozvrh pro tento kvartál.

Kdy ale vlastně nastane zmíněný “konec”? V Holandsku se sice stejně jako u nás vyskytují dva semestry v jednom akademickém roce, ale tyto semestry jsou navíc rozděleny na dva kvartály. Jelikož jsme s výukou začínali už na začátku září, neznamená to nic jiného, že mě za chvíli čeká první zkouškové období v zahraničí. I tak to ale bude spíš taková jeho odlehčená verze, protože v místním systému výuky existují jak předměty kvartální, tak předměty semestrální.  To znamená, že na konci října budu bojovat o “šestku” ve dvou předmětech, zatímco po Novém roce jich bude nejspíš násobně víc.

Chcete tedy vědět jaké předměty mám v tuto chvíli zapsány? Co se v nich učí? A jaké z nich mám dojmy? Pak čtěte dál! Jen upozorňuji, že mým oborem zde na TU Delft je Computer Science a při popisu konkrétních předmětů se nedá vyhnout podrobnějšímu technickému popisu jednotlivých problematik. Ale to je jen takové malé varování pro neinformatiky…

(Nejen) Informatiky by zas mohlo zajímat, že TU Delft je v současnosti hodnocena jako šestá nejlepší technická univerzita v Evropě.

Introduction to High Performance Computing

Začínáme kurzem, do kterého jsem možná ještě tolik nepronikl. Ne snad proto, že by měl být nějak extrémně složitý nebo nudný, ale hlavně kvůli tomu, že se v něm po nás vyžaduje jen jedna velká aktivita (mimo zkoušku samotnou): velký projekt s deadlinem na začátku února. Jelikož je únor daleko a všechny ostatní předměty mě zahlcují jinou prací, počítám, že někdy na začátku ledna bych se k tomu mohl dostat (což je optimistický odhad).

Ale na přednášky chodím, to zas ano. Předmět se zatím věnuje otázce výpočetně náročných problémů jako jsou např. modely počasí, aerodynamické modely proudění vzduchu pro letectví nebo skládání proteinů. Tyto problémy je nutné počítat na velkém množství procesorů (nebo rovnou počítačů), a proto je potřeba umět psát paralelní programy. Přednášky tedy zatím představovaly jednotlivé modely paralelního programování a technologie, které je implementují (např. OpenMPI, pthread, Message Passing, TPP…). Zajímavé je, že téměř na každé přednášce píšeme nepovinný test, který se ale věnuje látce zrovna probrané v hodině. Není to ale nic o zapamatování, jde vyloženě o otázky, které mají prověřit, jak jsme danou technologii ze tří, čtyř slidů pochopili. No docela peklo…

V již zmíněném úkolu pak máme ve dvojicích implementovat několik paralelních programů, otestovat je na místním asi 500 jádrovém clusteru a napsat o tom report. Nezní to tak složitě, ale jedním z úkolů je např. napsat řešičku Poissonových rovnic, o kterých jsem v životě neslyšel ani zbla, takže to asi ještě bude sranda. No budu vás časem informovat…

Web Science & Engineering

Přemýšlel jsem, jestli by tento předmět mohl mít ještě obecnější název a došel jsem k závěru, že nejspíš ne. Každopádně jméno předmětu samotnému obsahu zatím moc neodpovídá, respektive obsah je mnohem víc konkrétnější. Předmět se samozřejmě věnuje hlavně webovým technologiím a fenoménům, jako jsou sociální sítě, ale možná i právě díky nim dost sklouzává i k data miningu nebo sociálním vědám.

Ukázka IFML modelování webové stránky.

Ukázka IFML modelování webové stránky.

Dosavadní přednášky od hlavního profesora se týkaly hlavně historie webu jako takového a pak technologií, které stojí u zrodu pojmu Semantic Web. S druhým zmíněným jsem se osobně téměř nesetkal a docela mě překvapilo, kolik je toho již teoreticky vymyšleno. Sám jsem zvědav na nějakou větší bombu, než je např. DBpedia.org. Na některých přednáškách jsme také měli hosty, jeden z nich přednášel o problémech moderních měst a jak jim pomoci sběrem dat z ulic i sociálních sítí (např. projekt Social Glass), druhý pak mluvil o aplikaci Twitcident, která pomocí dat z Twitteru a dalších sociálních sítí dokáže odhalit místa, kde se stala nějaká nehoda: ať už šlo o bouračku, přepadení nebo třeba zemětřesení. Někdy dokáže tyto nehody i předvídat, rozhodně tedy šlo o zajímavé hodiny.

Část kurzu se také věnovalo vytváření webových stránek pomocí IFML – Interaction Flow Modelling Language a nástroje od firmy WebRatio. Jde v podstatě o programování, ve kterém není nutné napsat ani řádku kódu. Nejdřív mi to nepřišlo možné, ale pak jsem zjistil, že nástroj je neskutečně robustní a že by v něm většina webových stránek opravdu šla vytvořit. Chápu tu myšlenku, že pomocí “modelování” webu rovnou tento web i vzniká a spousta věcí jde udělat v programu velice rychle, ale to nabídne i leckterý framework. Máme za úkol vytvořit pomocí WebRatio jednu aplikaci a někdy je i obyčejné předání parametru jinému objektu opravdu pain-in-the-ass. Pro nějaké prototypování a předváděčky zákazníkům se to ale určitě může hodit (kdyby tedy plná verze nestála několik tisíc měsíčně…).

Zatím každý týden se po nás chtěl nějaký domácí úkol, ať už šlo o odpovědi na asi 10 otázek maximálně na dvě A4 nebo o shlédnutí nějakých výukových videí na internetu.

Advanced Algorithms

Těžký předmět věnující se pokročilým algoritmům, který mě ale zatím moc baví. V kurzu jsme zatím probírali aproximační algoritmy NP-těžkých problémů, ukázali jsme si jednotlivé strategie, jak tyto algoritmy tvořit (např. Greedy) a rozdělili jednotlivé NP problémy do aproximačních tříd. To vše samozřejmě s pořádnou dávkou matematické notace a lehčích či těžších důkazů. I tak jsem ale na přednáškách této části hltal každé slovo, což byl vzhledem k brzké ranní hodině docela výkon.

Část mnou odevzdaného řešení k druhému domácímu úkolu.

Část mnou odevzdaného řešení k druhému domácímu úkolu.

Minulý týden jsme začali druhou část kurzu, kde řešíme, jak efektivně a exaktně vypočítat právě NP těžké problémy. Pro mnohé z nich totiž existují “efektivní” algoritmy, které to zvládají sic v exponenciálním čase, ale pořád výrazně rychleji než brute force řešení. Tato část už mě tolik nebaví, ne snad kvůli obsahu, ale spíš kvůli změně přednášejícího.

Součástí předmětu jsou samozřejmě i pravidelné domácí úkoly. Jsou trochu hardcore, ale zatím mě to dost baví. Jsou rozděleny na teoretickou a programovací část. Teoretické úkoly se více méně týkají věcí probraných na hodině, jsou v nich představeny mírně upravené problémy, které jsme si představili, a naším úkolem je formálně dokázat jejich správnost / funkčnost / apod. Inu psina. Těchto úkolů nás čeká asi 8, hotové mám 2. Programovací úkoly jsou o dost rozsáhlejší, pokrývají většinou několik přednášek a budou dohromady jenom 2. V prvním části prvního úkolu jsme zatím měli “pouze” implementovat rekurzivní algoritmus podle vědecké publikace z roku 1977. Přišlo mi to krásně jednoduché, ale zatím jsem u toho těžce selhal a netuším, jak dál. Progtest all over again…

Cloud Computing

Všechny výše zmíněné předměty mě budou pronásledovat až do ledna, ale následující dva jsou pouze v tomto kvartálu. Což mimo jiné znamenám, že jejich výuka je mnohem intenzivnější. U Cloud Computingu od nás od každého podle kreditů požadují 140 hodin práce a musím říct, že v tomto kurzu na tom vyučující opravdu trvají! Jde ale o velice zajímavý předmět.

Přednášky jsou docela obecné a věnují se důvodům vzniku Cloud Computingu, jeho charakteristikám a problémům (spotřeba energie, efektivní plánování úloh, robustnost…). Většinou jde jen o takový lehký úvod do problematiky s diskuzí se studenty. Další součástí kurzu je čtení vědeckých prací na téma Cloud Computingu, tzv. paperů. Každý student musí napsat Review (vědeckou recenzi, která se píše např. když se daný paper chce dostat na konferenci) na sedm různých prací a obsah jedné z těchto prací musí odprezentovat před celou třídou. Já jsem zatím četl velice zajímavé články např. o Facebook Haystack (úložiště FB fotek), Amazon Dynamo (speciální databáze na bázi klíč-hodnota) nebo Google Pregel (algoritmus na distribuované výpočty v grafových strukturách, což se využívá např. pro výpočet Google Pagerank). V úterý mě čeká prezentace o Haystacku (paper se mimochodem jmenuje “Hledání jehly v kupce sena”), tak mi držte palce.

Kamenem úrazu v kurzu nejspíš bude závěrečná laboratorní práce, na které bychom měli pracovat ve dvojicích. Máme za úkol vytvořit cloudovou aplikaci na zpracování obrázků nebo videa, tu pak otestovat několika experimenty a napsat o tom několikastránkový report. Termín odevzdání je už za pár týdnů, my ještě nezačali a to se od nás od každého očekává minimálně 50 hodin práce (tyto hodiny musíme reportovat!). Tady mi radši držte i něco jiného…

Methodology of Science and Engineering

Zatím rozhodně nejnudnější kurz, což by se dalo odhadnout i z názvu. Upřímně doufám, že mi ho na FITu uznají jako povinný humanitní předmět. Kurz je vyučován filozofem, který nám má představit základy vědecké i inženýrské práce. Nejde o úplně nezajímavé téma, ale mám pocit, že by mohlo být podáno lépe. Probírá se hlavně jakým způsobem je validní stavět argumenty, jak vyvozovat závěry nebo jak provádět empirická měření. Většina konceptů je představena na problémech “obyčejných věd” jako je fyzika nebo biologie a pak převedena do sféry Computer Science, což je sice zajímavé, ale stejně nejde o žádný klenot mezi předměty.

I tady máme každý týden úkol, který můžeme dělat dokonce ve trojicích. “Vtipné” na něm je, že ho dostaneme ve čtvrtek a už v pátek ho musíme odevzdat. Většinou jde ale jen o nalezení nějakých argumentačních chyb v úryvku textu, navržení lepší argumentace apod. Na konci října mě čeká zkouška a bude od předmětu pokoj, tak uvidíme, jak se mi povede…

Jaký je tedy rozdíl mezi TU Delft a ČVUT?

  • Mnohem víc se spoléhá na vlastní aktivitu a práci doma (viz další bod). Nejsem ale schopen určit, jestli je tohle charakteristika Delftu nebo spíš magisterského studia vůči bakalářskému obecně.
  • Je tu mnohem víc úkolů, určitě ještě víc, než bylo v prváků na FITu na bakaláři.
  • V podstatě tu neexistují cvičení, i když např. na Cloud Computing nás chodí asi 14. Ale fakticky je to vlastně přednáška.
  • Místo cvičení máme laboratoře, což jsou ale vlastně jen pevně dané konzultační hodiny pro všechny. Přijdete do velké učebny, sednete k počítači, pracujete a pokud chcete, můžete k sobě zavolat učitelského asistenta (=doktoranda), který vám poradí. Všem najednou se tu ale v podstatě nic nevysvětluje.
  • Hodně pracujeme s vědeckými pracemi z různých sborníků a konferencí. To jsem na ČVUTu v podstatě nezažil (opět ale problém magistr vs. bakalář). Díky bohu za Teoretický seminář, na kterém se přesně tohle na FITu dělá, a kterého jsem se poslední tři semestry zúčastnil.
  • Víc se tu o hodinách diskutuje. Žádný markantní rozdíl to ale není.
  • Učí se v Angličtině a je tu hodně mezinárodních studentů (je to fakt znát!).

Jsem ale moc rád, že mě bakalářské studium na FITu dokonale připravilo na studium tady (snad až na angličtinu, kterou jsem se rozhodně naučil jinde než na FITu). Člověku už to možná ani nepřijde, ale když se na pět minut zaposloucháte do přednášky téměř jakéhokoli předmětu zde, zjistíte, že pojmy a teorie, na kterých to vše stojí, jsou rozprostřeny ve valné většině bakalářských předmětů z FITu…