# Bc. na FIT - 4. semestr

Fri 15 June 2012
tastyfish
tagy: study
překlady: en (google)

Výsledky čtvrtého semestru se mi teda příliš nevyvedly, ale jak už jsem psal, škola nebyla tentokrát moje jediná starost. Je to ale tak, že čtvrtý semestr byl časově možná nejnáročnější z celého studia a museli jsme se za něj stihnout naučit asi sedm programovacích jazyků (sice jenom základy, ale i tak)! V každém předmětu byl tentokrát vyžadovaný zápočet a zkoušky opět nasadily minima, i když většinou jenom kolem 40 %. Navíc opravování všech projektů a písemek trvalo hrozně dlouho a do poslední chvíle byl boj o zápočty napínavý.

## Databázové systémy (IDS)

IDS tahák , str. 1

IDS tahák , str. 2

Tohle byl předmět, kterému u mě předcházely smíšené pocity pramenící jednak z ne úplného nadšení pro databáze (nechápu, co je zábavného na vymýšlení super složitých SQL příkazů) a jednak z faktu, že se to prostě musím jednou naučit. Nakonec IDS ale nesplnilo obavy a spíš zanechalo vesměs pozitivní dojmy.

Byl jsem docela zvědavý na pana děkana, který nám měl přednášet. Doc. Zendulka je nesmírně sympatický, ale nedělá vůbec žádné vtipy a mluví extrémně pomalu, takže jsem někdy až usínal. Na druhou stranu se toho probere tímto tempem docela málo a procházení slajdů ke zkoušce probíhalo velmi rychle, protože jsou prostě přizpůsobeny tempu pana Zendulky a je jich tudíž hrozně málo. Z pozitivních stránek musím zmínit spolupráci a diskuzi se studenty a také pravidelně konané tzv. hromadné konzultace. Šlo o to, že si dobrovolně přihlášení studenti přichystali krátkou prezentaci nějakého příkladu k probírané látce a za body ji předvedli na konci přednášky za dozoru pana děkana.

Jednoho dne opět nadešlo půlsemestrálkové období. Potěšením bylo zjištění, že na IDS se objevuje kreslení ER diagramu, což už vlastně umíme z IUSu a tak nebylo zase tolik stresů a učení potřeba. ER diagram se nakonec opravdu objevil spolu s příklady na převedení na schéma databáze apod. Opravování trvalo dlouho, ale výsledek 12,5 z 14 více než potěšil.

Co mě tento semestr dost vytáčelo, byl projekt do IDS, který se dělal opět v týmech po dvou lidech (asi je dobré udělat si tým s člověkem, s nímž máte seminář Java/C++, mě se to bohužel nepodařilo). Ze začátku šlo jenom o napsání nějakých skriptů pro vytvoření databáze a její naplnění testovacími daty, nejhorší se ale ukázala poslední část. Šlo o vytvoření GUI aplikace nad naší databází v nějakém hrozně podivném Windowsovském vývojovém prostředí od firmy Oracle a celou dobu jsem neměl vůbec ponětí, co to vlastně dělám a hrozně mě tento projekt štval. Před odevzdáním aplikaci můj tým věnovat celý den a nějak se projekt splácal dohromady. Na krátké obhajobě potom už naštěstí nebyl problém sklidit na zápočet postačujících 13 bodů z 20.

Zkouška byla tak akorát těžká a rozhodně o trochu lehčí než většina ostatních zkoušek. Jelikož se toho neprobralo oproti jiným předmětům zase až tak moc, tak se prostě zkoušely úplné základy - pár SQL dotazů, jednoduchá normalizace a pár teoretických otázek. Je to ale podle mě dobře, protože je líp se naučit pořádně základy, než jít nesmyslně do hloubky a polovinu věcí potom stejně zapomenout, tak jak se to občas vede v jiných předmětech. Po zkoušce mé naděje trochu doufaly v Béčko, nakonec mi ale přišla známka C. Stěžovat si ale nebudu.

IDS hodnotím jako mírně jednodušší ale každopádně přínosný předmět, samozřejmě záleží, jak komu sedne. Já jsem bez větších předchozích zkušeností s databázemi neměl s IDS velký problém.

## Počítačové komunikace a sítě (IPK)

IPK tahák , str. 1

IPK tahák , str. 2

IPK tahák , str. 3

Sítě pro mě do teď tvořily zatím neprobádanou část informatiky. S příchodem IPK naštěstí přišla naděje, že se to brzo změní. Ono to tak dokonale nakonec sice nedopadlo, ale už umím naprogramovat klienta, server, TCP i UDP a to mi zatím stačí. S odstupem času se mi předmět vybavuje jako obrovská množina zkratek typu OSPF, UDT, CSMA/CD atd.

Na přednáškách se střídali dva přednášející, ing. Ráb, kterému bych trošku vytknul, že věci vysvětloval, jako bychom to snad už uměli a on nám jenom připomínal, jak to vlastně funguje. Druhým přednášejícím byl dr. Ryšavý. Ten byl zase takový nenápadný, ale jeho přednášky se mi poslouchaly líp. Problém předmětu vězel hlavně v pokulhávající organizaci. Za prvé, zadání projektů byla hodně stručná, občas nejasná a všechna pohromadě v jakémsi studijním manuálu, stránky předmětu neexistovaly, při malých písemkách panoval často zmatek a další a další věci. Ze slajdů se není moc možné učit, je potřeba k nim mít komentář a tak nedoporučuju vynechávat přednášky.

Zmíněné malé písemky byly novinkou našeho ročníku a těžko říct, zda se ujmou. Byly tři, vždycky ve formě multiple choice testu přímo na přednášce a každý maximálně za 3 body. Někdy otázky vypadaly jako špatný vtip, jindy šlo třeba o uhodnutí čísla portu nějaké služby apod. Studenti si bezostyšně radili a stejně měla většina lidí vždycky kolem 1,5 bodu tak jako já.

Zdrojem bodů byly i dvě laboratoře ve stylu "utvořte skupinky, vyrobte si vlastní kabel, propojte počítače, proveďte konfiguraci, odevzdejte protokol." Většinou to bylo v duchu "I have no idea what I'm doing" a časově se to moc nestíhalo, ale posbíral jsem z obou plný počet bodů (tj. 3 a 3), hodnocení bylo mírné.

Neměl bych také zapomenout na projekty, které byly tři a psaly se buď v C nebo v C++ dle vlastní volby. Po prvním projektu mi došlo, že obsáhlejší práce s řetězci v C není to pravé a přešel jsem na C++. První a druhý projekt, jednoduchý stahovač stránek a jednoduchá pošta, mi vynesly přibližně plný počet, u třetího jsem zažil největší haluz tohoto semestru, když mi po odevzdání stěží fungujícího programu na spolehlivou komunikaci přišlo do wisu 8 bodů z 10, dodnes si to neumím vysvětlit. Důvod nestihnutí projektu byly pochopitelně hromadící se jiné projekty.

Podle dostupných informací se závěrečná písemka oproti loňsku změnila a to spíš k lepšímu, protože se mi podařilo ji stihnout napsat, zkontrolovat a dokonce předčasně odevzdat (minulý rok prý skoro nešla v daném čase stihnout). Nebyly žádné testové otázky, jen pár fulltextových a moje skupina byla naštěstí víc zaměřena na teorii, takže jsem to nějak zvládnul na 44 bodů z 65. Druhá skupina měla prý hodně příkladů a měla být těžší. Celkově se mi tedy dostalo hodnocení C.

Předmět IPK se asi stále ještě vyvíjí, protože se zdá být každým rokem trochu jiný, tak uvidíme, co potká další ročníky. Vypadá to ale, že se mění k lepšímu. Hlavně to chce zlepšit organizaci, jinak nejde o žádný hardcore předmět.

## Principy programovacích jazyků a OOP (IPP)

IPP tahák , str. 1

IPP tahák , str. 2

IPP tahák , str. 3

Encyklopedicky zaměřený a zřejmě nejnáročnější předmět druhého ročníku a vůbec jeden z těch celkově nejtěžších. Má mimo jiné za úkol naučit studenty objektově orientované programování, bez něhož se dneska těžko někdo obejde. Přijde mi ale, že předmět samotný by mě to nenaučil dostatečně a proto vidím jako rozumné opatřit si nějakou knížku a podívat se na základní principy ještě před IPP, třeba si i něco zkusit napsat - mě díkybohu opět zachraňovaly znalosti ze střední školy. Navíc vedle OOP tenhle předmět probírá kvanta dalších záležitostí a rozhodně se nevyhnete poctivému učení.

V plánu semestru je hrozně moc pojmů týkajících se programovacích jazyků a i když jsem měl za to, že tyhle teoretické věci docela zvládám, bylo to opravdu pěkně náročné. Navíc se probírají dva kalkuly pro popis jazyků, které k té teorii přidávají i něco z počítání, aby bylo z čeho dávat příklady na písemce (neumím si ale představit, že je kdy využiju, pokud se nebudu zabývat výzkumem). Přednášky vedli doc. Kolář a dr. Křivka a nevím, jestli to bylo docela nudnou látkou, stylem přednášení nebo mým vyčerpáním ze všech projektů, ale dvakrát se mi podařilo na přednášce úplně usnout, což se mi do té doby zatím ještě nestalo.

Docela pozitivně vidím přínos dvou projektů v jazycích Perl a Python 3, protože se tyto jazyky používají a mě samotnému od té doby párkrát posloužili pro pár jednoduchých skriptovacích úkonů. Byla zde různá zadání a vždycky po dvojicích, při klikací válce jsem ukořistil zadání převod formátu JSN do XML v Perlu a minimalizace konečného automatu v Pythonu 3. K oběma úlohám byla vyžadována krátká dokumentace a naštěstí nám organizátoři vždycky poskytli základní testy funkčnosti, jež mně osobně docela pomohly. S prvním projektem jsem si docela vyhrál a získal tak 8,6 bodů z 10. U druhého už hořely termíny ostatních projektů a tak trochu mě přemáhalo znechucení vylepšovat můj opravdu nepěkný kód, tak jsem to prostě odevzdal s tím, že mi víceméně prošla většina základních testů a moc jsem se ani nedivil konečnému hodnocení pouhými 3,9 body.

Půlsemestrálka se mi vydařila a zařadila mě mezi 10 lidí, co měli 18 bodů z 20, víc neměl nikdo. Myslím, že chyby u mě spočívaly ve špatně spočítaném příkladu na sigma kalkul spíš než v teorii, které v ten moment zase tak moc nebylo.

Už méně slavně dopadlo závěrečné ověřování znalostí. Na zkoušku jsem šel myslím si celkem dobře naučený, jenže se v zadání objevily nějaké otázky na jazyky pro popis hardwaru a architektur, jež jsem trochu odbyl a tak mě po zkoušce silně pronásledovaly obavy z dalšího termínu. V jiném předmětu bych byl určitě klidnější, ale tady je hodnocení opravdu přísné a chyby se neodpouštějí, takže moje obavy se prakticky exponenciálně zvyšovaly s každou hodinou po odevzdání písemky. Nakonec jsem tak tak prolezl o bod nad minimem s 26 body a získal svoje druhé Éčko do sbírky.

Na IPP nebudete nejspíš nikdy dost dobře naučení, takže nezbývá než věnovat veškerou zbylou energii učení a doufat v dobré otázky. Je nutné taky bojovat s nudnými přednáškami. Projekty byly ale docela přínosné a povedené.

## Základy počítačové grafiky (IZG)

IZG tahák , str. 1

IZG tahák , str. 2

IZG tahák , str. 3

Docela slibně nazvaný předmět, který také byl jedním z těch dobře se učících, protože probírané věci se nezdají být zbytečné a jsou většinou přímočaré.

Co se týče přednášek, stejně jako u IPK se střídali dva přednášející. Měl jsem tu čest, že jedním z nich byl nejlepší přednášející tohoto semestru, dr. Španěl, jehož přednášky byly opravdu dobře stravitelné a v takové odlehčené formě. Sem tam něco spletl, ale aspoň udržel pozornost přednáškové místnosti. Měl taky na starosti projekt a třem řešitelům nejrychleji pracujících programů před zkouškou slavnostně daroval láhev vína. Pár přednášek si vzal na starost garant, doc. Kršek, kterého jsem zase až tak nemusel. Hrozně mu vadili opozdilí studenti a vždycky k nim měl nějakou poznámku, většinou je nazýval hologramy a někdy je dokonce skoro až vyslýchal. Hlavní témata IZG byla rasterizace, křivky, viditelnost, nějaké zobrazovací metody a základy OpenGL.

Laboratoře IZG řešily věci z přednášek praktickou formou, každou laboratoř vedl netradičně jiný cvičící. Vyvoleným jazykem pro tyto účely bylo C++ a jakási knihovna nad OpenGL, programovali se rasterizace, vyplňování apod. Všechny laboratoře u mě byly za plný počet.

Z půlsemestrální písemky skládající se z testových a jedné teoretické otázky, jsem docela slušně vytěžil 9 bodů ze 12, rozhodně se za ní neskrývalo nic těžkého.

Projekt jsem pracovně nazval rasterizace králíka. Ono šlo vlastně o obecný vykreslovač 3D modelů, který jsme měli doimplementovat v Céčku, ale defaultní model byl prostě králík. Ze začátku mě program docela zaujal, podařilo se mi dopsat rasterizaci trojúhelníku, potom ale začal časový pres s Javou a nějak se má pozornost musela upnout jinam. Dodělal jsem tedy jenom základ osvětlení a odevzdal, co bylo. Rozhodně se nedivím zisku pouhých 6 bodů z 18, snad jsem čekal i trochu míň. Většina lidí ale projekt dotáhla na plný počet bodů.

Hodina čistého času na závěrečné písemce bohatě postačovala, šlo o tři krátké teoretické otázky a čtrnáct testových s jednou správnou odpovědí (za chyby se ale slušně strhávaly body a to dokonce i ve fulltextu). Nebyla to však žádná hrůza a objem učení byl na IZG podle mě po ostatních předmětech pohodový. Nakonec mě hrozně potěšil výsledek 50 bodů z 52 a alespoň tedy jedno Béčko.

IZG je docela dobrý a užitečný předmět. Celkem intuitivní algoritmy se dobře učí a většinou je složitější zapamatovat si jejich název skládající se ze dvou až tří jmen.

## Základy umělé inteligence (IZU)

IZU tahák , str. 1

IZU tahák , str. 2

IZU tahák , str. 3

Celkem pochopitelně asi nejvíc přemýšlecí předmět ve čtvrtém semestru. Trochu mi naháněla strach nutnost přelouskávat kopu algoritmů napsaných a vymyšlených někým jiným, protože to pro mě většinou nebývá moc velká zábava.

Přednášejícím nám byl mladší dr. Zbořil, syn pana Zbořila z asemblerů, který zase přednášel druhé skupině. Musím říct, že občas jsou si docela podobní, ale ten mladší přeci jenom trochu víc vypráví historky a naše přednášková skupina tak nestíhala tu druhou asi o jednu přednášku. Látku vysvětlují oba stejně kvalitně a není problém pochytit podstatu problému, ale někdy si to chce doma zopakovat.

IZU tvoří také laboratoře, kde se občas něco počítá a hlavně programuje v Prologu a Lispu. Tyhle jazyky jdou úplně jiným směrem než klasické imperativní jazyky a nezvyká se na ně úplně lehko, naštěstí se dělají jenom základy. Někteří cvičící prý studenty dost dusily, mě naštěstí ing. Král nedusil a byla s ním sranda, čímž ale vzdělávání netrpělo, prostě ideální případ. Na cvikách taky studenti obhajují svoje domácí úkoly - vyhledávání nejkratších cest algoritmem A* v Céčku a něco v Prologu a Lispu - nic moc těžkého, přišel jsem jen o pár bodů kvůli nějakým drobnostem, hodně jsem si ale máknul při učení Prologu.

Největší fail tohoto semestru pro mě byla půlsemestrální písemka v tomhle předmětu. Tvořili ji dva příklady. Ani jeden mě nepřekvapil, ale prostě jsem udělal v asi dvacetiúrovňovém stromu stavového prostoru chybu někde na patnácté úrovni a z 10 bodů byl rázem 1. Druhý příklad dopadl líp ale i tak mi nakonec přišlo hodnocení jenom 8 bodů z 20. Zastavil jsem se tedy na reklamaci, ale doc. Zbořil starší mi jenom řekl, že se to stává, a žádné body z toho nevzešly :) Mladší přednášející opravoval písemky o pár dní dýl, ale zato míň přísně podle srovnání s kolegy.

Řádný termín písemky proběhl poklidně i přes moje obavy, že půjde o pro mě nejtěžší zkoušku. Ukázal se ale spíš opak (možná proto, že opravování mé písemky se tentokrát zhostil mladší dr. Zbořil). Klasické příklady převážně ze starých písemek mi vynesly krásných 51 bodů z 60. Bylo mi trochu líto známky jenom C, ale známky jsou přece jenom známky.

V IZU jsem se dozvěděl hodně zajímavých věcí používaných např. ve hrách, což mě vždycky zajímá, takže spokojenost je na místě. Mrzí mě jenom trochu přísné opravování půlsemestrálky, ale možná je to jenom můj subjektivní pocit.

## Seminář Java (IJA)

Tak tenhle předmět mě zaujal v letním semestru asi nejvíc. Javu jsem měl rád už jenom z toho, co jsem věděl z doslechu, a proto mi udělalo radost, že se s ní konečně seznámím trochu víc a budu moct programovat třeba multiplatformní hry bez učení se nějakých systémových knihoven. Předmět byl postavený jenom na velkém projektu pro tým dvou lidí, z žádné zkoušky ani ničeho podobného se není třeba stresovat.

Na dvouhodinovkách nám přednášel dr. Kočí o základech jazyka a samozřejmě o všem, co vyžadoval projekt. Občas to nebylo moc zábavné, ale jinak šlo o slušně vedené přednášky.

Projektem pro tento rok byl server-klient simulátor Petriho sítí s grafickým uživatelským rozhraním a podporou více vláken na serveru a výsledek je ke stažení tady na stránkách. Upřímně řečeno mě ze zadání běhal mráz po zádech a pořád jsem se ptal, jak mám sakra zvládnout naprogramovat tak vymakanou aplikaci ve víceméně novém jazyku. Každopádně jsem se do toho hned pustil a Javu jsem si díkybohu zamiloval. Jeden programátor je v ní klidně schopný udržovat tisíce řádků kódu bez větších problémů, protože je hrozně přehledná a navíc s kvalitní webovou dokumentací není problém zvládnout základní síťové programování během pár minut. Navíc všechno za vás provede příkaz ant. Co se mi ale nejvíc líbilo, byl prostor pro kreativitu a vlastní řešení projektu, s čímž se na škole bohužel příliš nesetkávám a určitě by bylo dobré se tímhle předmětem inspirovat i jinde. Zadání nebylo vůbec striktní, jenom vymezovalo hlavní featury požadovaného programu a každý si s aplikací mohl vyhrát podle uvážení. Pokud jde o týmovou práci, projekt jsem tak nějak napsal sám, protože slečna kolegyně měla spoustu práce a i když mi přesto chtěla pomáhat, radši jsem to převzal s tím, že si Javu rád procvičím :) I tak naší aplikaci hodně pomohla při návrhu a testování, takže děkuji za spolupráci :)

Oproti semináři C++ nás z Javy občas zaneprázdňovaly drobné úkoly pro úplné začátečníky, čistě na osahání vývojových nástrojů a konceptů Javy. K úkolu byla vždycky přibalena testovací třída, která zaručovala 100% zisk bodů. Do určitého termínu nám bylo také uloženo odevzdat návrh aplikace ve formě diagramu tříd, což vidím jako plus, protože jinak by se na projekt nezanedbatelné množství lidí podívalo až týden před odevzdáváním, ne-li později.

Projekt nakonec v dostatečném předstihu před deadlinem spatřil světlo světa a zbývala jenom obhajoba. Na té jsem zažil pěkně horké chvilky, když se mi nedařilo spustit aplikaci na počítači dr. Kočího a málem jsem nedokázal napsat ani příkaz bez chyby na jeho podivné klávesnici, prostě takový malý trapas ^^ Naštěstí nám nakonec pan Kočí dovolil odprezentovat program na vlastním notebooku a to šlo už všechno krásně. Stálo nás to ale 20% hodnocení, což je sice škoda ale jinak jsem s aplikací spokojený a kašlu na body :)

Jednoznačně skvělý předmět pro všechny Javové nadšence ale nejen pro ně. Týmových projektů rozhodně taky není nikdy dost. Určitě nelituju, že jsem si dal Javu místo C++, jelikož jejich seminář byl (přinejmenším z doslechu) docela špatný v organizaci a na konci roku se objevovaly dokonce nějaké zmatky s narychlo vyhlašovanými obhajobami apod.

## Právní minimum (PRM)

Na tenhle předmět jsem si poctivě vystál frontu u papírového přihlašování a vyšel na mě jen tak tak (registroval jsem se jako předposlední, kamarád o jednoho člověka za mnou se už nevešel :). Jedná se o povinně volitelný humanitní předmět a tedy nutnost pro bakalářský titul na naší škole a opravdu jde jenom o formalitu, alespoň v tomto případě, protože předmět je pouze za docházku (v jiných PVH kurzech se prý musel občas vypracovat nějaký referát nebo něco podobného, tady ne). Musím ale říct, že předmět je to velice zajímavý a hodnotím jej velmi pozitivně.

Klasicky začnu přednáškami, které vede Mgr. Klapetek. Předně všechny asi bude zajímat, že nikoho do ničeho nenutí a nic nekontroluje ani nezadává, můžete klidně dojít na poslední přednášku, zakřížkovat si docházku a máte předmět. Tohle ale nemyslím nijak špatně, spíš naopak, je to totiž v souladu s tím, co přednáší. Vedle práva totiž tak na okraj učí i o morálce a občas se dostane až někam ke Křesťanství a jednoduše kromě základních znalostí o zákonech se snaží dávat do přednášek něco víc. Není to ale nijak přehnané a z práva jsem se naučil věcí víc než dost, navíc se přednášky hodně dobře poslouchají a některé příhody z praxe mě hodně pobavily. Hlavně vás ale z látky nebude nikdo zkoušet, dostanete kredity a získáte praktické znalosti z práva. Jednu přednášku se jako zpestření promítal film k tématu a na poslední jsme psali symbolický, samoopravovaný test, jenom pro vlastní ověření znalostí.

Když si zvolíte PRM jako povinně volitelný humanistický předmět, je jisté, že neuděláte chybu - buď vás zaujme, nebo na něho prostě nebudete chodit a kamarád vám bude křížkovat docházku. Myslím ale, že přednášky mají něco do sebe a jsem rád, že jsem si ze všech možností zapsal právě PRM.

## Celkové výsledky

předmět | body | známky
--- | --- | ---
Databázové systémy (IDS) | 73.0/100 | C
Počítačové komunikace a sítě (IPK) | 72.9/100 | C
Principy programovacích jazyků a OOP (IPP) | 56.5/100 | E
Základy počítačové grafiky (IZG) | 83/100 | B
Základy umělé inteligence (IZU) | 76.75/100 | C
Seminář Java (IJA) | 84/100 | B
Právní minimum (PRM) | 0/100 | F

průměr: 2.08
pořadí v ročníku: 64. - 65. / 164
prospěchové stipendium: 0 Kč