Wow, 8. semestr na VUT FIT. Dal mi zabrat, ale je konečně za
mnou.
Jak tento semestr charakterizovat? Byl to jeden velký
meeting (hlavně díky MPR a ostatním teamovým projektům). V knihovně jsem
strávil mnohem více času než kdekoli jinde a to jsem na bakaláři pořádně
nevěděl, že nějakou knihovnu s konferenčkama máme. :-D Hmm tak mě napadá,
stejně jsem si tam nepůjčil nikdy knihu. Ale třeba si nějakou půjčím v posledním
ročníku.
A kromě meetingů? Přiučil jsem se, že pokud si zlámete
nohu/přetrháte vazy a většinu semestru pajdáte o berlích, tak prakticky nikdo
není ochoten zapnout záznamy a zveřejnit je. To, že je celkem složité dopajdat
na FIT a sedět tam X hodin, přičemž vám natéká v sádře noha a bolí to jak
kráva je spoustě vyučujících jedno. Smutné jak málo je na FITu „humanity“. (vynechal
jsem z toho, ty kteří záznamy zveřejňují a dokonce se starají, když se jim
někdo s berlemi rozseká na schodech v aule)
Ale konec s bezúčelným tlacháním. Tady máte seznam
předmětů, které jsem tento semestr měl. ;-)
FLP - Funkcionální a logické programování
FLP je bezpochyby jeden z největších strašáků na FIT.
Jeho pověst je na úrovni předmětů jako TIN a MAT. Teamové projekty, těžké
písemky, zápočet 20 bodů a … a překvapivě malá úmrtnost. Tento rok předmět dalo
107 lidí a jen 28 mělo smůlu.
Navnadil jsem vás, že ten předmět nedalo jen 28 lidí? No
skutečnost je taková, že většina lidí z předmětu dostala známku E, druhá
nejčastější známka byla D a pár lidí dostalo lepší známku. Já ke své radosti
dostal 79 bodů na prvním termínu a už jsem se nemusel otravovat s dalšími
pokusy. Bohužel spousta lidí se s tímto předmětem drbala i třetí pokus.
Přednášky
Přednášky vede Dušan. Většina z vás s ním je obeznámena
z bakaláře, kde učil předmět IPP. A stále si jede to svoje. Hodí slidy a
vysvětluje Lambda calculus, Haskell a Prolog. Kupodivu látku vysvětluje celkem
srozumitelně, ale někdy je toho prostě moc, a jakmile se jednou zamotáte, tak
se potom špatně chytá.
Cvičení
Co se týče cvičení… byl jsem na prvních dvou-třech. Přišlo
mi to celkem pointless. Navíc se v té době hrál na Olympiádě hokej, tak to
bylo zabité. Myslím, že je lepší si otevřít learnyouahaskell.com a naučit se to
z toho. A že je stránka anglicky? Who cares? Jste na výšce, tak by vám
nemělo problém to přelouskat. ;-)
Jen si tak hraji s Jablíčkem v CVT a najednou toto. |
Semestrálka
Na tu jsem se drtil jak divý. Měl jsem na ni jen 5 dní (i
když jsem učil i předtím) a v těch pěti dnech semestrálku z GJA na
kterou jsem si ani nečetl slidy a doufal, že hromada bodů z projektu a
znalosti, které mám s Javou EE mě zachrání (což se nakonec stalo).
Ale zpátky k FLP. Dušan nám říkal, že pokud si to
neodsereme (neodporogramuje), tak nemáme šanci. Já s ním souhlasil, ale
chtěl jsem i záznamy, které pomáhaly, když jsem něco nemohl dostat do hlavy. No
něco nakonec zveřejnil, ale některé chyběly a byly to právě ty, které by se mi
hodily.
Každopádně moje příprava… každý den budíček na osm, kafe do
půllitru a jel jsem jak fretka. Potom půl hodiny pauza na oběd a jel jsem zase
do večera. Půl hodiny pauza na večeři (takže jsem dokoukal rozdívanou epizodu
Game of Thrones od oběda) a jel dále až do jedné do rána.
Na konci této etapy jsem byl vždy tak vypatlanej
z Lambdy, Haskellu a Prologu, že jsem další hodinu nemohl usnout… a prásk
osm ráno, budíček, kafe a jedem další kolo… a další a další… Ve čtvrtek jsem
měl oddech a šel si napsat semestrálku z GJA a jedno poslední kolečko
učení.
Co se týče stylu učení, tak to jsem prostě vzal hromadu
propisek a tlustý sešit a kódil na papír. Čas od času něco opsal do nouťasu a
spustil, ať vím, že nepíši totální bláboly a poté se vrátil zpátky
k papíru. Na zkoušce se to dělá stejně. Píšete kód na papír. Teorii jsem
se neučil. Slidy jsem k semestrálce ani neviděl.
Typy příkladů jsou každý rok podobné. Ale samozřejmě se
nedají naučit nazpaměť. A Dušan to ví, takže se ani nemusí snažit vymýšlet nový
a převratné věci. Prostě do sebe musíte dostat procházení stavového prostoru
v Prologu, Lambdu a důkazy, Haskell a Lambdu v něm a tunu dalších
věcí. Ty příklady nestačí, jen tupě opisovat. Musíte je pochopit. Musíte znát
dobře oba jazyky a programovací paradigmata a také samozřejmě základní
algoritmy na binární sčítačku, Eratosthenovo síto, stromy a vlastně všechny
důležité věci, které jste se dozvěděli na bakaláři. Když máte trošku toho
programátorského nadání, tak tyto algoritmy vymyslíte i přímo na zkoušce, ale
máte je tak na půl v Céčkové podobě a sebere vám to drahocenný čas a ještě
to stejně musíte přepsat do Haskellu nebo Prologu.
Projekty
Projekty jsou celkem obtížné, teamové (4 lidé) a někdy se
špatně vedou. Haskell se ještě dá. Analyzujete problém, řeknete, ty uděláš
funkci A, ty vezmeš výsledek funkce A a uděláš funkci B, která bude mít takové
výsledky a já udělám C a monády pro načítání dat a ten poslední dostane něco
lehčího a otestuje projekt. Můžete si to dovolit. Haskell nemá vedlejší efekty
u funkcí. V to je pro mě jeho krása. Ale dělat vše pomocí rekurze? Chtělo
se mi z toho po pár dnech zvracet. Ani neexistuje způsob, jak to nějak
normálně debugovat.
Výsledek? Projekt v Haskellu jel, bylo za něj dost
bodů, ale rychlost nebyla nic moc. A to jsme se ještě snažili optimalizovat
kód.
V Prologu jsme dělali hru Connect 6, což je něco jako
piškvorky. Během tohoto projektu nám odpadl z teamu jeden člověk, takže jsme
to dělali ve třech a byli jsme trochu ve skluzu. Nakonec jsme z toho
dostali zase full point, ovšem rychlost umělé inteligence nebyla nikterak
excelentní. Na tah máte jen jednu sekundu, což není mnoho.
A nějaké rady? Pokud děláte vedoucího teamu, tak dělejte
meetingy a předtím, než začnete něco psát, tak si sedněte s teamem,
analyzujte projekt, rozčleňte ho na podproblémy a poté rozdělte práci lidem.
Stejně jako když se na bakaláři dělal v IFJ kompilátor, tak vedoucím doporučují
vzít si práci díky, které můžete kontrolovat postup co nejvíce členů
v teamu. Udělejte něco jako kostru programu, kde budete lepit jednotlivé
funkce od ostatních lidí + si klidně vezměte I/O operace atp.
Kdyby se náhodou stalo, že jste práci udělali nějak rychle,
přijdete se k někomu, kdo narazil na nějaký zádrhel a pomozte mu
s řešením daného problému. Pokud si omylem naberete moc práce, nebojte se
to přiznat a požádat o pomoc. To stejné platí, pokud neodhadnete náročnost
nějakého problému. Pomozte dotyčnému, nebo k němu někoho přiřaďte. Vedete
team a tipuji, že už nejste usmrkaný puberťák s maturitním vízem, na
kterém ještě nestačil zaschnout inkoust… takže se podle toho chovejte. Máte
pravomoc rozdělovat body, pokud někdo nedělá, co má a kašle na tým, nebojte se
mu pohrozit srážkou bodů. Nebylo by to potom férové k těm, co makají nebo
k vám. Samozřejmě, jestli vy sami děláte velké kulové a drolí se vám team
pod rukama, tak by se hodilo z toho vyvodit nějakou zodpovědnost. ;-)
Jo a ještě jedna důležitá věc. Nepodceňte komunikaci
v teamu. Může se vám stát, že vám jeden člen teamu 3 dny před odevzdáním
napíše, že má zápočet a že na projekt kašle. Takovéto situace jsou nemilé :-D .
Haskell – Simple Grep
Prolog – Connect 6
MAR – Marketing
Můj první předmět z podnikatelky. Byl jsem na něj
zvědavý. A byl to srandy kopec. Vyučující z počátku straší, že jsou
písemky, musíme splnit to a ono, a předmět bude těžký… Po první „mini-písemce“
uvidíte, že realita není zase tak strašná. Vlastně v porovnání
s předměty z FITu je MAR naprostý joke, co se týče obtížnosti. :-D
Nebudu moc řešit, co se v předmětu všechno dělá, jaké
jsou projekty atd. Chtěl bych vypíchnout jednu zajímavou věc. V tomto
předmětu si pokecáte. Přednášky jsme měli ráno v Áčku. Malá učebna a díky
ranní hodině i málo lidí. Můj průměrný čas dopajdání o berlích byl 8:05 a
v tu doby už v učebně byli všichni. Všech 7 lidí z nějakých 37,
kteří tam měli sedět.
Díky tomu, že nás na přednášky chodilo jenom pár, tak jsme
si mohli s přednášejícím pokecat o tématu i o tom, co nás jenom zajímalo.
A já toho samozřejmě s chutí vyžíval. :-D Tím se mimoděk omlouvám některým
mým kolegům, kteří měli v plánu se tam dospat anebo apaticky posedávat.
Toto se na FITu jen tak nevidí... závan výuky z podnikatelky |
Získat Áčko z marketingu je poměrně easy. Uděláte, co
musíte, zajdete na cvika, napíšete teamový projekt a občas se naučíte na
relativně jednoduchou písemku. Čekali jste něco více? Smůla, to je vše a máte
za to dobrou známku. ;-)
Projekt do MAR
Download: https://drive.google.com/file/d/0BzEavpv8QogcOUFya0w3QjE2c1U/edit?usp=sharing
MPR - Management projektů
Nůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůůda…
Ne počkat byly tam 2 boží přednášky, od lidí z praxe. A nůůůůůůůůůůůůůůůůůůůůdné
učení na semestrálku.
Zkrátím to, předmět jsem udělal na Á (a to nebyl ani
jednoduchý a jako bonus byl nudný) a na národní certifikaci na management nebo
tak něco stejně nejdu, jelikož v době konání budu v CERNu.
Projekt - strukturovaný seznam činností
Projekt - odhad ceny produktu
PRL - Paralelní a distribuované algoritmy
Tento předmět jsem si zapsal sám. Někteří jeho obtížnost
přirovnávají k obtížnosti FLP a pro některé je ještě větší hardcore (mě se
zdál v poho). Ale mě zajímá paralelismus a vše možné kolem něj, tak jsem si
řekl, že by se mi znalosti z tohoto předmětu mohly hodit.
A jako jo… v předmětu jsem se dozvěděl spoustu věcí,
které jsem dosud neznal. V zásadě se učíte algoritmy jako v IAL, ale
v několika paralelních podáních + něco navíc. Dozvíte se něco o teoreticky
nejrychlejších algoritmech pro řazení, vyhledávání a hraní s maticemi.
Problém je v tom, že jde jenom o teorii. Papír snese
vše, hardware, který by měl dané výpočty provádět už nikoli. Chcete seřadit
rychle pár milionů prvků? No tak k tomu potom potřebujete mašinu, která má
mega-na-druhou procesorů. Celkem sci-fi (prozatím).
Spíše jsem doufal, že se dozvím i něco o tom, jak výpočty akcelerovat
pomocí grafických karet, jak určit počet vláken tak, aby daný výpočet běžel co
nejrychleji na serveru atd. Bohužel v předmětu o těchto tématech nepadlo
ani slovo. Stejně tak byl kvantový počítač zmíněn jen v jedné jediné větě…
další oblast, o které bych se toho chtěl dozvědět něco více.
Projekty
Světlá stránka předmětu jsou projekty. Oficiálně tři,
prakticky jsou dva. Jedná se o implementaci paralelních algoritmů pomoci MPI.
Nikdy jste tuto zkratku neslyšeli? Neva, prakticky jde o C/C++ s tím, že
si jednotlivé procesy zasílají zprávy.
Jelikož se jedná o paralelní systém, tak pod Linuxem
neexistuje normální způsob debugovaní takového programu (printf to jistí ;-) ). To projekty trošku
komplikuje. Mě se ale i tak zdály implementace obou dva algoritmů celkem v pohodě.
Ale je možné, že jsem byl v menšině. Potkal jsem lidi, kteří v tom celkem
patlali. Asi to záleží na tom, kdo má jaké zkušenost s paralelismem a jeho
implementací.
Dám vám tady oba dva projekty k nahlédnutí. Ale je to
fakt jen pro studijní účely. Hlavně nic neopisujte. Nic vám to nedá a ještě vám
hrozí vyhazov z FITu.
Projekt 2 - Enumeration sort
Projekt 3 - Parallel Binary Adder
Nevýhoda PRL
Co mě na tomto předmětu vadilo, tak byla jeho organizace,
která vlastně nebyla. Vždyť mi jsme se ani nedozvěděli, kdy píšeme
půlsemestrálku. Takže půlka lidí musela přes hodinu čekat na druhou. A to je jen
jeden z mnoha příkladů.
Slidy jsou samozřejmě plné chyb (oficiálně se tomu říká
chytáky), záznamy nejsou. A ještě jedna důležitá věc. Pokud se vám zdá, že máte
málo bodů ze semestrálky, tak si zajděte na konzultace. Stává se, že vám bez
problémů nezapočítají body za jeden nebo za dva příklady a potom se divíte, co
jste pohnojili. Mě se už kvůli tomu do Brna jet nechtělo, tak jsem si nechal
Béčko, ale lidi co tam šli, tak často dostali přidáno celkem dost bodů.
ZPO - Zpracování obrazu
Super-boží-cool předmět. Lidi z UPGM jsou v cajku,
tak jak je znáte z bakaláře. Přednášky jsou zajímavé a dokonce si tam
občas můžete pokecat a na něco se zeptat bez toho, aby se vás vyučující snažil
ponížit nebo se tvářil otráveně. Fakt skvělý pozitivní přístup.
Během semestru děláte asi nějakých 5 úkolů v OpenCV.
Jsou jednoduché, ale procvičíte se na tom. Navíc jde OpenCV použít spolu s Visual
Studio (na YouTube jsou na to návody), takže programování je zábava.
V předmětu se píše i teamový projekt. My měli morphing:
https://www.youtube.com/watch?v=iBMfoULrPbk
. Napsat si jej můžete v čemkoli. V našem případě jsme zvolili Windows
8/Metro/Moder UI prostředí. A celkem to šlo. Projekt se obhajuje. Měl nás Víťa,
na všechno se podíval, podiskutoval o tom a zdrbal nás, že jsme mu vytiskli
dokumentaci na papír. Jo netiskněte dokumentaci, je to plýtvání papíru. Prostě
mu to dejte přečíst na iPadu nebo tak něco. :-D Ale nakonec dal stejně
fullpoint. :-)
V ZPO jsou dvě písemky. Půlsemestrálka není v půli
semestru, ale až na konci. Divné, že? Ale jinak geniální nápad. Nezatěžuje vás
to v době, kdy máte starostí už tak dost. A navíc dva týdnu poté píšete
semestrálku. Takže si jen zopáknete, to co jste snad ještě nezapomněli za těch
pár dnů a jdete si pro Áčko. 98 bodů za semestr + zábavný projekt v čem chcete
+ znalosti o zpracování obrazu + cool vyučující. Takové předměty by měly být
všechny.
Mini-projekty
WAP - Internetové aplikace
Říkal jsem si, že když to je na magistru, tak se tam naučím
něco zajímavého, co ještě neznám. No sekl jsem se. Pamatujete si na informační systémy
z bakaláře? Tak to je vončo s jiným názvem. XSLT, JS, PHP, CSS, HTML.
Na konci vám Burget řekne něco o Web Services, což je jediné, co mě něco dalo.
V předmětu je jen jeden projekt. Je to za
neuvěřitelných 30 bodů. Vezmete JS a napíšete v něm poměrně lehký projekt.
Hotovo. Teď se kajícně přiznám, že já ten projekt psal v TypeScriptu a
potom zkompilovat do JS. No jo, je to pořád JS, ale alespoň jsem měl snahu se
naučit něco nového a něco navíc si z tohoto předmětu odnést. A i s naučením
„nového“ programovacího jazyka jsem ten projekt napsal za chvíli a za plný
počet bodů.
Jinak projekty a písemky opravuje Burget. Je to pohodář. Co
máte dobře, tak si buďte jisti, že za to dostanete plný počet bodů. Co nemáte
úplně správně, tak z toho vám vymačká, co nejvíce bodů jde.
Ve výsledku potom není problém mít full za projekt + full za
půlsemestrálku a potom ztratit 3 body na semestrálce. Kdo vůbec neumí dělat
webovky, chce se naučit XSLT a nebo se jen ulít, tak pro toho je tento předmět šitý
na míru.
Projek - Validátor formulářů
GJA - Grafická uživatelská rozhraní v Javě
V první řadě… Tento předmět nemá s GUI v Javě
mnoho společného. Před rokem nebo tak nějak došlo k restrukturalizaci prakticky
všeho, co tam dříve vyučovalo a vznikl předmět „Java EE + Android“.
Proberete tam servlety, JSP, JSF, Sping, PrimeFaces,
Hibernate, JPA, Androind a hromadu dalšího. Každá z těchto technologií je
tak na rok-dva učení. Vy ji prakticky celou projedete za dvě hodiny. Je to
nářez a nedá se to zvládnout.
Spíše bych ocenil, kdyby se v předmětu učilo, jaké
výhody a nevýhody daná technologie má, kdy ji ne/použít, jaké jsou alternativy
atd. Bylo by to mnohem užitečnější než 2 hodiny toho, kde je jaký konfigurák a
jeho detailní obsah.
Vyznat se poté v takovém množství špatně zapamatovatelných
informací je celkem hardcore. Hlavně u písemek, které dopadly bídně. Lidé
nevěděli, co je důležité a co se učit. Navíc to bylo mezi PRL a FLP, takže je
jasné, kde byly priority. Naštěstí ze semestrálky není minimum a za projekt je
hromada bodů.
Co se týče projektů. Ty jsou teamové, ale můžete si je dělat
sami. Můžete si dokonce vybrat vlastní zadání. Kouřil, který tam má prakticky
všechno na starosti je cool chlápek a pohodář a vychází ve všem vstříc (no jo,
UPGM). Když napíšete relativně obstojně půlsemestrálku a zamakáte na projektu,
tak s body ze semestrálky to Éčko získáte… vlastně většina lidí z předmětu
dostala É. :-D Ale dobré známky nejsou pointa tohoto předmětu. Pro mě bylo
hlavní, že mi toho dal hromadu projekt, který jsem dělal (vlastní zadání +
PrimeFaces).
Původně jsem byl zklamaný, že na FITu není předmět s Java
EE, ale on tu je. Jen ho schovali za tímto zastaralým názvem :-). U tohoto
předmětu nehledejte dobré známky, ani se neulijete. Ale pokud máknete na
projektu, tak naučíte spoustu nového a myslím, že v konečném výsledku bude
spokojeni.
2 komentáře:
Tak nějak si zapomněl u PRL zmínit úroveň přednášek - první polovina s Hanáčkem GENIÁLNÍ, druhá polovina se Zbořilem ubohá
Okomentovat