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