Osobní stránky

Zkušenosti z druhého semestru magisterského studia na ČVUT FIT

Na konci února jsem sepsal mé zkušenosti s magisterským studiem na ČVUT FIT (České vysoké učení technické – Fakulta informačních technologií). Z nabízených studijních oborů jsem si vybral zaměření Softwarové inženýrství oboru Webové a softwarové inženýrství. Minulý týden se mi podařilo úspěšně dokončit všechny předměty letního semestru a v tomto článku se s vámi podělím o své zkušenosti z jednotlivých předmětů.

V letním semestru jsem měl zapsáno 10 předmětů celkem za 32 kreditů. Absolvoval jsem 5 povinných předmětů pro mé zaměření Softwarové inženýrství: MI-PRM – Projektové manažerství, MI-MPI – Matematika pro informatiku, MI-PDB – Pokročilé databázové systémy, MI-PIS – Pokročilé informační systémy a MI-FME – Formální metody a specifikace. K povinným předmětům jsem si vybral i tyto volitelné: MI-W20 – Web 2.0, MI-PSL – Programování v jazyku Scala, BI-AND – Programování pro OS Android, Příprava na FCE4 a Tělesná výchova IV.

Tabulka zapsaných předmětů v letním semestru
Předmět Počet kreditů
MI-MPI – Matematika pro informatiku 7
MI-PDB – Pokročilé databázové systémy 4
MI-FME – Formální metody a specifikace 4
MI-W20 – Web 2.0 4
MI-PSL – Programování v jazyku Scala 4
BI-AND – Programování pro OS Android 4
MI-PIS – Pokročilé informační systémy 4
MI-PRM – Projektové manažerství 3

Nyní postupně popíši všechny předměty, co bylo jejich náplní a jak probíhala výuka. Předměty jsou seřazeny podle počtu kreditů a podle důležitosti.

MI-MPI – Matematika pro informatiku

Tento předmět je ohodnocen sedmi kredity a tomu odpovídala i jeho obtížnost. Navíc se obsah i forma předmětu od minulého roku zcela změnily, takže jsme letos nevěděli co čekat. Každý týden jsme měli jedno cvičení, v liché týdny jsme měli dvě přednášky a v sudé týdny přednášku jen jednu. Na začátku každé přednášky proběhlo focení studentů, prý pro statistické účely, kolik studentů na jednotlivé přednášky chodí a jak se v semestru mění počet navštěvujících studentů. Obsah předmětu byl velmi rozsáhlý, první týden jsme probírali derivace a rozbor funkcí dvou a více proměnných. V následujících týdnech jsme se učili algebraické struktury, jako jsou grupoidy, grupy, tělesa a okruhy v nichž jsme i počítali. Pomocí těchto struktur a čínské věty o zbytcích jsme se později naučili, jak probíhá výpočet RSA. Dalším tématem bylo stabilní párování v bipartitních grafech a algoritmy pro sekvenování DNA, jednalo se o hledání eulerovské cesty v grafu. Poté jsme probírali numeriku: chyby vznikající při výpočtech s pohyblivou desetinnou čárkou a numerické metody řešení soustav lineárních rovnic. Posledním tématem byly optimalizační metody a fuzzy logika.

Během semestru jsme psali tři testy, každý za 10 bodů a před každým z nich jsme mohli odevzdat dobrovolný úkol za 2 body. Úkoly sloužily spíše jako příprava na písemku, takže se jejich vypracování většinou vyplatilo. Na cvičeních se rozdávaly body za aktivitu. Celkem bylo potřeba pro udělení zápočtu 18 bodů. Na konci semestru se psal midterm test, kde bylo jedenáct otázek celkem za 20 bodů. Z tohoto testu musel každý získat minimálně 15 bodů, jinak nemohl jít ke zkoušce a na tento test byly, stejně jako na zkoušku, tři pokusy. Po úspěšném absolvování midtermu bylo potřeba složit ještě zkoušku, ta sestávala z písemné části za 30 bodů, ale nebylo stanoveno žádné povinné bodové minimum. Druhá část zkoušky byla ústní a ta probíhala až následující den. Průběh byl podobný jako u státnic. Před zkouškou byly zveřejněny dvě skupiny okruhů po patnácti a dvanácti tématech. Před ústní částí jsme dostali z každého okruhu náhodně vylosované jedno téma a měli jsme na přípravu více než dvacet minut. Poté jsme se přesunuli do vedlejší místnosti, kde na nás čekali dva vyučující a každý zkoušel svůj okruh otázek. Z každého okruhu jsme mohli získat podle vědomostí 0 až 7 bodů, takže dohromady až 14 bodů. Každý zkoušející měl takzvané právo veta, které znamenalo nutnost opakovat celou zkoušku včetně písemného testu. Právo veta mohlo být použito při základní neznalosti tématu, například u mého termínu bylo použito při neznalosti celé definice okruhu a podobně.

V matematice pro informatiku jsem se tedy naučil poměrně hodně nové látky i když by se některé části probírané látky daly vyčlenit do ostatních předmětů. Pravděpodobně to bylo kvůli tomu, že se jedná o poslední matematický předmět v magisterském studiu. Organizace předmětu a studijní materiály naštěstí byly na vysoké úrovni. Právo veta u zkoušky bylo pro všechny dosti stresující, ale naštěstí jsem u ústní části věděl vše podstatné, takže u mne nemuselo být použito.

MI-PDB – Pokročilé databázové systémy

V tomto předmětu jsme probírali pokročilé rysy databází, začínali jsme s objekovými rysy v relačních databázích, poté následoval výpočet vyhodnocování SQL příkazů, XML databáze, NoSQL databáze a distribuované databáze. Předmět měl každý týden jednu přednášku a každý druhý týden i cvičení. Na cvičeních jsme kromě prvního týdne psali pokaždé písemku z probírané látky. Naštěstí byla látka vždy na cvičeních kvalitně probrána, takže si stačilo zopakovat zápisky ze cvičení.

Zkouška měla dvě části. První část byla písemná, kde jsme mohli používat jakékoliv vytištěné materiály, ale obsahem písemky byly většinou příklady, takže materiály byly bez znalosti k ničemu. Druhá část následovala ve stejný den hned po písemce a probíhala podobně jako u matematiky. Před zkouškou jsme měli vypsaných 50 teoretických otázek, u zkoušky jsme si z těchto otázek dvě vylosovali a měli jsme nějaký čas na přípravu. Po přípravě zkoušející v rychlosti opravil písemku za naší přítomnosti a následovala diskuse nad vylosovanými otázkami. Naštěstí byl zkoušející vstřícný a na otázky se dalo poměrně dobře připravit.

Myslel jsem si, že se již o databázích, po několika absolvovaných předmětech zaměřených ať už přímo nebo nepřímo na databáze, nemůžu nic nového dozvědět. Naštěstí jsme ale v předmětu probírali distribuované databáze a výpočet vyhodnocování příkazů, které pro mne byly zcela nové a proto byl pro mne předmět přínosný.

MI-FME – Formální metody a specifikace

Podle názvu jsem si nedovedl představit, co bude přesnou náplní předmětu. Ze začátku jsme opakovali matematickou logiku a dokazovali jsme správnosti formulí. Později jsme do jednoduchých programů přidávali aserce a podle nich jsme měli matematicky dokázat správnost celého programu. Takovéto kontroly se prý používají například v leteckém průmyslu pro kontrolu správnosti software, aby se předešlo chybám, které mohou způsobit drahé škody. Osobně se mi zdá, že jsou tyto kontroly užitečné jen pro kontrolu hardware. Pro software se spíše než složité dokazování každého řádku programu používají unit testy, které jsou mnohem jednodušší na pochopení a spouštění.

Předmět měl jednou týdně přednášku a jednou za dva týdny cvičení. Na cvičeních jsme kromě první hodiny vždy jen opravovali zadané úkoly, za které jsme dostávali body nutné k zápočtu. Úkoly měly různou obtížnost a většinou zabraly poměrně dost času. Zkouška byla písemná a byla složena výhradně z příkladů, nutné minimum pro projítí byla polovina bodů.

MI-W20 – Web 2.0

Dalo by se říci, že tento předmět byl takovým pokračováním MI-MDW z minulého semestru, jelikož byl vyučován stejnými lidmi a organizace i náplň byly podobné. Jednou týdně jsme měli přednášku a jednou za dva týdny i cvičení. Na přednáškách jsme probírali principy Webu 2.0, analýzu sociálních sítí, mikroformáty, mikrodata, RDF, OAuth, OpenID, cross-origin policy a NoSQL databáze. Na cvičeních jsme postupně programovali příklady k těmto tématům a mohli jsme dostávat body za aktivitu.

Podmínkou k zápočtu byla aplikace, kterou jsme vyvíjeli v tříčlenném týmu. Úkolem aplikace byla analýza sociální sítě, diskusního fóra a podobně. V opakovaných intervalech jsme z některé stránky stahovali měnící se data a měli jsme tato data analyzovat podle různých kritérií. Přibližně každých čtrnáct dní jsme odevzdávali jeden kontrolní bod, takže jsme naši aplikaci budovali postupně. Náš tým si vybral analýzu hashtagů na Twitteru, což nám přišlo jako nejzajímavější. Zkouška byla písemná a byla vždy rozdělena na jednu teoretickou část, kde bylo přibližně deset otázek a dvě praktické části, kde jsme psali kód anebo počítali různé metriky pro sociální síť.

MI-PSL – Programování v jazyku Scala

V tomto předmětu jsme se učili programovací jazyk Scala. Jedná se o jazyk běžící na JVM (Java Virtual Machine), takže Scalu můžete použít všude tam, kde běží Java. Tento jazyk přináší mnoho vylepšení a zkrácení psaného kódu, takže se v něm aplikace vyvjíjejí mnohem rychleji, ale je kvůli tomu je složitější na naučení. Pokud vyvíjíte v Javě, určitě se na Scalu podívejte.

Tento předmět byl zcela nový, takže běžel první semestr. Měli jsme každý týden jednu přednášku, kde jsme probírali specifikaci jazyka a jeho jednotlivé rysy. Každé dva týdny bylo cvičení, kde jsme programovali cvičné úlohy. Přibližně v půlce semestru se na přednášce psal test na teoretické otázky celkem za 20 bodů. Na konci semestru jsme odevzávali semestrální práci maximálně za 30 bodů. Mohlo se jednat o jakoukoliv aplikaci napsanou ve Scale. Já jsem přepsal a upravil svoji aplikaci, kterou jsem psal pro Andorid (viz dále), aby fungovala v příkazové řádce. Výsledný kód byl mnohonásobně kratší a přehlednější.

O Scalu jsem se zajímal již dříve a tento předmět mi pomohl se ji velmi rychle naučit. Materiály k předmětu byly velmi kvalitní a kdybych se chtěl Scalu učit sám, trvalo by mi to mnohem více času. Scalu jsem si velmi oblíbil.

BI-AND – Programování pro OS Android

Tento předmět je primárně určen pro bakalářské studium, ale pro můj obor je jako volitelný, takže jsem se zápisem neváhal. Jednalo se o první běh tohoto předmětu, stejně jako u MI-PSL, ale nemůžu si stěžovat na žádné organizační problémy. O tento předmět byl mimochodem veliký zájem, pokud si ho někdo nezapsal v předběžných zápisech, tak se později do předmětu již nedostal, protože byl již plně obsazen. O Android jsem se zajímal již delší dobu, ale nikdy jsem pro něj žádnou aplikaci nenapsal, proto jsem se na předmět velmi těšil.

Každý týden jsme měli přednášku a cvičení. Na přednáškách jsme probírali layouty, Activity, práci s databází, Service, Widgety a různé aspekty programování pro mobilní zařízení. Cvičení byla nepovinná a dostali jsme vždy připravenou úlohu s vynechaným kódem, který jsme měli doplnit. Vzhledem k různé úrovni materiálů pro Android na internetu byly slidy z přednášek velmi užitečné a na velmi vysoké úrovni.

Jako požadavek k zápočtu jsme měli naprogramovat vlasní aplikaci nebo si vybrat jednu ze zadaných. Vybral jsem si klienta pro Facebook, jelikož oficiální aplikace podle mě není tak kvalitní, jak by mohla být a již jsem měl dřívější zkušenosti s Facebook API. Nejdříve jsem se domníval, že bude tato semestální práce jednoduchá, ale velmi jsem se zmýlil. Musíte ošetřit mnoho stavů aplikace (přetočení displeje na výšku a na šířku), inteligentní ukládání obrázků do zařízení, aby nezahltily paměť anebo automatické stahování dat v jiném vlákně. Nakonec mi tato aplikace zabrala mnoho času a pokrok šel velmi pomalu dopředu i přes to, že jsem se na aplikaci snažil pracovat průběžně. Tento jev s programováním první apliakce pro Android mi potvrdilo více kamarádů. Nyní, když již vím, jak vše funguje, bych aplikaci pravděpodobně napsal v mnohem kratším čase. Za aplikaci jsme mohli získat celkem 40 bodů podle různých kritérií (dokumentace, kvalita kódu, uživatelské rozhraní a funkčnost), za každé z kritérií bylo 10 bodů a museli jsme z každého dosáhnout minimálně pěti bodů.

Zkoušková písemka sestávala přibližně z 20 otázek celkem za 60 bodů. Jedna otázka byla programovací, kde jsme měli uvést přibližný kód, ostatní otázky byly teoretické. Přibližně pět otázek bylo označeno tučně a ty musely být zodpovězeny správně, v opačném případě jste museli zkoušku opakovat. Minimum pro projití zkouškou bylo 50%, tedy 30 bodů.

MI-PIS – Pokročilé informační systémy

V tomto předmětu jsme si měli vyzkoušet, jak vypracovat dokument pro zákazníka, tak, abychom mohli prezentovat náš produkt. Tento předmět měl jednou týdně přednášku a každé dva týdny cvičení. Na přednášky jsme měli kvalitního vyučujícího z oboru, který měl bohaté zkušenosti se zaváděním informačních systémů. Přednášel většinou o svých zkušenostech a o příkladech ze života.

Na cvičeních, která se konala každé dva týdny, jsme v čtyřčlenných týmech postupně vypracovávali dokument, který měl několik částí: věcný záměr, architektura, finanční a nefinanční zdroje (rozpočet a harmonogram). Každou část jsme posílali přibližně v čtrnáctidenních intervalech. Každý z týmu byl zodpovědný za jednu z částí a na konci semestru měl ředitel projektu prezentaci. Celková známka se skládala z týmové práce: průběžný reporting, prezentace a závěrečná zpráva – každá část byla za 20 bodů. 40 zbývajících bodů bylo za konkrétní část, za kterou byl dotyčný zodpovědný. Zkouška byla nutná jen pokud někdo neměl dostatečný počet bodů ze semestru.

MI-PRM – Projektové manažerství

V tomto předmětu jsme probírali manažerské řízení týmu, studii proveditelnosti, CBA, ROI, analýzu rizik, procesy, harmonogram a vše co k projektovému manažerství patří. Přednášky se konaly každý druhý týden a přednášející taktéž pracoval v oboru, takže měl bohaté zkušenosti a říkal mnoho užitečných postřehů na které během praxe přišel.

Cvičení se konala každý týden a na začátku jsme vždy probírali nové pojmy a ve zbytku času jsme dostali úkol na další týden a společně jsme diskutovali o různých možnostech řešení. Úkoly jsme vypracovávali v týmu a na začátku další hodiny mělo vždy několik týmu odprezentovat své řešení, přičemž každý z týmu musel během semestru prezentovat minimálně jednou.

Na konci semestru jsme psali zápočtový test, ve kterém bylo přibližně deset teoretických otázek a jedna delší, kde jsme měli například vypsat, jaké vlastnosti by měl mít projektový manažer. Tento předmět byl jen za 3 kredity, takže pro zakončení stačilo získat pouze zápočet.

Příprava na FCE

Tímto semestrem jsem dokončil čtyřsemestrový dobrovolný kurz příprava na FCE. Bohužel jsem v dubnu promeškal registraci na možnost absolvování FCE testů letos v létě, takže budu muset počkat do podzimu na další termín. Kurzy mi velmi pomohly a natrénoval jsem si psaní testů přesně jak probíhají při oficiální zkoušce. Test se skládá z několika komunikačních, písemných a gramatických cvičení. Do příštího semestru si plánuji zapsat některou další angličtinu, abych se dále zdokonaloval.

Plavání

Posledním zapsaným předmětem tohoto semestru pro mne byla tělesná výchova a stejně jako v předchozím semestru jsem si vybral plavání, které mne baví nejvíce. Tělesná výchova je společná pro celé ČVUT a u plavání máme na výběr z několika bazénů v Praze a cena je velmi příznivá. Trénujeme všechny plavecké styly a postupně zlepšujeme techniku. Chodím na plavání rád a i přesto, že nejsou za tělesnou výchovu žádné kredity, plánuji si zapsat plavání i v příštím semestru.

Závěr

Letní semestr byl oproti zimnímu jednodušší a to hlavně díky PARům. Tento semestr jsme měli těžkou matematiku, ale vzheldem k tomu, že jsme psali několik testů a úkolů, tak jsme se danou látku učili postupně a zkouška byla většinou opakování příkladů ze semestru s doučením teorie.

Ostatní předměty byly občas pracné, ale většinou se vše dalo s vynaloženým úsilím zvládnout. Nejpřínosnější pro mne tento semestr byli: Programování v jazyku Scala a Programování pro OS Android. Oba předměty jsem si vybral jako volitelné a s oběma jsem byl velmi spokojený a určitě je využiji dále.

Jakub Škvára


Jakub je cestovatel, blogger a webový vývojář. Zajímá se především o technické novinky a rád navštěvuje konference. Používá: Symfony2 Framework, AngularJS, NodeJS, MongoDB a další moderní technologie. Aktuálně žije v Londýně.