Zobrazují se příspěvky se štítkemFIT ČVUT. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemFIT ČVUT. Zobrazit všechny příspěvky

pondělí 11. června 2012

IV. semestr na FIT ČVUT

 Ohlédnutí se za letním semestrem 2011/2012

Počítačové sítě (BI-PSI)

Kromě 20. výročí internetu u nás připadla na tento semestr ještě jedna mimořádná síťařská událost, návštěva paní Laury ze společnosti CISCO. Zdá se, že se akce vydařila, ačkoli studentský folklór vidí CISCO krabičky v trochu jiném světle:

BI-SAP (Struktura a architektura počítačů) / I have no idea what I'm doing / Bitch please / (síťové prvky CISCO)
BI-SAP (Struktura a architektura počítačů) / I have no idea what I'm doing / Bitch please / (síťové prvky CISCO)

Hlavním výkonem v semestru je vytvoření klient/server aplikace nad protokoly TCP (dělal jsem v Pythonu) a UDP (dělal jsem v C++). Jinak je předmět nenásilný, u zkoušky krotký.

Pravděpodobnost a statistika (BI-PST)

Bakalář na FIT obsahuje čtyři matematiky: analýzu (BI-ZMA), lingebru (BI-LIN), diskrétku (BI-ZDM) a statistiku (BI-PST). Z těchto čtyř je mi nejblíže lingebra, především díky panu doktoru Olšákovi a jeho důrazu na teorii. Protože matematika není b2 – 4ac, ale myšlenkový rámec.

Cílem BI-PST je seznámení se se základními pojmy a postupy statistiky a jejich praktická aplikace. Protože statistiku nelze stavět „na zelené louce“ jako lineární algebru, a základy v podobě BI-ZMA nedostačují, visí část látky ve vzduchu; filosofické otázky pravděpodobnosti situaci nezlepšují. Výsledkem je trochu zvláštní matematika, ačkoli se v ní počítá a dosazuje do vzorců „jako obvykle“. Na druhou stranu je třeba připočítat k dobru skupinový domácí úkol, který vede k vzájemnému ujasňování si látky.

  \varphi(x) = {1 \over \sqrt{2\pi}} e^{-x^2 / 2}

První termín zkoušky byl přiměřeně obtížný, úroveň však stoupá a rozdělení má dlouhou oháňku – měsíc po začátku zkouškového má známku polovina studentů.

Administrace OS Unix (BI-ADU)

Předmět BI-UOS (Úvod do operačních systémů), který učí především základy práce v unixových systémech, se nesetkává s velkou přízní studentů. Předmět BI-OSY (Operační systémy), zabývající se teorií a paralelním programováním, má pověst jako součást „síta“ 1. ročníku. Studenti otrlé povahy a/nebo oboru Počítačové inženýrství si poté zapisují BI-ADU.

Vlastně ne tak docela. Pokud je za předmět nadstandardních 6 kreditů, tak jedině proto, že cvičení nejsou nicnedělací, ale vyžaduje se aktivní (pro méně zkušené příležitostně hektická / k sousedovi koukací) účast na jejich nadpoloviční většině. Na druhou stranu si vyzkoušíte zajímavé věci – ZFS, NFS, Solaris zóny, lehké skriptování, ničení disku náhodnými daty :-)

Přednášky pánů Muzikáře a Žďárka mají skvělou atmosféru, kdy se i posledních pět minut vykládá. Vzhledem k šířce témat bohužel není možné probrat je do větší hloubky, a tak předmět čeká na svého bratříčka (který, alespoň zatím, neexistuje). Jak jsou některá cvičení svižná, jiná jsou zase trochu poloprázdná. Snad se je časem podaří vyvážit (v rámci probrané látky).

Jsem velmi zvědavý, jak dopadne příští semestr srovnání s Administrací OS Windows (BI-ADW).

Grafové algoritmy a základy teorie složitosti (BI-GRA)

Teorie složitosti se nedočkáte. Zato se dočkáte Dijkstry, Bellmann-Forda, Borůvky, Jarníka-Prima a jiných prima pánů a jejich grafových algoritmů. V neposlední řadě samozřejmě i charismatického pana docenta Koláře (BI-ZDM).

Sedm mostů města Královce aneb planarita grafu
Sedm mostů města Královce aneb planarita grafu

Nějak mi během semestru chyběla motivace pro studium grafů. Je dobré to znát, ano, dává to smysl, ano, ale… – možná to chtělo implementační semestrálku jako v Efektivních algoritmech (BI-EFA). Možná to chtělo víc motivačních příkladů. Srovnej BI-PJP: také informatický předmět, ale s jasnou motivací a výživnou semestrálkou (a třetinovým počtem studentů a užším zaměřením, pravda).

Zkouška byla v tomto případě poněkud nešťastná (přepísknutý rozstřel). Dostal jsem E a byl jsem rád. Vlastně nebyl. Nejsem.

Programovací jazyky a překladače (BI-PJP)

Návazný kurz na Automaty a gramatiky (BI-AAG) osvětluje látku „za regulárními jazyky“. Výstupem je praktické zvládnutí atributovaných bezkontextových gramatik, LL(1) gramatik a jejich použití v překladači. Ačkoli to zní bláznivě, až tak bláznivé to není a předmět naopak trpí určitou ospalostí – opakuje se zde hodně věcí známých buď z BI-AAG nebo z Programování a algoritmizace (BI-PA1,2). V tomto byly přednášky docenta Janouška lehkým zklamáním.

Ospalost končí ve chvíli, kdy dojde na semestrálku, například na implementaci for-cyklu a pole do daného překladače. Tu přichází fáze psaní, kreslení diagramů, uvažování, programování, debugování a uvědomění, dokončení, odevzdání.

Pravidlo gramatiky pro for-cyklus
Pravidlo gramatiky pro for-cyklus

Zkouška spočívala v napsání atributované gramatiky pro derivaci regulárního výrazu. Programování na papír je pekelné, dvě stránky sémantických pravidel, ale zakončil jsem předmět známkou A; hlavně s vědomím, že zvládnu napsat jednoduchý parser.

Poznámka: zdrojový kód překladače Mila (céčkové C++) je vtipný. Krátkou, ale vydařenou legraci mi přivodily dva výčtové typy s položkami MINUS (lexikální symbol), respektive Minus (parametr pro instrukci virtuálního počítače). Pochopitelně MINUS != Minus.

Technologie XML (BI-XML)

Pan Miloslav Nič se prohánění počítačů věnuje méně než dříve, a tak už neučí Haskell jako na VŠCHT, ale špičaté závorky. Příjemný předmět za 4 kredity, nevyžadující velké úsilí na jednotku času. Vůči XML jsem byl na začátku jaksi skeptický (přeci jen, špičaté závorky při editaci škrábou), ale v průběhu jsem trochu změnil názor – ačkoliv XML není elegantní syntaxe pro konkrétní jazyk a je spíše cestou „nejmenšího odporu“, důraz nemusí být na slově „odpor“ (XSLT, XPath).

Semestrální práce sestává z napsání šablon pro transformaci dokumentu do HTML, EPUB, XML-FO (pro převod do PDF) a SMILu. Dále je třeba napsat validace v několika formátech (DTD, Schematron, Relax NG, …). Zkouška je formalitou.

čtvrtek 23. února 2012

V. semestr na FIT ČVUT – první dojmy

 

Bezpečnost (BI-BEZ)

Ačkoliv tomu název přímo nenapovídá, jedná se (také) o pokračování matematických kurzů minulých dvou ročníků. Důkaz Malé Fermatovy věty se však u zkoušky prý nepožaduje.
Předmět má velmi zajímavá cvičení s využitím výpočetního systému Mathematica, známého z předmětu BI-ČAO (Číslicové a analogové obvody) v prvním semestru. Každé cvičení má svůj "notebook", tj. soubor Mathematicy, který je členěný jako prezentace či pracovní listy s připraveným zadáním i pomocnými funkcemi. Pomocí kláves Shift+Enter lze jednotlivé výrazy v "notebooku" nechat vyhodnotit. Na prvním cvičení jsme luštili Caesarovu a afinní šifru s využitím grafu četností písmen.
Je to efektní a efektivní, ačkoli ještě efektivnější by to bylo, kdyby člověk v Mathematice něco (více) uměl. Takhle mě trochu mrzelo, že to není Python. Na EDUXu se píše, že na cvičeních budeme také pracovat v Javě; ale jen tak lehce, protože na škole se povinně učí C/C++ a ne Java.
À propos: nějaký interaktivní systém à la Mathematica se musí dostat do hodin středoškolské fyziky a matematiky. Ne nutně drahá a uhlazená Mathematica; i s Pythonem a pár knihovnami by se dalo hodně udělat.

Projekt, prezentace a rétorika (BI-PPR)

Humanitní předmět, ze kterého studenti utíkají jako krysy z potápějící se lodi, neboť vyžaduje zvolit si v dohledné době téma bakalářské práce. Neutíkám, vytrvám až do konce… :-)
Přednášky vede paní magistra Schmidtová ze stavební fakulty, od které jsem se dozvěděl, že v humanitních vědách se nedefinuje, ale vymezuje. Jaký přesně je v tom rozdíl, jsme se nedozvěděli (témeř kus noetiky…). Formu své prezentace, plné stínovaných obdélníků s pojmy a šipkami, zdůvodnila tak, že jsme jako studenti FIT pravděpodobně "vizuální typy", a že kdybychom byli typy jiné, studovali bychom patrně jinde.
Tak jsem si při té příležitosti uvědomil, že jsem si před dvěma lety zvolil dobře, když jsem se zapsal na FIT. Jak by dopadlo mé působení na FF UK, kdo ví…

Administrace OS Windows (BI-ADW)

Předmět vedený charismatickým panem Práglem, který se mihnul už v předmětu BI-UOS (Úvod do operačních systémů) v prvním semestru. Vypadá to, že půjde o trochu jiný (a asi lehčí) předmět, než bylo BI-ADU (Administrace OS Unix).

Architektury počítačových systémů (BI-APS)

Skryté paměti, superskalární architektura, predikce skoku, SIMD instrukce a takovéhle věci. Na cvičeních se bude programovat v nějakém assembleru.
Výraznou osobností předmětu je dr. Zahradnický, který vede cvičení. Mám dojem, že o předmětu jednak mnoho ví a jednak to umí a chce předat dál. Těším se, co se dozvím.

Daně pro neekonomy (BI-DAN)

Předmět s vtipným názvem vede vtipná doc. Slintáková z VŠE. Z povinných ekonomicko-manažerských předmětů jasná volba (Makroekonomické souvislosti domací a světové ekonomiky alias BI-MEK nepočítám, otevřely se teprve nedávno). Jsem rád, že naše fakulta s VŠE spolupracuje a naskytne-li se mi v rozvrhu příležitost, jistě toho ještě využiji.
Předmět mi trochu připomíná rok ekonomie v rámci společenských věd na gymnáziu (prostor pro diskusní jam session). Věřím ale, že se naučíme i prakticky ty daně počítat :-)

Efektivní implementace algoritmů (BI-EIA)

Skryté paměti, SIMD instrukce, kde jen jsem to viděl?
Stěžejní částí předmětu dr. Šimečka je semestrální práce, která spočívá v implementaci a měření naivní, optimalizované a paralelní varianty řešení dané úlohy (barvení grafu, obchodní cestující, počítání s maticemi, řazení…).

Efektivní programování 1 (BI-EP1)

Ti, kteří interakci s hodnotícím systémem ProgTest v prvním ročníku brali jako sport (spíše než jako boj o holý život), se hlásí do "výběrového" předmětu BI-EP1. Předmět vede sympatický idealista pan Kačer a místo ProgTestu zde vystupuje hodnotící systém používaný při školním kole mezinárodní programátorské soutěže ACM ICPC, kterému se C++ program musí posílat s bizarní koncovkou .C.
Předmět se ve dvoutýdenních cyklech zaměřuje na "bezchybný návrh" (1. týden bez nápovědy) a "bezchybnou implementaci" (případný 2. týden s nápovědou a bodovou ztrátou) programů. Tématicky doplňuje předmět Efektivní algoritmy (BI-EFA) ze 3. semestru - datové struktury, rekurze, dynamické programování, výpočetní geometrie. Pro polovinu těch lepších se otevírá návazný předmět BI-EP2.
Zapsal jsem si BI-EP1 proto, že jsem na něj slyšel velmi kladné ohlasy a jeho téma mě zajímá. Doufám, že ho nebudu muset "dropnout" kvůli časové náročnosti.
Získám zápočet z BI-EP1? Budu pozván do BI-EP2? A co na to Jan Tleskač? Dozvíte se v lednu…

sobota 21. ledna 2012

III. semestr na FIT ČVUT

 Ohlédnutí se za zimním semestrem 2011/2012 

Automaty a gramatiky (BI-AAG)

První ze série předmětů, které rozkrývají asi nejzáhadnější software v počítači – překladač – program, který překládá jiné programy. Radostná zpráva pro každého robinsona v podobě teorie, která staví most mezi „vysokým“ programováním a „nízkým“ strojovým kódem, kterému rozumí procesor. Zpráva o tom, že konstrukce překladače je v principu možná a že je čeho se chytit.

Náplní předmětu ale není návrh překladačů, ale zorientování se v teorii formálních jazyků a gramatik dle Chomského, podrobné zvládnutí nejjednodušší třídy jazyků (regulární jazyky) a úvod do formálních překladů a třídy bezkontextových jazyků. Dozvíte se mimo jiné, jak převádět regulární výrazy na konečné automaty, čehož si dosyta užijete na papíře. V rámci domácího úkolu si vyzkoušíte práci s programem flex pro lexikální analýzu.

Jakkoli se v semestru zdá, že tu jde hlavně o mechanické ovládnutí různých postupů na papíře, ústní část zkoušky s právem veta zkoumá pochopení teorie a velká část studentů se na ni podívá vícekrát. BI-AAG přednáší docenti Holub a Janoušek, z nichž Holub má pověst krutopřísného zkoušejícího a Janoušek zase toho hodného. Pan Janoušek také učí návazné předměty a na FITu patří mezi skvělé učitele.

Databázové systémy (BI-DBS)

Je-li pro vás relační databázový stroj sprosté slovo, v tomto kurzu zjistíte, jak se s ním běžně dorozumět. Je dobře, že na to jde trochu od lesa a nesnaží se co nejdříve o probírání jazyka SQL. Díky tomu je dříve než SQL a jeho stěžejní příkaz SELECT probrána relační algebra, která SELECT poměrně hezky (avšak ne úplně) popisuje řečí matematiky spíše než zdrojového kódu. Také databáze se navrhuje nejdříve konceptuálně a až poté se překlápí do relačního modelu. Dozvíte se, co je to databáze, relační databáze, jak ji navrhnout, jak posoudit kvalitu návrhu (normalizace, funkční závislosti), co je to transakční zpracování a proč se to v praxi někdy chová jinak (aktualizační anomálie), a dozvíte se základní příkazy SQL včetně vyčerpávajícího pojednání o příkazu SELECT.

Přednášky pana Valenty jsou zajímavé, s důrazem na praxi. Díky tomu se také dozvíte, co se v tomto předmětu nedozvídáte – že existují triggery, uložené procedury, že databázový stroj vytváří prováděcí plány atd. Pokročilé věci (které si někteří studenti asi slibovali od tohoto kurzu) se dělají až ve volitelném předmětu Jazyk SQL (BI-SQL).

Praktickou část předmětu tvoří vypracování vlastní databáze od návrhu po dotazy, což je pochopitelně velmi poučné. Pokud se student nerozhodne jinak, pracuje na školní Oracle databázi, což s sebou nese výhodu v podobě pohodlných grafických nástrojů pro návrh databáze (Data Modeler) a ladění dotazů (SQL Developer). Ačkoli má předmět jednou za 14 dní cvičení, nejsou popravdě moc platná, což je asi největší slabina BI-DBS. Naštěstí přednášky a prosemináře ke zvládnutí látky stačí.

Základy diskrétní matematiky (BI-ZDM)

Probírá se matematická indukce, relace, kombinatorika a řešení rekurentních rovnic (přesné a asymptotické). Na nějaké rekurentní rovnice sice došlo už v předmětu BI-ZMA, ale to šlo spíše jen o „strašení studentů“ prvního semestru tím, že v principu lze odvodit složitost algoritmu touto cestou. Zde již nejde jen o princip, ale i o praktickou aplikaci, se kterou počítá třeba předmět BI-EFA. Kombinatorika má zase blízko k různým hádankám a hlavolamům a relace se přímo objevují v předmětech BI-DBS a BI-AAG.

Zatímco Olšákova Lineární algebra (BI-LIN) pevně stojí a trvá na důkazech, diskrétní matematika doc. Koláře na důkazech předkládaných vět nelpí, ale zase lpí na schopnosti dokázat indukcí nějaký konkrétní vztah.

Cvičení s panem Frankem byla sice poznamenána tím, že pro něj šlo o třetí hodinu v řadě, ale dobře látku vysvětlil a doplnil i o širší kontext a různé zajímavosti; šlo spíše o pochopení, než o počítání velkého množství příkladů, což hodnotím kladně. Také zveřejnil seznam kombinatorických hádanek za bonusové body.

Efektivní algoritmy (BI-EFA)

Zde se seznámíte s efektivními datovými strukturami: kruhové pole, rozptylovací tabulky, vyhledávací stromy (B-tree, AVL, červeno-černé, trie), haldy (binomiální a „magické“ Fibonacciho haldy). Rozbory složitostí, rozpitvání řadících algoritmů vč. důkazu, proč je n log n dolní mez složitosti algoritmů řazení, které porovnávají a prohazují prvky. Na konci se dostane i na nějaké další věci jako je dynamické programování a QuadTree.

Pracuje se na papír a na tabuli, ale také jsou dvě programovací úlohy, letos na téma rozptylovací tabulky a B-stromy, které jsou nepovinné, lze za ně však dostat poměrně hodně bodů (při brzkém odevzdání bonus 50 %). Zkouška je příjemná v tom, že po získání minimální hranice z první části už lze skóre pouze vylepšit (srovnej právo veta v BI-AAG a „sázku“ −5 bodů pro absolvování další části zkoušky v BI-ZDM).

Přednášky pana děkana nepatří mezi zvláště zábavné, ale prezentace jsou až vyčerpávajícím zdrojem informací včetně animací a důkazů a pseudokódů. Během semestru došlo k poměrně kuriózní situaci při probírání Fibonacciho hald, jelikož jde zřejmě o poněkud exotickou datovou strukturu, ke které je nedostatek literatury, a tak nebylo zcela jasné, jak přesně má fungovat „magický“ příznak jejích uzlů, který ji udržuje pohromadě. Každopádně pseudokódy byly opraveny a teď už je snad vše, jak má být.

Objektové modelování (BI-OMO)

>>> class Pes:
...     def pozdrav(self):
...         print("Haf haf!")
>>> class Kočka:
...     def pozdrav(self):
...         print("Mňáááu!")
>>> alík = Pes()
>>> micka = Kočka()
>>> domácí_zvířata = [alík, micka]
>>> for zvíře in domácí_zvířata:
...     zvíře.pozdrav()
Haf haf!
Mňáááu!

Objektově orientovaným programátorům dnes patří svět. Předmět dr. Pergla však není kuchařka „1001 návrhový vzor“, ale naopak jde (anebo alespoň míří) do překvapivé hloubky objektově orientovaného paradigmatu.

Příklad výše demonstruje polymorfismus nezávislý na dědění. Programovací část předmětu se ale neodehrává v Pythonu, ale ve Smalltalku, pozoruhodném vývojovém prostředí a jazyku, který v sobě kombinuje λ-kalkulus, přirozený jazyk a přístup „vše je objekt“:

alík := Pes new.
micka := Kočka new.
domácí_zvířata := OrderedCollection with: alík with: micka.
domácí_zvířata do: [ :zvíře | zvíře pozdrav ].

Předmět se zabývá návrhem informačních systémů z pohledu OOP: rozbor slovního zadání, vytvoření konceptuálního modelu (entity a vztahy zanesené do UML diagramu tříd), až po prototyp ve Smalltalku. Na rozdíl od BI-ZSI je návrh systému pojat spíše způsobem „jak se v tom zorientovat, kdybych to měl dělat sám“, UML se neprobírá do šířky.

Přidanou hodnotu předmětu tvoří (kromě Smalltalku) poměrně dlouhá série přednášek na téma ontologického přístupu k tvorbě konceptuálního modelu. Dr. Pergl zde čerpá z práce dr. Giancarla Guizzardiho, který vytvořil nadstavbu UML (OntoUML) obohacenou právě o ontologii (a také teorii okolo, založenou na modální logice).

OntoUML například zdůvodňuje, proč by Student a Učitel neměl být podtyp Člověka: Člověk je objekt, který má identitu sám o sobě, zatímco Student a Učitel jsou role, kterým identitu propůjčuje nějaký Člověk (ani nejsou navzájem exkluzivní). Pokud bychom přesto chtěli použít dědičnost, bude to mít negativní následky: student, který je zároveň učitel, musí být v systému dvakrát, atd. OntoUML mělo letos svůj první běh, takže to místy trochu skřípalo, ale časem se to jistě vyladí.

Základy softwarového inženýrství (BI-ZSI)

Předmět pro studenty mimo obor Softwarové inženýrství, který je má utvrdit v tom, že si zvolili správně :-)

BI-ZSI se podobně jako BI-OMO zabývá tvorbou informačních systémů, ale z jiné strany. Během celého semestru se po skupinách 4–6 lidí vytváří IS: analýza, návrh a část implementace. Stěžejní je projektová dokumentace a funkční ukázka aplikace.

V praxi jde o demýtizaci klasické úlohy „Jeden kopáč kope výkop x hodin, jak dlouho budou kopat tři kopáči?“, kombinované s kreslením roztodivných UML diagramů v mamutím programu Enterprise Architect – fakt, že v BI-OMO se diagramy kreslí v UMLetu, docela vystihuje rozdíl mezi těmito předměty.

Jde o předmět otravný, nicméně vás poměrně podrobně obeznámí s notací UML a nastíní, jak se může dělat „software ve velkém“. A když zahodíte 80 % „byrokracie“, může to snad být k užitku i pro „software v malém“.

 

neděle 2. října 2011

III. semestr na FIT ČVUT – první dojmy

 Zimní semestr 2011/2012 po 2. týdnu

Automaty a gramatiky

Úvod do gramatik, zejména regulárních. Formální jazyk je množina slov, složených ze symbolů nějaké abecedy (např. „a“, „ab“, „abb“, …). Gramatika je popis takového jazyka (např. první znak slova je „a“; může následovat libovolný počet „b“). Automat je model počítače, který takový jazyk pozná – o přijatém slovu rozhodne, zda je z jazyka, nebo ne (viz článek o hádance v RPG).

Jelikož jde de facto o matematiku, hrozí zde nebezpečí, že podstata věci skončí zasuta pod nánosem formalismů. Pan docent Janoušek se naštěstí velmi snaží, aby k tomu nedošlo, a poněkud hieroglyfické materiály svého kolegy doc. Holuba podpírá intuitivním uchopením problému. (Raději se nechci domýšlet, jak by předmět dopadl, kdyby byl plně v režii pana Holuba, ač je zřejmě českou kapacitou v oboru.)

Holubova formalizující prezentace k předmětu BI-AAG
Holubova formalizující prezentace k předmětu BI-AAG

Databázové systémy

Pan dr. Valenta je praktik a přednášky mají spád, ač návrh databáze nezní jako příliš vzrušující činnost. Semestrální prací je, jak asi tušíte, návrh databáze a dotazů na ni. Obzvláště vhodné, pokud se o návrh takového systému pokoušíte nezávisle na škole… :-)

Valentova věcná prezentace k předmětu BI-DBS
Valentova věcná prezentace k předmětu BI-DBS

Základy diskrétní matematiky

Diskrétní je opakem spojitého. Tento předmět se zabývá divnými věcmi, jako jsou rekurentní rovnice a matematická indukce. Divnými věcmi, které však úzce souvisejí s algoritmy, zejména těmi zapsanými ve funkcionálním programovacím jazyce, kde si s tou rekurzí musí člověk vystačit, protože mu nic jiného nezbývá.

Pro účely funkcionálního programování zvolil pan docent Kolář software Mathematica. Kdyby zvolil Haskell, zřejmě by to bylo čitelnější. Každopádně je to zajímavá exkurze do exotických krajin (asi jako když se ráno probudíte na Marsu).

Kolářova didaktická prezentace k předmětu BI-ZDM
Kolářova didaktická prezentace k předmětu BI-ZDM

Efektivní algoritmy

Předmět pana děkana, prof. Tvrdíka. Zabývá se rozptylovacími tabulkami, řadícími algoritmy, stromy, složitostí. Předmět není primárně programovací.

Tvrdíkova inženýrská prezentace k předmětu BI-EFA
Tvrdíkova inženýrská prezentace k předmětu BI-EFA

Objektové modelování

„Objektově orientovaný programovací jazyk“ je něco jako „děravé vědro orientované na bezeztrátový přenos vody“. Skuteční programátoři programují ve Smalltalku! Skutečném objektovém jazyce!

Díkybohu za jazyky jako je Python, kde použiji objektový návrh, když chci, nebo funkcionální magii, když chci. Já totiž někdy nechci. Ale je fakt, že když člověk přistoupí na onu hru, že je se Smalltalkem docela legrace :-)

Perglova snivá prezentace k předmětu BI-OMO
Perglova snivá prezentace k předmětu BI-OMO

Základy softwarového inženýrství

„Programátor“ je něco jako „pomocný dělník na stavbě“. Skutečný mozek je softwarový architekt! Programátor je jeho podvozek!

Semestrální prací je nějaký informační systém, převážně v rovině koncepční. Jedná se o týmový projekt :-o

Troníčkova pragmatická prezentace k předmětu BI-ZSI
Troníčkova pragmatická prezentace k předmětu BI-ZSI

 

sobota 10. září 2011

Prvním rokem na FIT ČVUT

Fakulta informačních technologií očima (skoro) druháka

Mezi studenty vysokých škol je jistým folklórem, rozebírat průběh uplynulého semestru na soukromém blogu ([1], [2]). V případě fakulty informatiky by jeden možná čekal zvýšený výskyt takovýchto zápisků – jenže krátká historie samostatné Fakulty informačních technologií Českého vyskokého učení technického v Praze tento předpoklad dvakrát nenaplňuje ([3], [4], [5], [6], o jiných nevím). Na zdejším blogu jsem chtěl o prvních dvou semestrech poreferovat již dříve, ale koncepty článků mě neuspokojovaly a s plynoucím časem klesal přetlak okamžitých dojmů a s ním i motivace pro klasicky strukturovaný článek (po předmětech). Budiž tedy „Prvním rokem na FIT ČVUT“ pohledem z nepatrně větší výšky.

Tři kila snahy

Vstupním předpokladem pro studium na FIT nejsou žádné IT znalosti ani dovednosti v programování. Stačí snaha a chytrá hlava, zbytek Vás naučíme! (11 důvodů proč studovat na FIT, důvod č. 2)

Ač ze tří set let slávy ČVUT, které „slibuje“ důvod č. 6, toho na FITu příliš neuvidíte, důvod č. 2 nelže. První semestry sice slouží k „přebrání“ poměrně benevolentně přijatých studentů, nikoli však na základě toho, co už vědí, ale toho, kolik úsilí jsou ochotni vynaložit na osvojení si něčeho nového. Kdyby mi někdo řekl, v čem bude spočívat (povinná) semestrální práce z programování v 1. semestru v době zápisu, zřejmě bych si myslel, že jsem se přihlásil na špatnou školu. (Znal jsem základy programování na úrovni „lepič skriptů“.)

Hojně kritizovanou věcí na FIT je automatický systém hodnocení domácích prací, ProgTest. Během semestru dostanete cca 7 úkolů, prográmků v C/C++, které je ne sice nezbytné, ale nanejvýš vhodné do 14 dnů odevzdat a inkasovat za ně body. Kód však nelze jen tak naplácat, jak je libo, neboť ProgTest je velmi důkladný, přísný a tajnůstkářský testovací systém. Počet pokusů je omezen (10–20).

 
Computer Science v praxi

Na jednu stranu sport, kdo bude mít řešení mezi prvními; na druhou stranu neustálé hledání chyb a vršící se úkoly. Kdo není v programování zběhlý, stráví nad ProgTestem víkendová odpoledne, večery a noci. V prvním semestru (ANSI C) jsem prožíval spíše polohu „sport“, ve druhém (C++) spíše polohu „nekončící debugování“. Ač byly úlohy zajímavé, neměl jsem už sílu a čas to odlaďovat a poslal jsem některé předem k vodě (toto bylo asi částečně předvídáno, a tak se ve druhém semestru často objevovaly úlohy rozdělené na dvě části – snadnou a těžší).

Možnost volby

Vysoká škola se tedy chová jako kolotoč, který testuje, do jaké míry na něm kdo chce jet. Zatímco nižší stupně vzdělávání se chovají k příjemci značně parentalisticky, vysoká škola svěřuje studentovi zodpovědnost. Průběžné úkoly na ProgTestu jsou nepovinné. Docházka na přednášky je nepovinná. Docházka na většinu cvičení také. Na zápočet potřebuješ tolik a tolik bodů a zařiď si to, jak chceš. (Ne každý předmět dává studentovi až takovou volnost; jde mi o princip.)

FIT ČVUT nyní sídlí v nové budově, spolu s architekty
FIT ČVUT nyní sídlí v nové budově, spolu s architekty

Jeden příklad: lineární algebru ve 2. semestru přednášeli dva lidé z Katedry matematiky FELu, paní Kalousová a pan Olšák. O panu Olšákovi jsem už něco málo tušil a chtěl jsem chodit k němu, ale v rozvrhu jsem padl do skupiny paní Kalousové. Po první přednášce jsem zjistil, že takto vskutku ne, a nadále chodil k Olšákovi, ač měl přednášku od 7.30 ráno. Měl jsem štěstí – díky času nebyla přednáška příliš populární, a tak byl v místnosti klid, výklad byl mnohem srozumitelnější, ale zároveň jsem chodil na cvičení podle doktorky Kalousové, která sice měla látku trochu zpřeházenou, ale zase zadávala mnohem jednodušší domácí úkoly. Díky tomu všemu jsem nakonec s algebrou neměl problémy, ač jde na FELu o jeden z nejobávanějších předmětů.

Představa, že si uděláte rozvrh na jeden dva dny v týdnu, je sice zajímavá, ale dle mého sebevražedná. Výhoda kolotoče je v tom, že se roztáčí postupně – proč si dělat z prezenčního studia kombinované (to je o sobotách), když nemusím. Do zimního semestru jdu s „krásně“ roztahaným rozvrhem, kde jsem se vyhnul blokům více jak dvou předmětů vzápětí (1 předmět = čistých 90 minut). I když jsem se dávno vzpamatoval z prvotního časového šoku, stejně si myslím, že ta třetí přednáška/cvičení už je nanic.

Úvod do algebry, zejména lineární od dr. Olšáka – atribut 2. semestru na FIT
Úvod do algebry, zejména lineární od dr. Olšáka – atribut 2. semestru na FIT

Co se dozvíte?

  • Budete tušit, co napsat do UNIXové příkazové řádky (shellu), když na vás vyskočí. Možná se seznámíte i s nejzubatějším textovým editorem na světě (vi).
  • Zjistíte, jak spočítat sinus s přesností na 10 desetinných míst a jak se počítá s maticemi.
  • Navrhnete konečný automat a naprogramujete stopky v AVR assembleru.
  • Objevíte netušené způsoby, jak zhavarovat počítačový program a celý systém. Proniknete do ANSI C / C++ a možná zjistíte, co znamená void* (*)(void*).
  • Bez znalosti diferenciálních rovnic budete řešit diferenciální rovnice ve Wolfram Mathematice (malá Mathematika je i online). Školní server půjde pod vahou numerických výpočtů do kolen, ale možná na konci uvidíte pěkný graf.
  • Uslyšíte Gödelovy věty (koho logika baví, jistě uvítal Bílův seriál o GEB).
  • Bude vám řečeno, že existuje něco jako LaTeX. Pan Olšák to uvede na pravou míru.

neděle 5. června 2011

Deníček tankisty

Jako malý jsem tankistou být nechtěl. Zato jsem často hrával "Tančíky", respektive klasickou dosovou hru s poměrně nevyslovitelným názvem Scorched Earth. Jistě ji znáte: stojí proti sobě 2 až n tanků, ovládaných počítačem či člověkem, a snaží se rozmanitou municí sprovodit ze světa ty ostatní. Ač spartánský grafikou, není zdejší herní systém tak docela přímočarý a vyžaduje soustavný nákup nejen zbraní, ale i rozmanité pasivní obrany, padáků, baterií či benzínu. Jde o zlomek historie, která se už nebude opakovat, a proto si zachovává své kouzlo i dnes, když musíme výkon procesorů doslova škrtit, abychom z něj vůbec něco měli.

Při volbě tématu svého prvního většího C++ programu jsem se rozhodl pro vlastní variaci na klasické téma "Tančíků". Jelikož se mi na blogísku nic zajímavého neděje, budu příští týden publikovat Deníček tankisty - jak bude pokračovat vývoj. Přespříští týden snad úspěšně získám známku a uvolním hratelnou verzi širému světu.

Původně jsem si myslel, jak budu poctivě celý týden programovat a blogískovat. Nakonec jsem měl jiné starosti a z vývoje se stal klasický víkendový sprint okořeněný notnou dávkou beznaděje, kleteb i výskání nad něčím, co zdravá většina populace považuje - nejsouc daleko od pravdy -, za magické formule.

O pikantnosti "z natáčení" se s vámi, kdo magickým jazykem nehovoříte ani trochu jako já, příliš podělit nemohu. Zdály by se vám zábavné asi jako nejkratší matematický vtip: "Nechť epsilon je záporné." - Kameňák, že? Vlastně docela ano :-)
Nejlépe uděláte, když si hotovou hru zahrajete: zkompilovaná verze pro Windows. Koneckonců mezi nejzajímavější okamžiky vývoje patřilo právě užaslé testování programu, který se nejen přeložil, slinkoval, spusil a hned nespadl, ale choval se víceméně tak, jak by měl!

Úvod do translatismu X. aneb Obrácená strana medaile

Hlídejte si svá holoubátka! Po více než třech letech dospěl filologicko-psychologický seriál o nové vědní disciplíně translatismu ke s...