Ivan Ryant: Nahraďte algoritmizaci systémovým přístupem!

pondělí 20. července 2009 ·

Jedním z cílů vzdělávací oblasti „5.8 Informatika a informační a komunikační technologie" RVP pro gymnázia je „uplatňování algoritmického způsobu myšlení při řešení problémových úloh". V charakteristice vzdělávací oblasti je tento cíl začleněn do kontextu zpracování informací v systémech: „Žák ... soustředí se na pochopení podstaty a průběhu informačních procesů, algoritmického přístupu k řešení úloh a významu informačních systémů ve společnosti." Algoritmizace pak má svůj výstup a příslušné učivo uvedené v kapitole 5.8.1 RVP.

Příspěvek převzat z metodického portálu www.rvp.cz provozovaného Výzkumným ústavem pedagogickým v Praze.

Problém je v tom, že úlohy se v informatice řeší zpravidla jinak než algoritmicky, informační procesy nemívají charakter algoritmů a ani informační systémy se nenavrhují jako algoritmy. Toto tvrzení vysvětlím později.

Nejprve však připomenu, co je a co není algoritmus. Již od dob, kdy středověká Evropa studovala počtářskou příručku legendárního Mohameda z Chivy, se za algoritmus považuje přesný a jednoznačný postup nějakého užitečného výpočtu popsaný krok za krokem od zadání vstupních údajů až po nalezení výsledku. Stručně se tomu říká efektivní procedura. Algoritmus (podle Donalda Knutha):

* má být složen z elementárních kroků (které počtář umí)
* má jednoznačně určovat pořadí, jak kroky výpočtu následují jeden za druhým
* má skončit
* má dospět k výsledku

Algoritmus tedy není výpočet:

* který nekončí (např. software kardiostimulátoru musí běžet, dokud se nevybijí baterky)
* který nevede k výsledku (zejména pak výpočet, který nekončí, nevede ani k výsledku)
* který nemá jednoznačně určené pořadí elementárních kroků (např. webový nebo databázový server obsluhuje několik požadavků současně, pořadí elementárních kroků není předepsáno)

Takto popsaný algoritmus je jen vágní pojem. Matematici jej někdy zpřesňují využitím Churchovy nebo Turingovy teze, že totiž každý užitečný výpočet se dá popsat jako funkce lambda kalkulu nebo jako Turingův stroj (v obou případech jde o exaktně definované algebraické struktury). Ztotožníme-li algoritmus např. s Turingovým strojem, okamžitě se dostáváme do dalšího problému - do problému nezastavení Turingova stroje, který je nerozhodnutelný. Ne o každém algoritmu tedy dokážeme říct, zda se zastaví, skončí a vydá výsledek, nebo zda poběží neustále, nikdy se nezastaví, a tím pádem se ani nedobere žádného výsledku. Z tohoto důvodu jsou požadavky na konečnost a rezultativnost algoritmu prakticky bezcenné. Dalším problémem je reálný čas, na který se při algoritmickém výpočtu nebere ohled (algoritmus má skončit v konečném čase, ale žádná konkrétní lhůta se nestanovuje). Proto programy, které musí dodržovat časové lhůty fyzického světa, nemohou být řešeny algoritmicky. Jenže každý program, který interaguje s uživatelem nebo s čímkoli fyzickým ve svém okolí, musí takové lhůty dodržovat (podrobnější rozbor uvádí např. Edward Lee ve svém článku).

Zvláštním zdrojem mnoha dalších problémů, který navazuje na RVP, bude pravděpodobně „Katalog požadavků k maturitní zkoušce" z ITZ. Tento katalog má vypracovat „Centrum pro zjišťování výsledků vzdělávání" (CERMAT) do jara 2010. Poslední mně známá, dnes však již neaktuální aktualizace katalogu z roku 2005 naznačuje, že věru bude co řešit: např. omezení algoritmizace na pouhé strukturované programování a s tím spojený vztah algoritmů k příkazovým a datovým strukturám. Největším problémem však asi bude poměr mezi množstvím učiva a hodinovou dotací informatiky. Poznamenejme, že jenom výuka algoritmizace ani ne v rozsahu požadavků z roku 2005 mi bohatě vyplní jeden rok volitelného předmětu „programování" s dotací dvou hodin týdně. Stejnou hodinovou dotaci však máme na celou informatiku, ne jen na jedno poměrně okrajové téma.

Vraťme se nyní ke klíčové otázce: jak se řeší problémy v informatice prakticky? Při analýze problémů a návrhu systémů, které zpracovávají informace, se s algoritmickým přístupem setkáváme v praxi už aspoň dvacet let jenom okrajově. Výpočetní postupy jsou fragmentované a sdružené s datovými strukturami do objektů - objekty nevyjadřují postup výpočtu. A nedospíváme k nim algoritmizací úlohy, nýbrž analýzou a designem informačního systému. Algoritmus prostě vyjde rovnou fragmentovaný. Pokud se ovšem o algoritmus vůbec jedná. Při analýze a designu systému se nedbá na jednoznačný sled operací výpočetního postupu. Sled operací není determinovaný zejména v několikavláknových systémech nebo v systémech paralelních procesů, ani při řízení systémů událostmi (např. interaktivní uživatelské rozhraní, tzv. „okna", řídí systém událostmi). Souhlasím, že algoritmizace může být jedním z vhodných úvodů do programování, sám jí dávám přednost před metodou „objekty napřed", kterou znám např. ze skvělé učebnice Bertranda Meyera „Touch of Class". Ale vzápětí po algoritmech pak musí následovat objektová architektura. Když však nejde o kurs programování, nýbrž o zacházení s informacemi obecně, je algoritmizace vysloveně škodlivá. Pokud totiž máme studenty naučit systémovému přístupu k analýze informací a případně i k pochopení vnitřní struktury informačního systému, musíme je naučit postupy analýzy systémů. Zde pak vedle sémantických sítí (příp. myšlenkových map), které konstruujeme intuitivně a vesměs naivně, přicházejí na řadu modely systémů v diagramech UML (Unified Modeling Language). Diagramy UML dokážeme konstruovat podle metodického postupu prověřeného zkušeností mnoha profesionálních analytiků, takže ve srovnání s intuitivní konstrukcí sémantických sítí máme daleko větší šanci, že model v UML bude správný.

Proto považuji za chybu, že algoritmický přístup je v RVP uveden v souvislosti s řešením problémů, s informačními procesy a s informačními systémy. Pak je ovšem chybný i cíl, aby se žák omezoval při řešení problémů zrovna na algoritmický způsob myšlení. Spíš bych doporučoval navázat na modelování pojmových systémů pomocí sémantických sítí a konkretizovat jak postup modelování, tak i způsob kreslení modelu směrem ke standardu UML. Pokud jde o algoritmický přístup, ten má svoje místo jen ve zvláštních případech při řešení dílčích úloh.

Zatím vím jen o dvou takových zvláštních případech: Za prvé, algoritmický způsob řešení úloh je také jedním z cílů vzdělávacího oboru „5.2 Matematika a její aplikace". Tam má opravdu své místo, mj. proto, že algoritmický charakter je jedním ze základních požadavků na důkazy v matematice, ty totiž nesmějí být nealgoritmické. Za druhé se domnívám, že algoritmizace může být obsahem volitelného předmětu zaměřeného nejspíš na programování. Škola, která doplní závazný obsah RVP o takový předmět, současně vhodně prováže informatiku s matematikou. Pokud však jde o povinnou informatiku, ukázal jsem v tomto příspěvku, že algoritmický přístup už dávno není ani jediným, ani dostatečným, ba ani základním způsobem řešení problémů, že vždy může být nahrazen obecnějším přístupem (zejména objektovým). Proto dnes algoritmizace zůstává znalostí a dovedností specifickou jen pro matematiku, kdežto řešení problémů v jiných oblastech a oborech se na algoritmický přístup už dávno zúžit nedá.
Použitá literatura a zdroje

RVP-G, VÚP, Praha 2007, navštíveno 14. 6. 2009
KNUTH, Donald The Art of Computer Programming, vol. I, Addison-Wesley, 1968.
MANNA, Zohar Matematická teorie programů, Praha : SNTL , 1981 (originál: Mathematical Theory of Computation, McGraw-Hill, 1974).
Algorithm, Wikipedia, navštíveno 8. 6. 2009.
Unified Modeling Language, OMG, navštíveno 14. 6. 2009.
Bertrand Meyer: Touch of Class, Springer 2009.
Edward Lee: Computing Needs Time. Communications of the ACM; vol. 52 / nr. 5 (May 2009), s. 70-79.

10 komentářů:

Jenda řekl(a)...
20. července 2009 v 10:24  

Souhlasím s tím, že jak je to formulované v RVP je to nesprávně, ale kde jste proboha byl, když se to připomínkovalo NÚOVu? Tak si tam zahrňte systémovou analýzu - datovou a funkční, stejně tomu při kontrole nikdo nebude rozumět a vydávejte to za algoritmizaci. Pojmový guláš zůstane - však vy jste si to nevymyslel, ale vaši žáci budou ovládat to, co je potřeba. Ale už vidím, jak to na gymnáziu budete vyučovat, když si nedokáží naprogramovat ani klalkulačku v Delphi, natož, aby řešili návrh informačního systému.
Ale nesouhlasím s tím, že algoritmizace je dnes vhodná pouze pro matematiku. Jsou tu i podoblasti informatiky, o kterých zřejmě nevíte. Dnes to není jen o osobních počítačích a programování v OOP na nich, ale říkají vám něco jednočipy? Pokud budete chtít programovat jednočip v ASM nebo v C, tak se bez algoritmizace neobejdete. Když budete chtít navrhnout např. kombinační obvod, taky se můžete částečně o algoritmizaci opřít - neberte prosím algoritmus jen jako vývojový diagram, existují i jiné prostředky, jako pravdivostní nebo rozhodovací tabulky. Já například rozhodovací binární tabulky pro popis voleb, činností, podmínek a stavů systému používám s žáky dost často a rozhodně ne jen okrajově. Ale vy jste ale zřejmě chtěl napsat, že pro gymnázia se to hodí spíše jen do matematiky, že? Pak asi ano, ale obecně to rozhodně neplatí.

Anonymní řekl(a)...
20. července 2009 v 10:38  

Ano, tak uvažuje "dospělý vědec".. nahony vzdálený dětské intuici. Jeho šedá kůra je už tak naučená vidět svět, že nevpouští do soudnosti cit pro tzv.nahodilost, ani pro duši dítěte. Algoritmus v řešení problémů může být zdravý, pokud je osvojen beze strachu, jinak vznikne v mentatu člověka tzv.mapa, jejíž zkušeností je většinou cesta, jak se vyhnout strachu... neminout cíl. Silně a zkratovitě využívá krátkodobou paměť, tzn. operuje analyticky. Zde není místo pro intuici a tvořivostní složka pro řešení problému se blíží nule. Systémové řešení je zase opět jen nápodoba analýzy s globálními cíly. Je ho schopen člověk s vlohami syntetického uvažování, které operuje hlavně se zkušeností.. a tvořivost zde podléhá rentabilitě cíle. Takhle uvažuje dospělý člověk na vysoké, případně střední škole.
Kde je tedy pochopení pro dítě?

Jenda řekl(a)...
20. července 2009 v 11:09  

Pro jaké dítě? Tohle je RVP pro gymnázia, ne pro ZŠ. Tam už míra abstraktního myšlení musí být zastoupena. Sám píšete, že tak uvažuje člověk na VŠ nebo SŠ. Samozřejmě bych to netlačil do 1. ročníku víceletého. Jinak bych z toho strach neměl.

Jenda řekl(a)...
20. července 2009 v 18:22  

Pro autora:
a propos, teď jsem si to přečetl ještě jednou a všiml jsem si zajímavé věci. Píšete: "v charakteristice vzdělávací oblasti je tento cíl začleněn do kontextu zpracování informací v systémech." Podle mého tedy chtějí, aby se gymnazisté seznámili s tím, co je potřeba vykonat v rámci zpracování dat, jako je načtení, výběr, třídění, ukládání. A pro tyto věci jsou algoritmy nepostradatelné.
Dále píšete: "Žák ... soustředí se na pochopení podstaty a průběhu informačních procesů, algoritmického přístupu k řešení úloh a významu informačních systémů ve společnosti." Takže si tam klidně to UML dát můžete, pokud budete vysvětlovat jaké vazby se v systémech vyskytují, nicméně pořád z toho vyplývá to, co jsem uvedl jako reakci na vaši první citaci. Nezavrhoval bych tedy ani jedno, ani druhé, stejně tak bych ale nepreferoval UML na úkor vývojáku, jde o to, jaký cíl sledujete a ono to tady bude tak 80/20 pro algoritmy. A pro to, co jste napsal o vyvužití vývojáku v informatice platí můj první komentář. Když si to čtu stále dokola, tak mám normálně chuť vám tak trochu vyčinit. Taková blamáž. To je, jako kdybych napsal, že číslicová technika už nemá na technické škole místo a že je potřeba ji zcela nahradit výukou jazyka VHDL (mimochodem, ono je to horší, ona v RVP Informační technologie bohužel vůbec nefiguruje, ale beru v potaz, že by se dala do disponibilních hodin). Tímto jsem chtěl svůj komentář ukončit, ale dal jsem si tu práci a našel si cíle pro oblast vzdělávání ICT v RVP_G, o kterých se tu píše. Jedná se mimo jiné, avšak v řešeném kontextu právě o: 1. uplatňování algoritmického způsobu myšlení při řešení problémových úloh; 2. využívání prostředků ICT k modelování a simulaci přírodních, technických a společenských procesů a k jejich implementaci v různých oborech;

Vz jste ale napsal: "Proto považuji za chybu, že algoritmický přístup je v RVP uveden v souvislosti s řešením problémů, s informačními procesy a s informačními systémy. Pak je ovšem chybný i cíl, aby se žák omezoval při řešení problémů zrovna na algoritmický způsob myšlení." Jenže, ono tam nic takového dáno v souvislost není a pouze jste si to špatně interpretoval. Smíchal jste totiž více cílů do jednoho na základě charakteristiky a já bláhový vám to sežral v domění, že je to takto skutečně prezentováno v RVP.

Takže vlastně ani nevím, nad čím tak lamentujete. Je tam zastoupena jak algoritmizace, i když vy byste ji asi zrušil, protože podle vás dnes už není v informatice potřeba, a to je to co vám si vadí, i když já mám přesně opačný náhled na věc, tak i to vaše preferované UML (chci pak vidět gymnazistu, který půjde na ČVUT studovat informatiku, jak uspěje pouze s povědomím o UML, bez základů algoritmizace problému).

Já bych na to šel asi od lesa a zahrnul to pod využití Microsoft Visio, jako nástroje pro modelování všeho, co po vás chtějí. Jinak vám snad nic nebrání prosadit si navýšení hodinové dotace z disponibilních hodin pro ICT, kde budete rozšiřovat kompetence v oblasti návrhu informačních systémů a popisů procesů a vazeb v nich (pozor, to není zpracování informací v systému) dle libosti. Není to samozřejmě ideální, ale lepší, než rovnýma nohama do UML. Pro gymnázia určitě. A ještě jednou řeknete, že se algoritmizace v informatice 20 let nepoužívá - nebo jen okrajově, a opravdu vám příjdu naplácat na holou, jako že se Jenda jmenuji. Žijete ve snovém světě Javy, C++, PHP5 a jiných OOP friendly jazyků, které však ještě zcela neovládly celý vědní obor informatika. A to nejen v teorii, ale i v praxi. Už jsem to dokladoval výše a můžu znovu kdykoliv i na jiných příkladech. Informatika nerovná se čistě PC a OOP, pozor na taková silná tvrzení. Máte značně omezený obzor, to že nevidíte za horizont, za to já nemůžu, ale informatika, bohužel, není placatá.

Ondřej Neumajer řekl(a)...
20. července 2009 v 22:05  

Názor autora na výuky algoritmizace rozhodně není zcela ojedinělý. Například R. Pecinovský ve svých příspěvcích poukazuje na potřebnost metodiky "Object First", viz např. Metodika výuky programování na rozcestí.

Jenda řekl(a)...
20. července 2009 v 22:34  

Pro pana O. Neumajera:
O tom se nepřu, každý může mít svou cennou zkušenost (pokud se budeme bavit čistě o výuce programování na soudobých OS, v rámci soudobých programovacích jazyků, pro soudobá PC. Jenže ony nejsou jen PC a osobní počítače, jak už bylo řečeno.) Netvrdím, že je to koncepčně špatně, jen mě mrzí, že je tento článek argumentově postaven na nesprávných a nekorektních závěrech opírajících se o RVP_G, které mají podtrhnout právě významnost modelování systémů na úkor algoritmizace. Pochopte, že například nemohu začít s OOP, pokud učím žáky jazyk C ne z plezíru, ale protože na něm vyučujeme programování AS51 nebo HC08 procesorů. Samozřejmě se k němu dopracujeme, ale Object first v tomto případě nepřipadá v úvahu. Jsou prostě případy, kdy to nelze. A tady nastupuje klasická algoritmizace. Proto se mi takové rychlé závěry, že je algoritmizace v oblasti informatiky 20 let téměř mimo, příčí, jestli mi rozumíte. Tohle všechno už jsem napsal výše, stačí si to přečíst. To je vše. Přeji pěkný večer.

parabellum řekl(a)...
20. července 2009 v 23:20  

No ja bych rekl, ze je spousta uzitecnejch aplikaci, ktery byly napsany ve strojaku, a zatim je nic neprekonalo - zatim pani zastanci OOP nebyli tak dost dobri programatori, aby naprogramovali let s lidskou posadkou po obezne draze Mesice

PLC programovani obrabecich stroju ma take jen velmi malo spolecneho s OOP - mimochodem, je docela zvlastni, ze od doby, co se v USA zacalo OOP popuzivat, tak od te doby se datuje negativni
USA saldo obchodni bilance - projevuje se v soucasnosti nejvetsi hospodarskou krizi po WW2.

Diky tomu, ze se tahle civilizace rozhodla provozovat tanecky kolem internetovych serveru ji uniklo, ze ji ceka hafo technickejch problemu, ktery se OOP nevyresi.

cihlinek řekl(a)...
23. července 2009 v 12:33  

V RVP máme formulaci algoritmické řešení problémů, což se na většině škol zužuje do používání nějakého konkrétního programu/prostředí, který nabízí „naučit“ počítač nějakou automatizovanou činnost – makro v kancelářské aplikaci, podmínky vysvětlované na filtrech v tabulkovém kalkulátoru, ovládání nějakého „dětského“programovacího jazyka – pokud zbyde čas ve výuce „povinné“ infomatiky, programování v nějakém vyšším jazyce. Líbí se mi, že autor článku nás učitele vyzývá, ať nelpíme na for cyklech, vývojových diagramech a podobně. V jeho návrhu je pozvánka k tomu, abychom založili výuku více na používání modelovacích jazyků, jako je třeba UML. Snad jsem tedy pochytil výzvu dobře :-)

Ze své zkušenosti musím říci, že mezi „systémovým přístupem a modelováním“ a praktickým „naučením počítače jakékoliv činnosti“ je veliká propast a pro standardního gymnazistu nedosažitelná v hodinové dotaci na povinnou výuku informatiky. Z vlastní praxe vím, že žák se učí nový jazyk v podobě jakéhokoliv modelovacího jazyka (např. vývojový diagram) a nový jazyk v podobě syntaxe programovacího jazyka jako dva odlišné světy. Předpokládat, že průměrný žák gymnázia aplikuje znalosti z modelovacího jazyka do syntaxe konkrétního jazyka je dle mého mylný. Učitel tak stojí před volbou – jít cestou syntaxe jazyka, rychlých řešení „visual“ systémů a podobně a nebo cestou systémovou pomocí vhodného modelovacího jazyka.

Konzultoval jsem s jedním postgradualním studentem obsah jeho plánované práce a jako učitel informatiky na SŠ jsem ho požádal o následující „pomůcku“ k výuce informatiky - „vyrobte mi sbírku příkladů, kde budou prezentovány základní prvky práce programátora (dědičnost objektů, základní struktury procedurálních jazyků, rekurzivní datové struktury třeba i v deklarativních jazycích, dynamické přidělování paměti, připravené komponenty k programování a podobně) a ukázány na nějakých vybraných aktuálně používaných jazycích (C#, Python, C++, Visual Basic - co byste sem přidali/nepřidali vy??). Co byste pro výuku navrženou panem Ryantem potřebovali právě Vy?

Největší problém/výhodu vidím v tom, že zdravé jádro Vaší třídy ve výuce „modelování, algortimizace a programování“ tvoří a budou tvořit vždy studenti, kteří jsou samouci a doma se nad příručkou učí konkrétní programovací jazyk a ne žádný systémový přístup. Já jako učitel mám pak hlavní roli v tom, „odvést“ ho od jeho slepých zakoutí a nesystematičnosti, vhodně využít už to co umí a navázat na to výukou modelování a principů. Jakou aktivitu bude vyvíjet doma průměrný student, který výuku modelování a případné algoritmizace/syntaxe jazyka bude brát jako nutné zlo, povinné dle RVP a učebních osnov? To je to co mne trápí – jak překlenout individuálním přístupem propastné mezery mezi studenty, kteří se počítačům věnují rádi i ve svém volném čase a těmi ostatními.

Uzavřel bych můj vklad do diskuse vzpomínkou na rozhovor s organizátorem celostátní soutěže v programování ve vyšších jazycích, ředitelem Stanice techniků Vyšehrad v Praze, který celostátní soutěž spolupořádá (mimochodem, vedle soutěží programování robotů a Baltíka, jde o jedinou celostátně uznávanou soutěž v programování – viz. www.stv.cz). Při debatě o budoucnosti soutěže jsme porovnávali přístupy Domů dětí a mládeže a škol. Na DDM se snaží děti naučit „programovat“, aby mohly případně posléye rovnou nastoupit do firmy na zaučení, dle toho najímají externí lektory a vybírají konkrétní produkty, se kterými děti učí pracovat. Ve školách rádi řešíme principy, zdráháme se někdy učit jeden konkrétní systém, výuku programování tedy zužujeme na letmý dotyk principů světa informatiky (nekomentuji zde výběrové semináře, jen povinno výuku). Jsme pak schopni také řešit v sáhodlouhých debatách, jestli středoškolák má/nemá vědět, co je IP adresa, do jaké hloubky, čeká nás to i teď při plánované maturitě z ITZ.

Děkuji moc za článek!!!
Petr Naske, učitel na G a ZŠ, Praha

Anonymní řekl(a)...
3. října 2009 v 5:00  

Objevil jsem tuto diskusi až 3. října, nenapadlo mě, že se články z Metodického portálu zrcadlí na Českou školu. Děkuji všem přispěvatelům za jejich komentáře a postřehy. Přestože jsem svému příspěvku na Metodický portál věnoval dost času a hodně jsem jej předělával a upřesňoval, vidím, že ani tak jsem se nedokázal vyjádřit úplně přesně a možná ani správně. Takže děkuji za opravy a upřesnění.

K některým připomínkám bych se ovšem rád vyjádřil a pokusil bych se objasnit případná nedorozumění.

Především mě mrzí, jestli jsem někoho zmátl tvrzením, že RVP omezuje řešení problémů na algoritmický přístup. Nicméně v cílovém zaměření vzdělávací oblasti opravdu nenacházím jiný požadavek, než "algoritmický způsob myšlení při řešení problémových úloh". Chápu, že kromě závazného algoritmického způsobu můžu studenty učit i systémovému přístupu v rámci "využívání ICT k modelování a simulaci", ale to není závazné. Při množství učiva, které jsem povinen probrat, a hodinové dotaci 2h týdně po dobu jednoho roku těžko zvládám cokoli nad závazné učivo. Disponibilními hodinami bohužel nedisponuji já, takže žádné nedostanu. Potud moje interpretace (možná svérázná) a její důvody.

Jinak s Vámi, Jendo, souhlasím, že systémovou analýzu a syntézu můžu učit, a taky to dělám. Navazuju s ní na kreslení myšlenkových map (myšlenková mapa stvoření světa podle knihy Genesis patří k oblíbeným a úspěšným kouskům mých studentů, současně na tom textu vysvětluju, co je to informace - schopnost rozlišovat, např. nahoře od dole, včera od zítra, nesličné od krásného, dobré od špatného atd.) Po myšlenkové mapě analyzujeme požadavek na komunikační systém v naší lokální síti podobný telefonům Skype. Studenti pracují v týmech, mají rozdělené role a postupně kreslí diagramy UML od júskejzového po objektový (k STD se většinou nedostaneme, ten se učí až programátoři ve volitelném předmětu). Když mají zadání, tak implementují v databázi všechno, co se dá (tj. aspoň telefonní seznam). Spojování hovorů a přenos hlasu protokolem UDP programují programátoři v septimě. Po pravdě řečeno, ještě nikdy jsme tenhle projekt nedokončili úplně, ale aspoň dílčí prototypy všech důležitých součástí nám fungují. Je zajímavé, že týmová práce se v některých skupinách povede tak, že studenty baví a současně i motivuje k výkonům, kdežto v jiných skupinách musím studenty do práce na projektu nutit a výsledek pak za moc nestojí. Považuji ovšem za důležité, že v týmové práci se uplatní každý - zkušení amatéři jako analytici a vývojáři, přirozené autority jako ředitelé projektů, pečlivé dívky (které technická stránka telefonování moc nezajímá) kreslí diagramy a píší dokumentaci a tím jsou nenásilně
vtaženy do problému. Na kreslení diagramů používáme vektorový editor z MS Office, miluju spojovací čáry, které se přichytávají k bublinám, a vektorová grafika je taky učivo, které máme v ŠVP (Visio nikoli, snažím se zvládat předepsané učivo). Zkušenější učitel by asi dokázal víc nebo by to dělal lépe - já zatím nevím jak.

Ivan Ryant (následuje pokračování...)

Anonymní řekl(a)...
3. října 2009 v 5:01  

(...pokračování)
Pokud jde o programování jednočipáků, musím předeslat, že jsme gymnázium, máme poskytovat všeobecné vzdělání, takže mým cílem v

informatice nejsou ani tak konkrétní dovednosti (které během pár let stejně ztratí svou cenu), ale především schopnost vyhledávat informace,

orientovat se v problémech a udělat si vlastní názor (všeobecně vzdělaný člověk ničemu nerozumí, ale do všeho kecá). Samozřejmě, že s tímto

přístupem narážím (víte-li o škole, která by o mě za těchto okolností stála, rád změním zaměstnání), ale i tak je programování jednočipáků pro

nás dost okrajová věc. Náš absolvent by měl uspět nejen na ČVUT, ale především na univerzitách. Chystá-li se na informatiku, ať už na

univerzitě, nebo na technice, měl by chodit na volitelné programování (tam se naučí dost dobře nejen algoritmizaci ale i OOP). Ve volitelném

předmětu programujeme úlohy s různými přípravky připojenými k sériovému portu: teploměr (převádí teplotu na střídu, měříme časy), robot

(snímá světlo a má dvě rotující nohy - učíme ho běžet za světlem), telefon s rotační číselnicí (snímáme pulsní volbu). Studentům povinné IVT

např. ukazuju kardiostimulátory nebo např. diskutujeme, kolik je procesorů v autě a co tam dělají. Rozhodně se snažím, abychom se

neomezovali na svět PC, proto se věnujeme i komunikacím a řídicím aplikacím. Bohužel, řídicí aplikace jsou zase učivo, které bychom si mohli

(a asi měli) ušetřit, abychom splnili závazné požadavky RVP a očekávané požadavky CERMATu ke státní maturitě.

Pokud jde o algoritmický charakter, tak právě řídicí úlohy jej nemívají: obvykle nekončí vypočtením výsledku (kardiostimulátor, ABS v autě) nebo

nejsou determinované (pralelní procesy, obsluha přerušení). Osm let jsem se živil programováním právě tohoto druhu úloh a něco jsem o tom i

publikoval. Před osmnácti lety jsem pak dost ošklivě pokazil jednu zakázku (neodhadl jsem pracnost), tak jsem toho radši nechal. Další

problém je v tom, že jednočipáky mívají málo paměti, takže se vyhýbáme rekurzi. Jenže bez rekurze je to jen hodně slabý odvar z

algoritmického způsobu řešení úloh. Vidíte, Jendo, pravdivostní a rozhodovací tabulky mě opravdu nenapadly, ale i ty jsou hodně slabým

odvarem z algoritmů (nepřesahují sílu konečného automatu). Kdo by si
chtěl ujasnit pojem "algoritmus", může se podívat na moje webové stránky - je tam ke stažení kurs "Zachraňte Karla!", je to klasická úloha "myš

v bludišti", včetně dost zevrubného výkladu, co znamená algoritmus.

Doufám že se tedy shoduji se všemi ostatními přispěvateli, že "informatika nerovná se čistě PC a OOP", a mrzí mě, pokud jsem vyvolal dojem,

že mám "značně omezený obzor", že nevidím "za horizont". Slibuju, že se budu snažit, abych si horizont rozšířil. Úplně souhlasím s Jendou,

kterého si dovolím parafrázovat: informatika, bohudík, není placatá.

No jo, malé děti, s těmi bývá největší sranda, když u nich supluju (na IVT mám totiž až vyšší gymnázium). Děláme někdy systémovou analýzu

(Čimice nám vyhlásily válku, naši školu musíme
přebudovat na pevnost pro štáb bohnických ozbrojených sil, vrtulníkovou základnu, lazaret aj. týlové zabezpeční), někdy porovnáváme různé

interpretace téže události (ze zoo utekla smečka vlků - napište (a) článek do bulvárního deníku, (b) inzerát pracovníků zoo - pomozte najít

zaběhlá štěňata, (c) výzvu svazu trojských důchodkyň - zachraňte nás před dravými šelmami), jindy
zase pátráme po tom, proč měl kupec Sámo 12 žen a skoro 40 dětí. Formulujeme jednoduché texty, kreslíme obrázky, schémata nebo komiksy.

Tam bych do IVT opravdu necpal ani algoritmizaci, ani UML.

Ivan Ryant

Články dle data



Učitelské listy

Nabídka práce

Česká škola - portál pro ZŠ a SŠ

Česká škola poskytuje svým čtenářům diskusní prostor k vyjádření názorů na školskou problematiku. Tyto příspěvky se nemusí shodovat se stanoviskem redakce České školy a jsou uveřejňovány jako podnět k dalším diskusím.

Obsah článků nemusí vyjadřovat stanovisko redakce nebo vydavatele Albatros Media, a.s.


Všechna práva vyhrazena.

Tento server dodržuje právní předpisy
o ochraně osobních údajů.

ISSN 1213-6018




Licence Creative Commons

Obsah podléhá licenci Creative Commons Uveďte autora-Neužívejte dílo komerčně-Nezasahujte do díla 3.0 Česká republika, pokud není uvedeno jinak nebo nejde-li o tiskové zprávy.



WebArchiv - archiv českého webu



Tyto webové stránky používají k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Informace o tom, jak tyto webové stránky používáte, jsou sdíleny se společností Google. Používáním těchto webových stránek souhlasíte s použitím souborů cookie.