Třetí semestr na té nejlepší IT škole v republice je u konce. A to znamená jediné – jsem v poločase. Když se ohlédnu zpátky, cítím obrovský vděk za to všechno, čím jsem si prošel. A o to větší radost mám, když vím, že mi to doopravdy něco dalo a udělalo to ze mě lepšího ajťáka. Teď ale není ten správný čas na plácání se po zádech, protože se jdeme podívat na to, jaké nástrahy a radosti skrýval asi ten nejnáročnější semestr na FIT VUT v Brně.
Pokud by tě zajímalo, jaký byl první nebo druhý semestr, klikni ZDE.
Hledání a nenalezení limitu
Ještě než přejdeme k jednotlivým rozborům předmětů, rád bych se podělil o jednu životní lekci, kterou jsem během semestru dostal. Když jsem první dva semestry zvládl všechny zkoušky napoprvé (až na jeden incident v letňáku), s relativně pěknými výsledky v předmětech, před kterými každý varoval a celkově se solidním prospěchem, nabyl jsem dojmu, že toho můžu zvládnout i víc. Že si toho na sebe vezmu více a pokusím se najít jakýsi limit, hranici mezi zvládáním a nezvládáním.
Do semestru jsem tedy vstupoval se 3 pracovními smlouvami a 7 předměty, z čehož jeden byl třeťácký, který jsem si dobrovolně zapsal. A kupodivu to nějak šlo, učil jsem se, pracoval a tak nějak měl i volný čas. Pak ale přišel zlom asi v půlce semestru, kdy se začaly hromadit půlsemestrální zkoušky a deadliny projektů. To jsem se škole věnoval klidně i 12 hodin denně a nestíhal práci – což na mě působilo jako podvědomý tlak, že se mi něco někde hromadí a já nemám prostor se tomu věnovat. Jako sněhová koule, která se neustále nabaluje a je čím dál větší. Jedinou záchranou mi bylo fitko, kde jsem aspoň na necelou hodinu a půl “vypnul”, zacvičil si a aspoň trochu si vykompenzoval to celodenní sezení a psychické a kognitivní vypětí. Do pomyslného peaku jsem se dostal 17. prosince, kdy se o půlnoci odevzdávaly dva projekty a já jsem je na poslední chvíli dodělával a odevzdal asi 5 minut před půlnocí.
Znamená to tedy, že jsem narazil na onen “limit”? Řekl bych, že ne. Dalo by se toho dělat a stihnout i více. Otázka není JESTLI by to šlo, ale jak DLOUHO, na úkor zdraví a střemhlav vstříc vyhoření. Mohl bych spát méně, pít více kávy, brát doplňky stravy na soustředění, přestat chodit do fitka, nejezdit domů za rodinou nebo školní projekty vypracovávat tak, aby “nějak byly”. Hlavní problém toho všeho je, že mě to baví, že nemám problém na něčem pracovat 12 hodin denně a že jsem v některých věcech až moc velký perfekcionista.
Pak se tedy nacházím v situaci, kdy musím sám sebe omezovat v něčem, co mě naplňuje, jen proto abych to nepřehnal, nevyhořel, nebo neubíral i v jiných důležitých oblastech života.
Takže zkrátka a jednoduše jsem si toho vzal hodně. Jsem ale rád, že jsem si to mohl zažít takhle relativně brzy a vyzkoušet si, jaké to je pracovat na hraně časových a mentálních možností, než si tím procházet za několik let v kariérním životě, kdy na mě bude těch vnějších tlaků více – uživit se, nepřijít o práci, starat se o rodinu nebo splácet hypotéku.
A teď zpět k jednotlivým předmětům, které tvořily tento semestr!
IAL – Algoritmy
Na tento předmět jsem se těšil asi nejvíce ze všech, ale bohužel mé očekávání nenaplnil. Algoritmy jsou podstatnou částí práce programátora a výběr těch správných algoritmů, rozpoznávaní časových složitostí a vytváření svých vlastních efektivních řešení je důležitou dovedností. V kurzu se probírají základní datové struktury jako binární stromy, výškové samo-vyvažující stromy (nebo také AVL), abstraktní datové typy jako fronta, zásobník, hašovací tabulka a poté základní algoritmy pro řazení, vyhledávácí algoritmy nebo grafové algoritmy. To všechno jsou základní a důležité koncepty, které žádným způsobem nezpochybňuji. Jen bych více čekal zaměření na ono rozpoznávaní časových složitostí přímo z kódů, který nemusí být nutně jedním z vyučovaných algoritmů, ale například něco, co jsem sám napsal.
Součástí předmětu jsou dva projekty, první na implementaci zásobníku, dvousměrného lineárního seznamu a převod výrazů z infix notace do postfix, spolu i s vyhodnocením. Druhý na implementaci binárního vyhledávacího stromu, vyvažování a hašovací tabulky. Plus jeden projekt, který je společný s předmětem IFJ a asi největší strašák třetího semestru – vlastní překladač z jednoho jazyka do druhého, o tom si ale řekneme za chvíli:)
Na přednášky jsem chodil jen v první půlce semestru, pak už mi přišly zbytečně dlouhé (ale to mi přijdou všechny, trvající 2+ hodin) a tak jsem učení odložil až na leden, před zkouškou. Pokud bych ale měl na přednášky chodit, chodím určitě k doktorovi Hranickému, který se snaží vždy vše vysvětlit, rád odpoví na otázky a semtam dává i bodík za odpověď na jeho otázku (a ten se mi náramně hodil k mému C:)).
Zkouška patří mezi jednu z nejtěžších v semestru. Obsahuje vždy jeden z pseudokódů z prezentací (které jsou mnohdy šílené) a je za úkol v tomto kódu najít chyby, či doplnit nějaký kód. Dále vytvoření vlastního kódu dle zadání (často rekurzivního), teoretické otázky všeho druhu a praktické příklady, často znázornění fungování nějakého algoritmu, rotace stromu či vkládání do tabulky.
IFJ – Formální jazyky a překladače
Náplní předmětu je to, jak vznikají jazyky, jak fungují a co všechno musí umět překladač, který z programovacího jazyka vytvoří pro počítač čitelný kód, strojový kód. Až tady člověk doopravdy pochopí, co je to syntax a sémantika jazyka.
IFJ projekt, to je vše oč tu běží, říkají všichni absolventi třetího semestru. A mají pravdu. IFJ projekt, aneb implementace překladače ze zadaného jazyka (letos Swift, loni PHP) do IFJ23Code je poměrně velká challenge. Pracuje se v týmech po 4 lidech a právě výběr těchto lidí, následné rozdělení práce a dodržování určených deadlinů je prvním krokem k úspěchů. Tím druhým krokem je začít ASAP. Já jsem ve druhém týdnu semestru měl dopředu nasledovaných asi 6 přednášek, a tak jsem mohl začít s implementací dříve, než se daná problematika probírala. Taky to dávalo hodně prostoru se scházet s týmem a jen v klidu diskutovat a navrhnout celý program, aniž by nás tlačil čas. Právě správný návrh vám ušetří spoustu času v budoucnu, protože se tím snižuje riziko, že budete něco předělávat.
Díky včasnému začátku a zodpovědnému přístupu jsme už dva týdny před finálním odevzdáním měli prakticky hotovo a ladili detaily. A to zahřeje na srdíčku, když ostatní týmy dnem i nocí pracují, aby to stihli. V konečném důsledku tedy je hlavní to nepodcenit, začít brzo a mít zodpovědné lidi v týmu.
IMA2 – Matematická analýza 2
Po loňském incidentu, kdy tento předmět neudělala velká část lidí a někteří dostávali opravené zkoušky jen několik hodin před dalším termínem, mělo dojít ke změně po domluvě s garantkou předmětu, která se měla více do předmětu zapojovat. Ačkoliv nemám porovnání s loňskou verzí tohoto předmětu, nemám pocit, že by došlo ke zkvalitnění předmětu. Když přejdu hned ke kritice tak:
- Místo 5 zápočtových písemek po 4 bodech byly 3 po 6,7 a 7 bodech, což mi osobně nevyhovuje – stačí aby se nepovedla jedna písemka a už trochu teče do bot.
- Na přednáškách docentky Kolářové jsem byl dost často zmaten a někdy se ztrácel v tom, co vlastně počítáme.
- Ze zkoušky byl odebrán jeden příklad a byl nahrazen vstupním testem, který měl 5 malých příkladů po 2 bodech a pokud někdo měl méně než 7, byla celá zkouška za 0, i pokud by všechny další příklady měl správně. Tento test jsem chápal v IMA1, kde pokud někdo neumí derivovat a integrovat, zřejmě nemá smysl se koukat dál a opravujícímu to ušetří čas. V IMA2 to považuju za klacek pod nohy studentům a doufám, že se zruší, jakmile bude na IMA2 povinná prerekvizita IMA1.
INP – Návrh počítačových systémů
Další ze série hardwarových předmětů, tentokrát na mě působil zajímavěji než předchozí IEL nebo INP. Jen kdyby na ty 4-hodinové přednášky bylo více času (čti motivace), tak bych je býval aspoň jednou navštívil. Předmět se věnuje tomu, jak funguje procesor, paměť nebo aritmetické operace s čísly s desetinnou čárkou.
Součástí jsou dva projekty, kdy jeden bylo naprogramovat procesor ve VHDL na základě instrukční sady jazyku Brainfuck – nádhera a peklo zároveň. Druhý bylo napsat jednoduchý libovolný řadicí algoritmus na EDUMips64 (trochu více fucked-up Assembler), celkem brnkačka za jedno odpoledne.
IPT – Pravděpodobnost a statistika
Další z matematických předmětů, zaměřený na poměrně důležité téma – pravděpodobnosti a statistika. Mám pocit, že jsem po absolvování tohoto předmětu získal trochu jiný pohled na svět, najednou nic není jisté a zároveň nic není nemožné.
Doktor Fusek má super přednášky, kde dokáže látku poměrně dobře vysvětlit a občas i rozesmát svými příklady. To stejné můžu říct o cvičeních, kde volá náhodně lidi k tabuli, nebo může jít kdokoliv dobrovolně a sám si ověřit, jestli látce rozumí – když uděláme chybu u tabule, pamatujeme si ji už navždy.
Na zápočet je potřeba mít aspoň 8 bodů z 20. Ty se získávají skrze domácí úkoly, kterých je 10 po 2 bodech a je na jejich vypracování vždy týden. Jsou zpracovávány elektronicky v poměrně archaickém a neústupném systému, který vám neuzná, pokud místo desetinné tečky napíšete desetinnou tečku, či další drobnosti. Jinak mi tato forma mnohem více vyhovovala než zápočtové písemky v IMA2, protože jsem si úkol mohl v klidu doma spočítat, průběžně se učit a o to jednodušší pak byla zkouška.
ISS – Signály a systémy
Na siny, cosiny a komplexní exponenciály po tomhle už nikdy nezapomenu. Poměrně náročný předmět plný různých vzorečků, grafů, transformací a rovnic. A pan profesor Černocký si to uvědomuje a snaží se předmět vyučovat co nejpřívětivěji tak, aby ho chápalo co nejvíce lidí. Nepochybně to je důležitá součást IT, protože signály jsou všude kolem nás a jsou široce využívané v oblasti AI při rozpoznávání a analýzy řeči.
Součástí předmětu jsou i cvičení každý druhý týden, na které jsem se musel připravovat, abych se aspoň na chvíli chytnul a věděl, co se děje. To stejné bych doporučil každému, protože na konci cvika jsou body a ty jsou velmi cenné, přestože není potřeba žádný zápočet. Jen získat i minimální počet 17 bodů z 52 je celkem oříšek. Takže sbírat body, kde to jen jde.
Když už jsme u bodů, tak velmi hezky šly nasbírat u projektu, který měl velmi zajímavé téma (EKG signál) a sestával z několika menších úloh, každé hodnocené zvlášť. Určitě se nevyplatí projekt odkládat na poslední chvíli, protože jak jsem řekl, body jsou drahé.
Zkoušku bych obtížností dal na úroveň IAL a IMA2, takže mezi ty nejnáročnější. Propočítal jsem snad 12 posledních termínů, všechny po 20 příkladech, takže celkem nějakých 240 a stejně prošel jen těsně nad hranicí 17 bodů.
ITU – Tvorba uživatelských rozhraní
Třeťácký předmět, který si ale může zapsat i druhák, pokud splnil IZG. Navštívil jsem pouze první dvě přednášky, které mě moc nenadchly a na ty další jsem si už nenašel čas. Podle názvu témat by ale některé stály za návštěvu.
Na začátku semestru je 5 bodovaných cvičení po 5 bodech, kde vždy máte nějaký úkol a za jeho splnění body dostanete. Na cvika se nebylo potřeba připravovat, jako jsem to měl například u IZG či jinde, takže o to příjemnější to bylo. Cvičící se každý týden střídali a vždy poradili, či pomohli.
Nejdůležitější částí je ale týmový projekt po 3 členech, kde je potřeba získat minimálně 30 bodů z 55, abyste získali zápočet a prošli. Zadání je velmi otevřené, co se týče výběru tématu a platformy, může to být jakákoliv mobilní, či webová aplikace, od fitness trackeru, přes todo listy po rezervaci kurtů. Přesto je potřeba se prokousat asi 16 stranami, abyste zjistili všechny požadavky a co se kdy musí odevzdat.
Není dobré projekt odkládat a odfláknout, pokud nechcete dostat pořádný hate na pitch prezentaci, ve zprávách o hodnocení či na konci u obhajoby. Většinou nešlo o to, jak aplikace vypadá, ale jak se s ní dá pracovat. Dobré je, aby každý člen programoval nějakou část, kde se pracuje s datovým modelem a není to jen o vyplňování formulářovým způsobem.
A to by bylo, konečně, vše!
Kdybych to měl shrnout, tak bylo to krásný, ale bylo toho moc. Takže věřím v sebe a ve FIT, že mi tohle už (aspoň ne na bakaláři) neudělá. Na druhou stranu jsem se toho tento semestr naučil asi nejvíc.
Pořád i po tom všem jsem na FITu spokojen a plný natěšení na další semestr, kde mě čekají už čistě programátorské předměty od databází, přes objektově-orientované programování po sítě. Přesto by to měl být nejméně nabitý semestr na celém bakaláři! Tak uvidíme a zase za 3 měsíce :).