pondělí 4. června 2012

VUT FIT – 4. semestr

Další (již čtvrtý) semestr na VUT FIT je úspěšně za mnou a tedy nastává jeho shrnutí.

Celkově by se dalo říci, že toto byl zase o něco těžší semestr než ty předcházející (zvláštní jak se ta náročnost co půl roku zvedá :-) ). Nejednalo se ovšem ani tak o náročnost látky v předmětech, jako spíše o množství projektů, které bylo třeba udělat. A jak už to tak bývá, tak některé projekty byly užitečné a některé naopak zcela zbytečné, případně se zcela minuly účinkem.



IDS (Databázové systémy):

Konečně předmět, který se hodil do praxe. Pokud se podíváte na požadavky firem, které nabízejí práci, tak uvidíte, že kromě klasické množiny programovacích jazyků jako (C#, Java, C++ a C) je velmi často požadována znalost databází, především jazyka SQL. Tedy něco, co jsem až do dnešní doby moc neovládal.

Předmět vyučuje děkan FITu a délka přednášky jsou 3 hodiny. Přičemž dle mého názoru by se daly tyto 3 hodiny zkrátit na 2 a o nic moc by se nepřišlo (3 hodiny zachovat pouze když jsou prezentace). Tempo přednášek bylo pro mě zbytečně moc pomalé a jelikož pondělní přednáška byla od rána, tak jsem tam dost často usínal a měl výpadky pozornosti.

Jinak co se týče obsahu, tak ten měl hlavu a patu, video záznamy byly také (ovšem někdy jejich zveřejnění trvalo skoro měsíc) a navíc byla k dispozici pěkná opora, slidy a scripty, na kterých se demonstrovaly určité aspekty SQL. Prostě kdo se chtěl do IDS učit, měl všechny potřebné materiály poskytnuty a neměl tedy žádnou výmluvu pro to, aby neudělal projekty nebo písemky.

Body se tady daly získat v průběhu semestru několika způsoby.

Projekty:

ČinnostMax. počet bodů
1. Konceptuální model5
2. Skript SQL pro vytvoření databáze projektu5
3. Skript SQL s dotazy SELECT5
4. Realizace aplikace20

Konceptuální model: Pokud jste jej dobře udělali v IUS, tak tady stačilo možná jen trochu upravit a 5 bodů bylo doma.

SQL skripty: Také poměrně pohodové projekty. Stačilo se naučit SQL a udělat tabulky a dotazy k vašemu ER diagramu. Žádný zádrhel tady nebyl a pokud jste vše udělali funkční, tak 15 bodů bylo jistých.

Aplikace podle zadání: Aby tento předmět nebyl tak pohodový, tak výsledná aplikace se dělala v Oracle Forms Builder. Kdo ví o co se jedná, tak ví, kdo ne, tak já se k tomuto "software" nebudu vyjadřovat, nebo by mi Google smazal tento blog. Každopádně doufám, že už v tom nebudu muset nikdy v životě a ani po smrti pracovat. Pokud někdo věří na peklo, tak vězte, že Oracle Fotms Builder je jeho virtuální podoba pro programátory.

Půlsemestrálka:
Ta byla maximálně za 14 bodů a navíc mi přišla poměrně hard-corová. V jednom příkladu jsem nevěděl vůbec nic, select jsem nějak dal a z ER diagramu jsem byl totálně zmaten. Ne, že bych nevěděl, jak se dělá. ERka mám celkem zmáknuté, ale ze zadání jsem byl zmaten jak lesní včela. 

Nakonec jsem byl rád sotva za polovinu bodů. :-D

Semestrálka:
Tady bylo možno získat zbytek bodů. Trochu jsem se obával, že to bude něco jako půlsemestálka a většinu času budu koumat, co se po mě vůbec chce, ale naštěstí to byla písemka z těch nejdůležitějších věcí, které jsme brali, takže se dala v pohodě napsat na dost bodů na poprvé. :-)

Předmět jako celek byl poměrně zajímavý a užitečný, nicméně chyběly mi tu věci jako objektové databáze nebo práce s SQL v nějakém jiném jazyce. Tato témata byla na můj vkus probrána příliš povrchně a neprakticky na to, jaké je jejich skutečné využití. Jinak IDS má očekávání splnilo.

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

Sic to byl první síťový předmět na FITu, tak mě nijak zvlášť neoslovil. Ne, že by sítě byly úplně nudná oblast IT, ale přišlo mi, že tento předmět je, co se týče teoretické části jen o zkratkách. Kdo nevěří, brzy se přesvědčí. ;-)

Co se týče materiálů k výuce, tak žádná sláva to nebyla. Slidy mají celkově skoro 150MB, ale není to díky obrovskému množství informací v nich obsažených nýbrž tím, že jsou dělány na Macu s grafikou, která není nijak optimalizovaná a zabírá spoustu místa. Na první přednášce jste odkázáni na knihu, ze které se máte učit do předmětu, což je pěkné do doby, než se dozvíte, že ta kniha je anglicky, v knihovně je 20 kusů a už v průběhu přednášky se zvedali nerdi a šli vybrakovat knihovnu. Takže 5 minut po tom, co nám bylo řečeno "učte se z této knihy" už žádná kniha nebyla.

K projektům se dá říci jen tolik. Nebavily mě. Ne, že by nebyly přínosné k rozšíření znalostí, ale zkrátka instalovat si UNIX do počítače a psát klient-server aplikaci v holém C a BSD socketama není zrovna moc velká zábava.

Na druhou stranu je skvělé, že projekty nejsou povinné. Takže pokud získáte dostatek bodů z prvních dvou projektů, nemusíte implementovat vlastní spolehlivý protokol pomocí UDP (můj případ. Na konci semestru jsem byl už tak vyšťavený a venku bylo tak pěkné počasí, že jsem se k tomu dokázal dokopat).

Jak jsem již psal výše, projekty byly poměrně přínosné, ale člověka zkrátka irituje, že to co píše v C 2 dny se dá v C# a Javě napsat na 2 řádky. Naštěstí se na přednáškách probírá vše potřebné ke zvládnutí těchto projektů a máte k dispozici a nějaké dema pro inspiraci. Tedy nemůžete se vymlouvat, že vám nikdo nenastínil, jak ten projekt naprogramovat. ;-)

Tento rok se také zavedla novinka. Není půlsemestrálka, ale zato se v průběhu semestru píše několik menších testů maximálně za 3 body každý. Je to typu A,B,C,... přičemž je na výběr 0..n správných odpovědí a body  za špatnou se samozřejmě strhávají. Tyto testy mají studenty motivovat k tomu, aby se na látku podívali již v průběhu semestru, což se mi líbilo. Na druhou stranu mi některé otázky přišli jako docela solidní over-kill (tj. odpověď jsem nedokázal vydolovat z toho, co bylo na přednáškách).

Semestrální písemka je poté kapitola sama pro sebe. Člověk by očekával, že když vám mají testy v průběhu roku pomoci k semestrálce, tak že vám pomohou. Bohužel tomu tak nebylo. Semestrálka byla plná příkladů. Jako pár dní před termínem nám došel email, kde bylo napsáno, co se tam asi tak může objevit, ale některé věci jsem ve prostě slidech nenašel a na internetu byla jen letmá zmínka na anglické wiki. Takže u zkoušky jsem čučel jak puk na některé příklady. :-D Naštěstí jsem to dal na první termín, takže spokojenost. Ovšem byl tam boreček, který se minutu po zahájení písemky zvedl, odevzdal a za potlesku studentů v aule odešel. :-D

Zkrátka připravte se na to, že prestiž a obtížnost jsou nahoru a tak vám je k ničemu se podívat na to, jak v minulých letech vypadaly písemky. Naštěstí přednášející tohoto předmětu jsou celkem pohodáři a písemku neopravovali nikterak přísně (to, co jsem si myslel, že jsem napsal dobře jsem podle nich dobře napsal a body mi ochotně dali, takže tady jsem byl spokojen :-) ).

btw: V druhé půlce semestru je pár laboratoří. Na termíny se musíte registrovat celkem ve velké předstihu, tak si raději poznamenejte, kdy tam máte přijít. Ať se vám nestane jako mě, že místo na cvičení jsem jel se spolubydlou na velký kýbel kuřat co KFC. :-D Naštěstí, pokud přijdete na jiný termín a není tam plno, tak si to můžete klidně dodělat a bodíky dostanete.

IPK-projekt 1: download
IPK-projekt 2: download

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

Takový další IOS. Pro některé jedince nepřekonatelná překážka v cestě za dalším studiem. Nicméně to nemění nic na tom, že to je poměrně zajímavý a užitečný předmět.

Projekty do tohoto předmětu již nejsou spjaty se semináři C++ a Javy. Bohužel se to oddělilo a projekty jsme psali v Perlu a Pythonu.

Ke každému z těchto jazyků si můžete vybrat, jaký projekt v něm chcete napsat. Počet míst je limitován, takže refresh war je nevyhnutelná. :-D Já jsem si vybral JSON2XML (JSON to XML) a zvýraznění syntaxe v Python 3. Nevím, co mě to chytlo, ale překlad JSON do XML jsem udělal pomocí vlastnoručně napsané syntaktické analýzy + gramatiky a u druhého projektu jsem také moc knihoven usnadňujících práci nepoužil.

Kromě toho, že se podíváte na nové jazyky, tak také zjistíte, že některé z nich nejsou moc použitelné. Především Perl je mišmaš. Ať v tomto jazyce napíšete prakticky cokoli, tak interpret to sežvýká a vykoná. Tato volnost vede k tomu, že u jazyka, který se učíte dva dny, nemáte ještě vytříbený svůj vlastní styl psaní, proto jednou něco napíšete tak, podruhé zase onak a z výsledného kódu, který sice funguje se vám chce zvracet. A to si myslím, že C, C# a Java kód píši dost čitelně.

Úplným opakem je Python. Kdo neví, jak vypadá jeho syntaxe, tak doporučuji aby se podíval. Je to velice zajímavý jazyk, kde jednotlivé konstrukce neurčuje počet závorek, ale jejich odsazení, což je velice užitečné. Lidé, kteří již píší čitelně s tím nebudou mít problém a lidé, kteří jinak píší jako prasata, tak se jejich kód zlepší (ne, že by se zlepšila i čitelnost algoritmů a rozložení do funkcí atd., ale alespoň je ten kód odsazený tak jak má). Asi proto jsem se v průběhu semestru setkával u lidí, kteří samotné programování moc nemusí s názorem, že Perl je skvělý jazyk a Python totální poděs. Pro mě je to sice naopak, ale co už. Každému podle gusta.

Jinak k projektům do IPP jsou poměrně striktní a přesná zadání plná nepřesností. Tedy pokud si něčím nejste jisti, tak se zeptejte raději ve WIS-fóru. Nakonec to skončilo tak, že jsem první projekt nepsal podle zadání, ale spíše podle oprav ve fóru. U druhého projektu se mi už nechtělo dívat pořád do fóra a číst tuny oprav. Tak jsme to jel z větší části podle původního zadání... A na výsledných bodíkách to šlo poznat (nebylo jich tolik, kolik jsem očekával). :-D 

A k projektům ještě poslední věc. Musí se k nim dělat dokumentace a samotný kód musí být také pořádně zdokumentovaný. Tedy minimálně komentáře do zdrojového kód piště průběžně. Ať se vám nestane jako mě, že projekty naboucháte na začátku semestru, v půlce je máte doopravit a odevzdat a nakonec zjistíte, že nemáte moc páru, co která část vlastně dělá (to mi naštěstí stalo jen u jednoho projektu, takže to byla pohodička). 

Semestrální zkouška... K té se moc vyjadřovat nechci. Také jsem ji dal na první termín, ale spousta lidí ne a ani se nedivím. Navíc na to, kolik jsem se toho naučil a do písemky napsal, tak ohodnocení nebylo také, jaké bych si přál.

IPP-projekt 1 (JSON2XML): download














IPP-projekt 2 (zvýraznění syntaxe): download












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

Boží předmět. Skvělí vyučující, zajímavá látka, přiměřeně obtížný, užitečná cvičení a body za ně. Prostě jedna z mála věcí, která mě v tomto semestru bavila.

Více bych k tomu předmětu nepsal. Myslím, že pokud vás zajímá grafika, tak tento předmět se vám bude zamlouvat. A navíc první 3 studenti, kteří napíší nejrychlejší vykreslování 3D objektu v projektu, tak získají flašku vína. Have fun guys. ;-)

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

IZU je poměrně zajímavý předmět. Minimálně pro mě byl, jelikož jsem se s umělou inteligencí na FITu ještě neměl tu čest setkat.

Přednášky sice nejsou úplně záživné, občas se ztratíte ve výkladu, občas nějaká ukázka algoritmu nefunguje... Ale témata jsou obecně zajímavá.

Od druhé poloviny semestru jsou také cvičení, kde se probírají praktičtější věci (teorie aplikovaná na praxi). Takže za úkol máte projekty typu (naprogramuje A* pro mapy v C, udělej to a to v Prologu a Lispu).

Osobně doporučuji se na cvičení trochu připravit. Bylo nepříjemné, když jsem tam přišel a od cvičícího jsem se dozvěděl "naprogramujte to a to v Prologu" (přičemž jsem Prolog viděl jen z rychlíku na přednášce a nikdy předtím jsem v něm nic nedělal). Je sice pravda, že ty úkoly na cvičení nebyly nikterak závratně obtížné, ale zkrátka ve vás trochu hrkne. Především je nepříjemné, když nástroje, které požíváte jsou starší než vy a nestabilní až to bolí. Doporučuji tedy dělat úkoly pod Windows a pokud je potřeba, tak přes SSH na Merlinovi.

Jinak také doporučuji si pečlivě vybrat vyučujícího na cvičení. Ten můj měl totálně give a fuck přístup a aby nám dal body, tak chtěl ještě něco navíc (třeba v Prologu případ s tetou a pradědou atd. aby jste dostali body a on vás tam půl hodiny dusí na to, že chce ještě snachu, která ani není v zadání a upřímně ani nevím co za rodinného příslušníka to je).

Naštěstí jsem si vydřel všechny body, co šlo za cvičení a projety získat, ale by to občas porod. :-D

U půlsemestrály a semestrálky čekejte to, co jste se učili na přednáškách. Minimálně u nás nebyly žádné chytáky. Pokud jste se tedy poctivě podívali na látku, tak není důvod předmět úspěšně neabsolvovat.

IZU-projekt 1 (A* algoritmus): download
IZU-projekt 2 (Prolog): download
IZU-projekt 3 (Lisp): download

Poznámka: Nejsem si jist, zda-li to jsou finální soubory, co jsem odevzdával, tak tam mohou být chyby.

BAN4 (Angličtina 4: středně pokročilí 2):

Aneb "Hi I am FEKT and I will never let you go.". Nevadí, alespoň jsem to měl z PPV kousek do školy. :-)

Moje poslední povinná angličtina na VUT. A musím říci, že asi ta nejvíce v pohodě. Samozřejmě se tam učíte a naučíte, ale oproti FITu to je pohodička. Takový oddechový předmět. Navíc jsem měl Agátu, tedy o zábavu bylo postaráno.

Výsledkem je 85 bodů a krásné B (a to i s tím, že jsem před semestrálkou onemocněl a v průběhu písemky jsem dostával "záchvaty kašle". :-D Prostě jsem si několikrát musel vzít flašku a odejít na chodbu na pár minut. A poté se zase na chvíli vrátit a dopsat další část testu.).

IJA (Seminář Java):

Poslední předmět, který jsem tento semestr na VUT FIT absolvoval. Ale abych řekl pravdu, tak nevím, co k němu napsat. Na přednášce jsem byl jen jednou a to jsem si četl noviny na notebooku (kolidovalo mi to s IPP).

Vůbec tedy nevím, co se tam probíralo a co bylo řečeno. Takže pokud jste čekali nějaké info ohledně tohoto, tak vás zklamu. Jediné, co k tomuto předmětu mohu napsat, že projekty mi hodně daly a byly férové. K úkolům jste dostali testovací třídy a pokud vám jimi váš výsledek prošel, tak jste měli plný počet bodů. Jinak 0.

Projekty jsem samozřejmě dělal všechny a výsledná aplikace (Petri Net Editor and Simulator) je ZDE.

btw: Projekt byl teamový (2 členové), ale moc mi to nepřišlo. Jelikož jsem byl vedoucí, tak jsem si udělal raději většinu práce sám. Ne, že bych nechtěl teamově spolupracovat, ale Java byl jazyk, na který jsem se upřímně těšil a doufal, že si rozšířím a osvěžím svém dovednosti v tomto programovacím jazyce. Proto jsem se s tímto projektem vyloženě mazlil a užíval si kreativity a volné ruky, která se vám na FITu jinak jen tak nedostane.

Toto byl podle mě jeden z mála projektů během studia, který vás z "opice", která se musí držet do posledního puntíku striktně zadání posune na LVL opravdový programátor. Návrh architektury, tříd, GIU, síťové komunikace atd., v tom všem máte volnou roku . Stačí jen splnit body zadání a požadovanou funkcionalitu. To jak to uděláte je jen a pouze na vás.

Už by jenom stačilo, aby se z přednášek, kde se čtou slidy, staly přednášky typu IW5 (C#, tedy přednášení nad kódem přímo v průběhu přednášky) a je to naprosto skvělý předmět.

IJA-úkol 1: download
IJA-úkol 2: download
IJA-úkol 3: download





Projekt: stránka projektu










PS:

Kdybych měl shrnout celý 4. semestr na VUT FIT, tak "jde to, ale dře to". Projektů je požehnaně a učení také. Od poloviny semestru jsem také prakticky vůbec nenavštěvoval přednášky. Moc mi nedávaly a navíc jsem raději pracoval na projektech a nebo se učil sám. A jak vidno, tak samo učení přineslo své ovoce. Všechny předměty jsem dal na první termín a měl poté klid (ještě v tuto dobu někteří mí kolegové na fakultě bojí s třetím termínem na IPP). :-)