1

Téma: Architektura počítačů

Rozhodl jsem se k předmětu založit téma.

Jak pro získání další zpětné vazby nad rámec ankety, třeba i názorů a nápadů absolventů předmětu k tomu, co by jim ve studiu pomohlo. Případně i pro zpětnou vazbu a názory s delším časovým odstupem. Protože především mě zajímá jak předmět upravovat tak, aby předkládal, co nejlepší základy k dalšímu studiu, řešení vlastních projektů a i působení v praxi.

V obsahu mě zajímá především kam směřovat, aby byl předmět přínosný těm, co mají buď o obor zájem nebo patří mezi lepší studenty se zájmem sice v jiné oblasti, ale mají k předmětu relevantní připomínky.

Co se týče formy výuky/materiálů předmětu, tak mě zajímají i (možná především) názory studentů, kteří se během semestru i na zkoušku poctivě připravovali a přesto měli s jeho absolvováním problémy. Budu rád, pokud se podaří připravit materiály, úlohy, upravit stránky tak, aby studentům sloužily lépe. Odmítám, aby se v materiálech publikovala levná řešení a návody v těch místech, kde chceme, aby studenti nad daným problémem přemýšleli. Ale vše ostatní, třeba fórum s otázkami a odpovědmi, nabídka vzájemných konzultací mezi studenty, příklady na práci s HW mimo výuku atd. budu podporovat.

Jsem připravený i na argumenty podloženou kritiku v libovolném rozsahu a třeba přenechat výuku jiným, povolanějším, ale byl bych rád, aby si kritizující student/studentka nejdříve přečetl mojí odpověď v letošní anketě, kde se snažím vysvětli svojí motivaci vedoucí k současné podobě předmětu. Ta je pak kompromisem i mezi přáními, schopnostmi a časovými možnostmi týmu, který předmět zajišťoval.

Zde je moje odpověď do letošní ankety

Na začátek bych chtěl poděkovat všem studentům, kteří se ať již úspěšným, nebo neúspěšným výsledkem do předmětu zapojili a snažili se nabízené znalosti zvládnout a spolupracovali s námi, vyučujícími.

== Obecnější komentář ==

Moje zkušenost a představa studia (již od opuštění gymnázia) a výuky na vysoké škole vychází z modelu, že na školu přichází studenti, kteří si chtějí rozšířit/získat znalosti v určitém, ideálně širším, směru. Na základě zkušeností, odhadu jejich možností a potřeb základů pro zvládnutí dalších předmětů je pak zvolený určitý okruh znalostí, který pokryje do akreditace zařazený předmět. Stejně tak je zvolená požadovaná úroveň minimálních znalostí a naopak, co může a má předmět poskytnout k rozvoji těch, kteří patří k těm nejlepším a do budoucna mohou obor rozvíjet dále za omezené hranice znalostí a schopností jejich současných učitelů.

Přitom v žádném případě nelze kýženého výsledku dosáhnout přístupem, jsem zákazník, nakupuji znalosti, a je na vás, vyučujících, abych je měl.

Přemýšlení v daném oboru je trénink a přesto, že rozhodčím pro daný předmět jsme my,  jeho vyučující, tak se více považuji za partnera studentů, který investuje spolu s nimi úsilí do získání vědomostí, překonání nastavené laťky a osobního rozvoje tak daleko, jak to danému studentovi jeho schopnosti umožňují. Jsem přesvědčený, že ta část studentů, která na tento model přistoupila, byla s předmětem spokojená. Do kurzu se nám přihlásilo i několik studentů z magisterského studia, kteří předmět APO neabsolvovali a cítili potřebu znalosti získat a to i přes to, že již řešili jiné, náročné projekty, a věděli, že vstupují do náročného kurzu, kterému budou muset čas věnovat.

Ano, není ideální, že rozhodčím kurzu jsou přímo jeho vyučující, jak vím od kamarádky, která vyučuje jazyky, tak v jejich smluvně placené výuce je zvykem, že úspěšnost firmami nasmlouvaného studia prověřují jiní lektoři, někdy i školící firmy, než prováděli výuku. Přitom u nás je požadovaná úroveň k absolvování jednotlivých testů i celku přibližně 50% správných odpovědí/znalostí. Byl jsme překvapený, že při studiu čínštiny neznalost třeba 2% z tisíců znaků znamená neuspěl. Ano náš obor je náročnější na logické myšlení atd. ale i tak je 50% velmi nízká hranice.

Na druhou stranu jednotlivou zkoušku na vysoké škole stejně považuji spíš jen za měřený trénink, reálným měřítkem je úspěšnost v profesním životě, v menším měřítku pak připravenost a znalost základů pro další kurzy, zvládnutí samostatného vývoje, výzkumu v rámci řešení absolventský prací, případně poměření sil v studentských soutěžích a testech. A mezinárodní konkurence je na vysoké úrovni, když se program OI zaváděl, studovali jsme radou předložené příklady z Computer Science Test Practice Book (GRE). A byli jsme překvapeni náročností otázek a hloubkou požadovaných znalostí pro oblast HW, které musí mít i studenti především programátorsky zaměřených oborů. Pokud vím, tak rada OI i našim studentům testy po absolvování OI bakaláře před lety zaplatila, ale ukázalo se, že v konkurenci obstáli hůře, než jaký byl předpoklad. Za roky, co kurz APO s kolegy vedeme a rozvíjíme, rozšiřujeme materiály atd. se úroveň požadavků mírně zvedá, ale stále si myslím, že zdaleka nedosahujme úrovně, která je nutná k efektivnímu využití současného HW a ani perfektnímu zvládnutí GRE testů.

Dnes děti na základní škole odmítnou rodiči nabízený čtyřjádrový mobilní telefon, a raději rozbijí prasátko, aby si mohli doplatit cenu a koupit osmijádrový (reálná zkušenost kolegy). Přitom největší nezájem o předmět vnímám právě u studentů, kteří se vidí jako budoucí významní programátoři mobilních a webových aplikací a cloudových technologií. Neumím si představit, jak chtějí tito, často na svoje schopnosti až příliš spoléhající, programátoři takovéto aplikace navrhovat.

Předmět APO nabízí opravdu jen ty základní nezbytné znalosti nutné k pochopení běhu a ovlivnění výkonu aplikací na jednom procesoru. Z paralelismu se zabýváme jen překrývajícím se/zřetězeným zpracováním na jednom procesoru a v otázkách se omezujeme v podstatě jen na jeden pětiřezový model určený pro jednu architekturu. O problémech souvisejících s využitím více procesorů v rámci jedné aplikace, případně pro běh operačního systému se zmiňuji jen přehledově v druhé části přednášek a to spíš proto, aby studenti se zájmem věděli, kde hledat, případně mohli navázat na námi předané znalosti v rámci některého dalšího předmětu. Přitom ignorování fyzikálních základů, pravidel dostupnosti dat z různých jader, omezenosti vyrovnávacích pamětí atd. obvykle vede k zásadní degradaci výkonu při použití více procesorových jader (10x, i 100x). Je celkem pravděpodobné, že špatně implementované programy a nevhodně vybrané algoritmy (to je již spíše mimo náš předmět) mají za následek zbytečnou potřebu 50% ale možná i 80% celkové energetické spotřeby výpočetní techniky na světě. Takže kromě toho, že si i samotní kritici potřeby námi nabízených znalostí určitě ztěžují i své vlastní telefony za malou výdrž a pomalou práci, tak jsou špatní programátoři i reálnou světovou ekologickou hrozbou. Podle některých odhadů již spotřeba výpočetní a komunikační techniky přesáhla 10% celosvětové spotřeby elektrické energie a číslo se bude zvyšovat. Například v autonomním vozidle zbytečně plně zatížený systém Nvidia Drive PX2 spotřebuje 250W. To je podle mého velmi hrubého odhadu na tuto jedinou jednotku více než 1% až 2% výkonu nutného pro udržování rychlosti 100 km/h.

Přitom techniky pro dobrou škálovatelnost algoritmů vyžadují dobré znalosti paměťového modelu procesorových architektur při návrhu knihoven a běhových prostředí a pak znalost jak přenositelně, efektivně a správně tyto základy používat. To druhé je důležité pro každého programátora, to první jen pro ty nejlepší, kteří mají na to se zúčastnit vývoje takových prostředí a operačních systémů. Předpokládám ale, že ČTUT nechce být jen generátorem levných kodérů aplikací na míru, ale chce aby její nejlepší studenti zvládli vyvíjet nové technologie, programovací jazyky, operační systémy a rozvíjet obor.

Letošní běh byl velmi náročný a k jeho přípravě a vedení jsme přistoupili s mnoha omezeními. Počet vyučujících se nám nedařilo adekvátně navýšit, přesto, že jsme díky přesunu předmětu mezi ročníky počítali s dvojnásobným počtem studentů. Nepomohlo oslovení kolegů z jiných kateder a i na naší jsem nesměl žádat o podporu další své kolegy, doktorandy, protože by jinak nestíhali své povinnosti.

Zde bych chtěl velmi poděkovat Ing. Martinu Samkovi za pomoc s výukou nad rámec svých povinností v oddělení IT katedry a i celého FEL. Stejně tak si za podporu zaslouží poděkování vedoucí oddělení Ing. Petr Petr Haba za uvolnění kolegů a pomoc s realizací nákupu HW. Stejně tak podpora síťové infrastruktury, serverů a stanic v laboratoři byla bezchybná (APO bylo prvně vyučované v prostorách K13135). Přitom bylo potřeba zvládnout nově i síťové zajištění procesorových kitů. Za běhové prostředí patří dík Alešovi Kapicovi a za přípravu a údržbu počítačů Ing. Františku Vaňkovi. Jediný výpadek, co jsem zaznamenal, byla porucha integrované síťové karty na jenom počítači a tu kolegové vyměnili v hodinách za diskrétní. Okamžitě podle potřeby přidali switche a kabeláž, aby mohli studenti pracovat z více vlastních notebooků atd. Opravdu to bylo nejlepší technické zajištění předmětu, které jsem zažil a stálo mě (když nepočítám přípravu systému pro kyty) minimum času.

Rád bych poděkoval i Ing. Jiřímu Hubáčkovi. Byl jediný doktorand, který byl na výuku v předmětu poskytnutý, a dostal nelehký úkol. Na rozdíl od jiných možných kandidátů předmět nestudovat a nikdy dříve neučil. Díky svým znalostem GNU/Linuxu byl zvolený jako první cvičící rozbíhající každý týden laboratoř. Sám jsem si nemohl blok první cvičení vybrat, protože se kryl s jednou z přednášek. Kolega dostal nelehký úkol vyzkoušet, co bylo vždy na další týden připravené. Přitom jsme dostali zadání, že máme učit s novým HW, ale povolení k investici a rozhodnutí o návrhu desek kytů periferií padlo v půlce prosince s tvrdým požadavkem, že kyty se dostanou studentům na prvním cvičení. I přes kompletně strávené vánoce mnou a kolegou (Ing. Petr Porazil) z firmy (pokud bych se vývoj řešil na škole běžnou cestou, trval by roky) nad přípravou desek a mechaniky, jsme dokončovali montáž dny před začátkem semestru a příprava zavaděčů, úprav jádra Linuxu atd. se stihla jen těsně před prvními cvičeními. Materiály pak vznikaly na pochodu a Ing. Hubáček tak měl situaci obtížnou a byl tím, kdo hlásil problémy (především chybějící/nepřesné informace v materiálech) a musel na cvičeních improvizovat.

Velký dík patří i kolegovi - Ing. Michalovi Štepanovskému Ph.D. za rozšíření materiálů a zvládnutí instalace a většiny programování úloh do testovacího systému. Jsem přesvědčený, že jeho výklad a materiály k stavbě jednocyklového a poté zřetězeného procesoru předčí výklad a diagramy z celosvětově v podobných kurzech uznávané literatury od dvojice profesorů/tvůrců koncepce RISC Hennessy-Patterson. Neumím si moc představit, jak ještě názorněji látku podat. Prezentace je podle mě sebevysvětlující a pokud student potřebuje výklad, najde ho ve zmiňované učebnici a může si většinu otestovat na simulátoru.

Simulátor Mips IT je sice velmi dobře pro výuku navržený a názorný, ale aplikace se již stává na současných operačních systémech nepoužitelnou. Kritika sice letos tolik nezazněla, ale problému jsme si vědomi a po dvou spíše neúspěšných pokusech vypracovat použitelnější náhradu se studenty, vedu nyní další absolventský projekt, který snad k vzniku modernizované verze povede. Je zde prostor i pro další studenty se do projektu zapojit.

Obecně jsem za sebe šťastný, že se podařilo předmět i přes perzonální a časová omezení zvládnout. Bylo to na hranici (možná i za) (minimálně) mých časových, fyzických a psychických schopností a věnoval jsem se předmětu po celý semestr výrazně víc jak na jeden plný úvazek (přitom můj úvazek na ČVUT činní 0.5). Přes čas plně pohlcený přípravou, přednáškami a cvičeními jsem se snažil věnovat maximum těm, kteří měli o vedení a spolupráci zájem. Myslím, že ani ty, kteří jasně dávali najevo svůj negativní názor na naší snahu, jsem žádným způsobem o čas, který potřebovali/měli na něj nárok, nepřipravil. Na druhou stranu se nikdo, kdo vystupuje vysloveně nepřátelsky a snaží soustřední přednášejícího narušit, nemůže divit, že se nesetkává s velkým nadšením a pokud to ostatní studenti tolerují nebo považují za dobrý žert, tak si také trochu strohosti na dané a následující přednášce plně zaslouží. Asi by se jim také nelíbilo, pokud by během zkoušky byl puštěný film Moucha nebo podobný horor.

Obecně se pak rád s kýmkoliv, kdo má zájem o zlepšení předmětu, materiálů rozšíření podpory atd., rád sejdu, povedu diskuzi. Myslím, že i během semestru jsme jsme byli v rámci našich omezených časových možností nápomocní. Pokud někdo z absolventů kurzu má zájem pomoc dalším ročníkům i jako konzultant nebo možná i mírně placený další cvičící, pomocník kolegů, tak si rád o možnostech a nápadech popovídám.

== Ke konkrétním připomínkám ==

Omlouvám se studentům jednoho z termínů za ostudné zpoždění začátku zkoušky o asi 40 minut. Generátor i tohoto testu byl připravovaný asi s týdenním předstihem. Ale během posledního kola testování (pro jistotu) jsem v noci nalezl zásadní chybu pro určitou kombinaci generovaných vstupů/zadání a započítávaných správných odpovědí (testů jsem vždy několik před každým termínem z hlavy počítal a kontroloval). Kolega Štepanovský přes noc test program/opravoval, sám jsem pak přišel na katedru výsledek tisknout s více jak hodinovým předstihem před začátkem zkoušky. Bohužel jsme neměli ještě dobře zvládnuté, jakým způsobem a kterou variantu PDF tisknout, a všechny tiskárny na katedře složené PDF zpracovávaly neuvěřitelně dlouho. Nakonec s rychlostí dvou stránek za minutu se tisk povedl z Windows u paní sekretářky. Plně ale beru tuto ostudu na mou zodpovědnost. Další termíny jsem pak tiskl vždy po půlnoci, kdy již byl známý počet studentů, na firemní tiskárně doma. Ve škole každý den nejsem a zároveň jsme chtěli dát možnost studentům využívat kapacitu termínů i se odhlašovat do poslední chvíle, takže jsem nenechal nastavený standardní limit na přihlášení/odhlášení dva dny před termínem a obsazenost byla známá až o půlnoci a nechtěli jsme třeba 40 nepoužitých testů vyhazovat.

Kritika malého počtu kytů je oprávněná. Rozhodnutí, že se vyžaduje použití nakupovaných desek MicroZed nebylo z mé hlavy. Nákup jsem FPGA výbavy jsem dostal za úkol před třemi lety. Objednal jsem jich 15 především pro využití v diplomových pracech, projektech pro firmy (kde třeba nyní vývoj na této platformě konzultuji pro VW) a pokročilejší předměty, jako je PSR. Nákup se protáhl na několik let. Pro základní kurz jsem počítal spíš s nějakým menším kytem. Na druhou stranu výběr tohoto HW umožnil mnohem pokročilejší a zajímavější semestrální projekty a studenti se zájmem to opravdu ocenili a oplatili nám to svojí invenci při realizaci individuálních zadání. Nákup druhé vlny FPGA kitů začal v před rokem a půl, že šlo o dokoupení desek MicroZed a výkonných systémů Zynq Ultra Scale ZCU102. Výběrová řízení se povedlo zvládnout během podzimu, ale množtví organizačních zdržení, zcela mimo naší kontrolu, vedlo k tomu, že HW dorazil až 14 dní před koncem semestru. Rozšiřující karty jsme měli od února vyrobené v dostatečném počtu kusů. Jestli do dalšího běhu přejít na levnější a slabší HW, který lze pořídit ve více kusech, je otázkou. Současný HW dává velmi zajímavé možnosti, levný HW ve větším počtu kusů by byl spíše bez displeje. Stejně tak robusní provedení, otočné voliče a další vlastnosti jsou zajímavé jak pro základní kurz, kdy se jedná o zvládnutí binární soustavy, přečtení/zápis do digitální paralelní periferie (LED, voliče) a přístup k sekvenční (jednoduchý LCD display). Přitom právě to, že se jedná o systém, který zvládá běh kompletního GNU/Linux systému umožňuje snadné sdílení kytu mezi více studenty. Vlastní testovací běh programu, semestrální úlohy, je proti době práce s editorem a kompilátorem, nepatrný zlomek vývojového času. Přitom návod a podporu pro snadné spouštění aplikací přes síť studenti dostali.

Ke kritice pozdního zadání semestrálních úloh bych konstatoval následující. S kitem a programováním pro něj byli studenti seznámení na prvním cvičení. 12 kytů jim pak bylo k dispozici po celý semestr. Již na prvním cvičení byl představený motivační příklad na pochopení cykličnosti binární/modulo aritmetiky sestávající se z rozšíření hodnoty čtené z otočného voliče. Přesto, že bylo studentům sděleno, že si ho mají na další cvičení připravit a později, že bude nutnou částí řešení semestrální úlohy, tak se o nápadech na řešení bylo během semestru ochotné bavit minimum studentů. Materiál k prostudování, ze kterého šlo řešení odvodit, studenti dostali také na prvním cvičení. Přes veškerou tuto naší snahu, kreslení na tabuli atd., jsem většině studentů nakonec sám do prací vepisoval správné, nebo zjednodušoval jejich složité řešení až při finálním odevzdávání úlohy. To, že jsme správně řešení přímo nedopřednášeli, bylo záměrné, chtěli jsme, aby studenti dokázali programátorsky myslet. Ty, co to nechtějí, nezvládají, nezachrání žádný vysokoúrovňový jazyk, framework. Myslím, že většina, která měla zájem, tak nakonec postup ocenila a zapamatují si ho takto lépe.

Zadání naší hlavní semestrální práce, považované za povinnou/výrazně doporučenou pro studenty OI, bylo vyvěšené 10.4. Postupně pak bylo doplňované o návodná řešení a pomocné soubory. Ve stejném týdnu byl se studenty na cvičení probíraný výstup grafiky na LCD display, a další týden výstup textu. Kdo tedy zvládl zpracování otočných voličů zadané na prvním cvičení a výstup grafiky z dubna, tak již mohl zbytek řešit na jakémkoliv POSIXovém systému bez nutnosti používat HW (kromě finální kompletace). Přitom úloha procvičovala mapování fyzické paměti (k pochopení bylo potřeba prostudovat stránkovací tabulky), bitové operace nad reprezentací čísel a převody barev RGB888 na RGB565, serializaci obrazu do sekvenční LCD periferie, modulo aritmetiku pro voliče. Tématicky již mírně mimo vlastní předmět byla komunikace. Ale dnes již téměř žádná aplikace bez komunikace navrhnout nelze, studenti jsou přímo lákaní na obor internet věcí, zvolený protokol byl pak navržený s maximální snahou o jednoduchost, vybrané bylo UDP bez nutnosti navazování spojení a byly předložené příklady. Přitom studenti všech oborů mají v programech paralelně nebo dříve předměty zaměřené na komunikaci zařazené (stejně tak na programování v jazyce C). Zároveň pro vlastní splnění zadání vysoko nad požadované na minimum bodů nebyla implementace komunikace nutná. Naopak pro pokročilejší studenty se jednalo o motivaci dozvědět se z oboru něco málo více.

Pro obor KyR jsme slíbili další, jednodušší zadání s tím, že část algoritmu budou moci sdílet s předmětem PRG a tím ušetří práci odpovídající o kredit nižšímu hodnocení předmětu. Zde jsme čekali s finálním zadáním na zveřejněné zadání ve druhém předmětu. Ale opět, kdo spolupracoval, si mohl/měl připravit čtení voličů a výstup textu a nic mu nebránilo začít pracovat již v dubnu. Nakonec situaci potvrzují i komentáře některých studentů.

Naopak kritika, že jsme byli vstřícní a začali za pozdní odevzdání strhávat body o týden později, než byl předpokládaný termín odevzdání práce, pak zní úsměvně. Pokud bychom nekompromisně trvali na dodržení termínu, tak jsme mohli k zápočtu pustit pouze 1/4 studentů. Zajímalo by mě, jak by pak dotyčný kritik takové jednání hájil a co by svým kolegům řekl.

K neprobíraným tématům nebo spíše postupům a návodům k příkladům ke zkouškám. Jsem přesvědčený, že odborník nemůže být jen interpreter nazpaměť naučených postupů. Pokud tomu tak má být, tak nemám důvod dále na FEL působit, pokud ne, tak by bylo dobré, aby se kritik nad tématy otázek zamyslel. Snažíme se o to, aby nebylo možné zkoušku absolvovat po naučení se postupů nazpaměť. Při rozsahu látky kterou považujeme za opravdu důležitou, je již celkem náročné vymýšlet otázky tak, aby se přímo neopakovaly. To že se neopakují hodnoty jsme tento rok díky značné investici do programování testů zaručili téměř dokonale. Látkou se naopak výpočetní části zkoušky omezovaly opravdu jen na úvahy o vyrovnávací paměti, stránkování, jeho urychlení, zpracování instrukcí zřetězeným nebo jednocyklovým procesorem, predikce skoků a binární reprezentaci čísel, někdy i v zjednodušené pohyblivé řádové čárce. Vše byla témata, kterým se věnovala první část přednášek, velká část cvičení a domácích úloh. Co se týče stránkovacích tabulek, tak na výpisy různých strojových kódů a obsahu paměti, diskuzím o endianingu atd., jsme se věnovali téměř v každém cvičení. I na zkoušce jsme těm, co měli s čtením zcela běžného hexadecimálního výpisu paměti potíže, pomohli. Vlastní stránkovací tabulky byly probrané v rámci první půlky přednášek (zaměřených na základy) a pro konkrétní příklady procesorů byly pak znova prezentované v druhé půlce. Je pravda, že tento běh jsme se zaměřili a dali v přednáškách výrazně více prostoru té obecnější části a některá ze závěrečných témat jsme již nestihli. Na přednáškách v Dejvicích vypadlo o něco málo více. Ale stránkování bylo probrané, víceúrovňové stránkovací tabulky jsou v různém podání grafiky vysvětlené nejméně ve třech přednáškách (obecně, x86 přehled, m68k, x86 podrobně). Na svých cvičeních jsem vysvětloval i vazbu MMU překladu na problémy ohledně PIVT a VIVT indexace vyrovnávací paměti. Spíš jako zajímavost a námět k přemýšlení těch lepších studentů, kteří si zaslouží dostat nějakou náplň k zaměstnání svého intelektu. Jeden komentář pak říká, že se studenti během cvičení, kdy měli za úkol si podle podrobného návodu, zkusit napsat jednoduché tříděni v assembleru, nudili/nedělali nic. Přitom kdyby se problém pokusili řešit, tak by jim bylo možné pomáhat ať již individuálně nebo jako skupině. Pokud však po výkladu nespolupracují, tak je těžké, jim pomoc. Zadání bylo sice jednoduché, a v zásadě opravdu programování v assembleru není dnes pro většinu absolventů až tak důležitém, ale mohli si na příkladu vyzkoušet, jak se chová vyrovnávací paměť a pochopit to, co je pro každého lepšího programátora v jakkoliv vysokoúrovňovém jazyce znalost nutná. Přitom na dalším cvičení i ti, kdo se do práce nepustili, dostali kompletní podobný algoritmus k dispozici a vyplňovaly se tabulky využití, zrychlení pro různé kombinace parametrů vyrovnávací paměti. Veškeré příklady na interpretaci kódu v assembleru ve zkouškových testech pak byly řádově jednodušší, stejně tak vazba algoritmů na vyrovnávací paměť. Přitom ve větším si studenti problém otestovali v druhé domácí úloze. Kdo zpracoval čtvrtou, kde se vyskytovalo i předávání parametrů mezi funkcemi, probírané obecně a později podrobněji na přednáškách, tam měl dostatečný základ na to, aby veškeré příklady u zkoušky řešil. Přitom znalost vlastních instrukcí nebyla požadovaná, buď byl v testu kompletní seznam s popisem, nebo se studentům dostalo nápovědy podle potřeby, na tabuli, individuálně. Stejně tak zapojení signálu v procesoru bylo probírané na dvou přednáškách. V testech se vyskytovaly jen ty varianty, které byly probrané (žádná variace počtu řezů, alternativní možnosti přeposílání atd.) a vždy byl k takovéto otázce k dispozici příslušný diagram zapojení, ve kterém stačilo jen projít (rukou, tužkou) cesty, které se do zpracování dané instrukce zapojí. Ano přímo konkrétní úkoly a dotazy na cvičeních řešené nebyly, ale jsem přesvědčený, že veškeré podklady pro řešení každé z úloh byly studentům předané a stačilo jen dokázat zadání analyzovat, využít poskytnuté vědomosti a kombinovat vše se základní inteligencí a orientací v oboru. Možná několik doplňujících otázek typu Ano/Ne bylo nepatrně těžších, nestačilo jen umět číst zadání a předloženou grafiku. Některé vyžadovaly i studium materiálů druhé poloviny přednášek, případně vyhledání si výkladu termínů z prezentací, pokud student na přednášce nebyl, nebo my výklad nebyl dostatečně jasný a nezeptal se.

Obecně pak druhá část přednášek má sloužit pro doplnění více obecné první části o některá další pokročilejší témata a především pak jako test porozumění první části. Témata, vyrovnávací paměť, registry se opakují ale již s výkladem pro konkrétní probíranou procesorovou architekturu nebo z pohledu směřování vývoje do budoucna. Student, který si látku první části osvojil a třeba před dalšími přednáškami a na cvičeních zopakoval, by měl být náročnější výklad v druhé části bez problémů sledovat. Je to příprava na čtení vědeckých článků a manuálů k procesorovým systémům, kdy právě náš předmět by měl přispět základními znalostmi, které umožní jejich pochopení. Pokud tedy student v druhé části zjistí, že ty obecné základy k sledování výkladu dostatečně nepochopil, tak by se měl zeptat na přednášce, požádat o konzultaci, ptát se na cvičeních, přečíst kapitolu z doporučené literatury atd. Obecně si pak nemyslím, že má smysl psát k předmětu čeká skripta. Bez angličtiny tento obor studovat nelze, celosvětově je tato látka přednášená podle shodné učebnice, kterou doporučujeme. V češtině existuje sérii popularizačních článků Co se děje v počítači Pana Tišnovského uveřejněných na serveru Root.CZ.  Na tu se i z webových stránek předmětu odkazujeme. Možná má smysl připravit rozšířenou verzi prezentace s výkladem k budování procesoru ze základních prvků, možná nějaké poznámky k prezentacím, ideální by bylo takový materiál připravovat přímo se studenty nebo formou zápisu diskuze dotaz/odpověď.

I přes výše uvedené uznávám, že zkouška jako celek je celkem náročná. Studentů pak bylo počtem opravdu nad naše síly, s kolegou jsme pomoc s opravou od dalších téměř neměli šanci získat (jednou nebo dvakrát pomohl výjimečně s manuálně opravovanými otázkami Ing. Hubáček) a tak nezbývalo než se uchýlil automatickému systému. S přípravou testů, především kolega, strávil velké množství času. Snažili jsme se zajistit, že v plném sále nedojde k opisování a návrh testů, kdy naše algoritmy musí nalézt pro téměř nekonečné počty variant vstupů správné odpovědi v úlohách, které nemají být i pro myslícího tvora triviální, byl náročný a některé chyby jsme nedokázali včas pro některou neodzkoušenou kombinaci vstupů vyřešit. Myslím, že jsme veškeré případy problémů na naší straně řešili výrazně ve prospěch studentů. Snažili jsme se i o granularitu hodnocení odpovědí tak, aby bylo možné úspěšně zkoušku složit i při pochybení studenta v jednom z koncových výpočtů. Určitě by bylo lepší ruční vyhodnocení, které by dokázalo přihlédnout k správnému postupu i pokud je výsledek nesprávný. Na druhou stranu i takto bylo hodnocení podle mě dostatečně spravedlivé. Investovali jsme hodně času, aby se alespoň některé otázky, pohledy na těch pár zkoušených základních principů, měnily a byly si, co nejméně podobné a věřím, že jsme prověřovali více orientaci v problematice něž paměťové schopnosti studentů.

Netěší mě, že z průběhu testů je zřejmé, že se mnoho studentů učilo na konkrétní zadání, místo aby zvládli obecné principy a ty jen aplikovali. Ale z porovnání správnosti výsledků u opakující se  spíše těžší otázky a nové spíše lehčí otázky, je tento trend patrný stejně jako v minulých bězích. To je špatně a minimálně by nemělo takové jednání stačit k získání celkově dobré/výborné známky. To se nám, myslím, snad celkem ošetřit podařilo. Celkový výsledek 17x A, 31x B, 70x C, 79x D a 53x E pak považuji za adekvátní. Zkoušku pak nezvládlo 28 studentů. U některých z nich jsem přesvědčený, že se poctivě snažili a náročnost nezvládli a přeji jim, ať se jim v příštím běhu daří lépe. Na druhou stranu si myslím, že nezvládnutí je známkou toho, že mají ve znalostech zásadní mezery, které by jim vadily v dalším studiu a nelze je tolerovat. Nemyslím si, že v některém termínu byly vysloveně příliš těžké/nezvládnutelné otázky. Ke každé otázce v každém testu se vždy našlo alespoň několik studentů, kteří jí zodpověděli správně. Na druhou stranu ano, na plný počet bodů vypracovali testy správně jen asi 3 studenti.

Naopak těm, kteří předmět absolvovali s výborným hodnocení gratuluji a myslím, že mají dobrý základ a schopnosti jít v oboru dále, než jsme zvládli mi. Ale to v případě zájmu a píle mohou určitě mohou i ti, kteří neuspěli tak excelentně, protože k hodnocení přispívá náhoda, aktuální kondice atd. Jsou mezi nimi možná i tací, kteří požadovanou úroveň logického myšlení nezvládají. Myslím, že ten, kdo patří to této kategorie a nevyniká někde jinde v studovaném oboru (teoretická matematika, fyzika, řízení), by měl zvážit, jestli je programování pro něj ta správná volba. Neumím si představit dobrého programátora bez schopnosti samostatně myslet, analyzovat a je možné, že jiný obor mu přinese více štěstí a možností seberealizace.

Rád se se studenty, co mají o obor zájem, setkám jak v rámci projektů zaměřených na vestavné systémy i využití procesorové techniky obecně. Velmi bych pak ocenil, pokud budou ochotní zpět na univerzitu přijít se zkušenostmi z praxe a třeba i pomoc se směrováním budoucích běhů předmětu tak, aby byl dalším generacím studentů prospěšnější, než je nyní.

S pozdravem,

Pavel Píša