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!

Čtvrtý semestr na FIT ČVUT

Další semestr ukončen. Je vidět, že nejtěžší předměty už mám asi za sebou, protože tentokrát jsem zakončil zatím nejlepším průměrem za celé studium. Ale úplně bez práce to také nebylo. A co že jsem tento semestr studoval?

[BI-BEZ] Bezpečnost → B

Předmět se zabývá především kryptografií (věda o šifrování). Nejdříve se proberou matematické principy různých typů historických i v současnosti běžně používaných šifer, nahlédne se i do budoucnosti úvodem do kvantové kryptografie. Potom se prakticky jednotlivé šifrovací techniky vyzkouší při programovacích úlohách v C s využitím knihovny openssl, např. k zašifrování obrázkového souboru nebo ručnímu navázání šifrovaného spojení přes internet.

[BI-EP2] Efektivní programování 2 → A

Volné pokračování volitelného předmětu EP1. Tentokrát témata velmi úzce souvisí s paralelně zapsaným předmětem BI-GRA, takže jeho absolvování pomůže pochopit většinu algoritmů probíraných na přednáškách v onom předmětu. Forma je stejná jako u první části předmětu – řešení úloh z minulých ročníků programovací soutěže a následná diskuse různých řešení studentů. Předmět je ukončen semestrální prací, která spočívá ve vytvoření zadání vlastní úlohy, napsání referenčního řešení a přípravě testovacích dat. Je zajímavé se podívat na věci i z té druhé strany.

[BI-GRA] Grafové algoritmy a základy teorie složitosti → B

Docela zajímavý oborový předmět zabývající se různými grafovými algoritmy, které mají v praxi široké využití, od hledání nejkratší cesty na mapě po optimální rozvržení přednášek do místností. Bojoval jsem s ním však do poslední chvíle. Testy na cvičeních během semestru mi přišly dost těžké, především tím, že se na ně nedalo moc připravit. Nakonec jsem ale body dohnal na dvou programovacích úlohách, teoretickém midtermu a první části zkoušky. Na druhou část zkoušky se totiž také moc připravit nedalo, úkolem bylo analyzovat problém a navrhnout algoritmus pro co nejefektivnější řešení. Problém byl ale dost nepřiměřený tomu, co jsme dělali v semestru. A nebyl to jen můj pocit, úplně správné řešení totiž neměl nikdo.

[BI-OSY] Operační systémy → A

Základní principy fungování všech operačních systémů – komunikace mezi procesy a vlákny, přidělování výpočetního výkonu vláknům, stránkování operační paměti, principy fungování různých souborových systémů. Součástí hodnocení byly 2 programovací úlohy – implementace vícevláknového programu typu producent–konzument a simulace stránkování paměti. U zkoušky pak počítací příklady zaměřené na přesné pochopení jednotlivých oblastí.

[BI-PJP] Programovací jazyky a překladače → A

Další oborový předmět, kde pochopíte, k čemu byla všechna ta teorie v BI-AAG. Výstupem je semestrální práce, jejíž náplní je implementace frontend části překladače pro zjednodušený jazyk Pascal – tedy vytvoření lexikální analyzátoru, syntaktického analyzátoru a překlad do abstraktního syntaktického stromu backendu gcc. Pro plné bodové hodnocení bylo potřeba v jazyce podporovat základní konstrukty jako deklarace a přiřazení proměnné, pole, podmínky, cykly, funkce s parametry a rekurzivní volání.

[BI-PSI] Počítačové sítě → B

Tady jsme se naučili, jak funguje internet a prošli detailně všechny vrstvy modelu ISO/OSI. V laboratořích jsme pak teorii procvičovali konfigurací Cisco routerů. Programovací úlohy spočívaly v napsání TCP klienta a UDP serveru.

Zbývá mi teoreticky poslední rok, ale už teď vím, že si studium ještě o rok prodloužím. Na další dva semestry totiž odjíždím studovat do zahraničí. O tom ale asi napíšu více v dalším článku.

Třetí semestr na FIT ČVUT

Mám za sebou třetí semestr, což také znamená, že už jsem v polovině bakalářského studia. Třetí semestr je doba, kdy je dobré mít vybraný svůj studijní obor, protože tady se začínají lišit doporučené průchody studijním programem. Ještě před nástupem na FIT jsem měl představu, že budu studovat Softwarové inženýrství, praktický obor zaměřený na práci v týmu na reálných projektech.

Nakonec jsem se ale rozhodl pro obor Teoretická informatika. Proč? Nevěnuje se tu tolik času tomu, jak programovací jazyky a nástroje používat k tvorbě aplikací, ale spíše jak skutečně fungují a třeba i jak si vytvořit jazyk vlastní nebo rozšířit existující. Neučí se tedy věci, které mohou být jinak ještě než školu vystudujete, ale základy, na kterých to všechno stojí. Naučit se postavit něco nad tím už je pak podle mě záležitost samostudia a praxe.

[BI-AAG] Automaty a gramatiky → C

aag-strip Z tohoto předmětu je mezi studenty asi největší respekt. Jeho cílem je seznámit s hierarchií formálních jazyků, gramatik, kterými se dají tyto jazyky zapsat, a výpočetních modelů, které tyto jazyky přijímají. Od konečných automatů, přes zásobníkové automaty až k Turingovu stroji. Nakonec základy teorie složitosti a vymezení problémů, které už počítač vyřešit neumí.

Zkouška se skládá z rozstřelu, písemné části a ústní zkoušky. Je to první předmět, u kterého je ústní zkouška povinná součást a neslouží jen k vylepšení známky. Je tedy potřeba opravdu dobře všemu rozumět, umět formálně zapsat, ale i vysvětlit.

[BI-DBS] Databázové systémy → A

Calkem jednoduchý předmět pro každého, kdo někdy pracoval s databází. Začne se uvedením formálního systému relační algebry, která poskytuje teoretický aparát, který je základem všech relačních databázových systémů. Hlavním cílem předmětu je pak naučit se jazyk SQL a vyzkoušet si návrh a implementaci databáze v databázovém stroji Oracle.

[BI-EFA] Efektivní algoritmy → B

První oborový předmět, pojmenoval bych jej spíše Datové struktury. Po zopakování polí a spojových seznamů jsme se vrhli na rozptylovací tabulky, binomiální a Fibonacciho haldy, vyvažované vyhledávací stromy (B–stromy, AVL a Červeno-černé stromy). Během semestru nás čekaly 3 domácí úlohy v Progtestu, při kterých jsme si některé struktury zkusili implementovat. Jsou to sice věci, které člověk neprogramuje každý den, ale hodí se vědět, díky čemu fungují indexy databází nebo file systémů.

[BI-EP1] Efektivní programování 1

Na povinných programovacích předmětech mi vadilo, že nikdy nebylo zveřejněno vzorové řešení. Člověk tedy skoro vždy za úlohy nějaké body získal, ale nikdy se vlastně nedozvěděl, v čem spočívalo efektivní řešení. A říká se, že nejvíce se člověk naučí právě čtením cizího kódu.

I z tohoto důvodu se mi tak líbil tento volitelný předmět. Každých 14 dní je zveřejněno několik úloh převzatých z mezinárodní programovací soutěže ACM. První týden je na každém, aby zkusil vyřešit, co zvládne. Poté jsou na přednášce vysvětleny principy možných řešení, včetně ukázky kódu, a zveřejněna vstupní data. Další týden je pak možnost za menší počet bodů úlohy dopsat.

[BI-SI1] Softwarové inženýrství 1 → B

flowchartNa začátku semestru jsme se rozdělili do týmů, ve kterých jsme si pak vyzkoušeli kompletní proces vývoje informačního systému od sběru a analýzy požadavků, přes návrh až po jeho implementaci. Pro některé studenty je to asi první zkušenost s prací v týmu, používáním verzovacího nástroje a vývoje nějaké reálné aplikace. Já si z toho odnesl jen seznámení s UML notací a potvrdilo se mi, že Softwarové inženýrství jako obor by pro mě nebyla šťastná volba. Většinu těhle věcí se člověk zvládne naučit sám, nebo během prvních pár dní práce ve firmě.

[BI-ZDM] Základy diskrétní matematiky → B

Oproti předchozím semestrům celkem pohodová matematika. Prochází se základy z různých oblastí matematiky, které se nám mohou hodit v jiných předmětech. Matematická indukce, teorie množin, binární relace, kombinatorika, rekurentní rovnice a základy teorie čísel.

[BI-3DT] 3D Tisk → A

Zábavný volitelný předmět, kde si zkusíte postavit 3D tiskárnu, naučíte se programovat parametrické modely v OpenSCAD a pomocí slicovacího nástroje Slic3r připravovat modely pro tisk. Po absolvování předmětu se vám otevřou dveře do 3Dprint Labu, kam si můžete přijít cokoliv vytisknout.

Abych to shrnul, třetí semestr mi přišel v mnohém jednodušší a zajímavější než druhý, ale nic není zadarmo. Pokud však něčemu věnujete dostatečný čas, i zprvu obtížná látka nakonec začne dávat smysl a všechno do sebe zapadne.