Mýty ve výuce programování a metodika Design Patterns First
|
|
- Luboš Tichý
- před 9 lety
- Počet zobrazení:
Transkript
1 Mýty ve výuce programování a metodika Design Patterns First Rudolf Pecinovský ICZ a.s., Praha 4, Hvězdova 1689/2a VŠE Praha, Praha3, Nám. W. Churchilla 4 rudolf@pecinovsky.cz Abstrakt. Příspěvek shrnuje dosavadní stav metodiky Design Patterns First. Nejprve připomíná (a současně vyvrací) některé oblíbené mýty rozhlašované pedagogy, kteří jimi zdůvodňují svoji neochotu učit objektově orientované programování. Poté představuje metodiku. Seznamuje s myšlenkami, na jejichž základě vznikla a popisuje postup výuky a výhody jejího používání. Ukazuje, jaké spektrum příkladů umožňuje včasné zavedení metodiky použít a jak včasné zavedení rozhraní umožňuje zefektivnit vyhodnocování studentských úloh. 1. Ohlédnutí 1.1 Metodiky programování V historii programování se neustále objevovaly a objevují různé metodiky jak programovat a jak programování učit. Většina z nich je na počátku odmítána, protože nutí programátory a učitele měnit zažité zvyklosti a často navíc naznačuje, že programování zdaleka není takové umění, za jaké by je mnozí rádi vydávali. První boj sváděli zastánci vyšších programovacích jazyků. Odpor programátorů k jejich používání byl velký. Všichni svorně tvrdili, že program nikdy nedokáže přeložit zdrojový kód tak dobře jako člověk. Tvůrci jazyka Fortran dokonce zašli ve snaze přimět programátory k jeho používání tak daleko, že překladač simuloval běh některých částí programu, aby pak mohl co nejefektivněji přidělit registry procesoru. Jedna z nejznámějších bitev probíhala v sedmdesátých letech mezi zastánci a odpůrci strukturovaného programování. O této době pojednává řada úsměvných článků, z nichž asi nejznámější (alespoň v naších zemích) je ironický dopis nazvaný Opravdoví programátoři nepoužívají Pascal ([17]). Necelý rok před Dijkstrovým článkem Go To Statement Considered Harmful ([3]), který inicioval výše zmíněnou bitvu se objevil programovací jazyk Simula 67 vyvinutý původně pro simulaci procesů ([2],[9]). Ten přišel s několika zajímavými nápady, které oslovily další badatele, až se díky efektu sněhové koule staly dostatečně viditelné na to, aby se probojovaly i do zorného pole běžných programátorů. Objektově orientované programování, které na těchto myšlenkách staví, je dnes hlavním proudem programování. Prakticky všechny významné projekty jsou dnes programovány objektově tedy alespoň to o nich jejich autoři tvrdí. Když ale začnete
2 jejich programy studovat, zjistíte, že mnozí programátoři považují za objektový jakýkoliv program naprogramovaný v jazyce, který objektově orientované programování podporuje. Neuvědomují si, že program nedělá objektově orientovaným používání tříd a dědičnosti, ale že OOP vyžaduje výrazně odlišný přístup k řešení problému. K tomu, aby byl program doopravdy objektově orientovaný a mohl využívat všech výhod, které OOP nabízí, je potřeba začít při vývoji programů také objektově myslet. Teprve pak se začnou projevovat výhody, které s sebou OOP přináší. Dokud programátoři nezačnou objektově myslet, tak si na OOP jen hrají. 1.2 Metodiky výuky Obdobně jako s programováním je to i s jeho výukou. I zde probíhaly (a probíhají) bitvy mezi zastánci staršího přístupu a modernějším pojetím. Většinou bylo moderní pojetí tak dlouho znevažováno, dokud nezačalo učit dostatečné množství mladých učitelů, kterým bylo toto pojetí bližší než jejich starším kolegům. V současné době se např. bojuje o to, zda stále začínat výukou algoritmických konstrukcí, a nebo hned od počátku pracovat s objekty, třídami a rozhraními. U výuky programování přibývá ještě další problém: je třeba rozlišovat mezi výukou programovacího jazyka a vlastní výukou programování. Je to obdobné, jako u výuky jazyků, kde je také rozdíl mezi výukou gramatiky a výukou tvorby literárních děl. Když se jednou naučíte psát dobře povídky, učebnice, básně nebo jakýkoliv jiný druh psaného textu, budete to umět ve všech jazycích, které ovládáte (samozřejmě s přihlédnutím k hloubce znalostí daného jazyka). 2. Mýty o výuce programování Při debatách o výuce programování se neustále setkáváme s řadou mýtů. Pokusím se některé z nich připomenout a snad i vyvrátit. 2.1 Netřeba se starat o požadavky zaměstnavatelů, protože nejsou našimi zákazníky Při návrhu koncepce výuky musíme mít na zřeteli požadavky, které na naše absolventy budou klást jejich zaměstnavatelé. Na konferenci Informatika XXI./2008 mi v tomto bodě jeden účastník oponoval, že se nehodlá řídit požadavky firem, protože firmy nejsou jeho zákazníky. Řekl bych, že tím vyslovil názor nezanedbatelné části vyučujících. Přiznám se, že tento názor zcela nechápu. Podle mne by jedním z cílů výuky mělo být co nejlepší uplatnění absolventů v praxi. Jak ale chceme dosáhnout tohoto cíle, když budeme potřeby praxe ignorovat, protože budoucí zaměstnavatelé nejsou našimi zákazníky? Chceme-li, aby naši absolventi našli dobré uplatnění na trhu práce a aby je jejich zaměstnavatelé neposílali záhy po nástupu do Pecinovského přeškolovacích kurzů (případně do jejich firemních ekvivalentů), měli bychom je od samého začátku učit programovat tak, aby pak už žádné přeškolení nepotřebovali.
3 2.2 Studenty musíme učit především algoritmickému myšlení Jedno z dalších oblíbených pořekadel praví: Studenty musíme naučit především algoritmickému myšlení, a proto musí výuka začínat základy algoritmizace. Nikdo z těchto oponentů ale zatím přesně nespecifikoval, co to vlastně je to algoritmické myšlení. Když se ale začnete detailně vyptávat na to, co si přesně pod oním algoritmickým myšlením představují, zjistíte, že se vlastně jedná o způsob uvažování, který je vlastní objektově orientovanému programování. Spojovat cosi, co někdo nazval algoritmické myšlení, s algoritmizací je obdobně logické jako spojovat podvodníky s potápěči, protože ti přece pracují pod vodou. OOP přineslo do programování další výrazné zmenšení sémantické mezery mezi způsobem popisu problému běžným člověkem a způsobem jeho popisu v analýza a následně v programu. Když začátečníky učíme nejprve základy algoritmizace, vnucujeme jim transformaci běžného popisu problému do primitivního tvaru vyžadovaného programovacími jazyky šedesátých a počátku sedmdesátých let minulého století. Problém je v tom, že když si jednou tento způsob uvažování osvojí, již těžko se vracejí k přirozeněji formulovanému způsobu řešení daného problému. Jedním z největších problémů algoritmicky vychovaných programátorů je např. jejich neschopnost zůstat při hovoru o programu na hladině abstrakce, které rozumí i zadavatel, a nesklouzávat neustále na úroveň kódu. U objektových programátorů je tato tendence neporovnatelně slabší, protože při návrhu programu myslí v jiných kategoriích v takových, kterým často rozumí i zákazník. 2.3 Objektové orientované programování je jen dočasný módní výstřelek Výrok uvedený v nadpisu této podkapitoly prohlašují lidé, kteří donedávna o OOP vůbec neslyšeli. To, že o něm neslyšeli ale ještě neznamená, že neexistovalo. Jak je obecně známo (a jak jsem i v úvodu naznačil), OOP je ve skutečnosti o nějaký rok starší než strukturované programování, které tito oponenti prosazují. Objektově orientované programování dostalo při svém zrodu do vínku dva nezanedbatelné handicapy: Má poněkud větší nároky na rychlost procesoru a množství paměti. Chvíli trvalo, než programátoři správně pochopili, co jim vlastně nové paradigma nabízí a jak tyto možnosti co nejlépe využít. V současné době však jsou již oba handicapy dávno překonány. Výkonnostní parametry současných počítačů jsou tak vysoké, že drobná režie spojená s některými objektově orientovanými konstrukcemi je již nepodstatná a je bohatě vyvážena dalšími vlastnostmi: rychlejším vývojem, stabilnějším a robustnějším výsledným programem a především pak mnohem snáze udržovatelným kódem. (A navíc kódem, který je mnohem snáze opětně použitelný v jiných aplikacích.) Trochu větším problémem jsou zažité zvyky, které vznikly v době, kdy bylo běžné chápání významu a použití některých konstrukcí výrazně odlišné od současného. Dnes se již ví, že toto chápání vedlo ke vzniku problematických vazeb uvnitř programu. Nicméně na některé školy tato znalost ještě zřejmě nepronikla a učí zde programové konstrukce dále podle již dávno překonaného modelu.
4 2.4 OOP vede k vytváření nespolehlivých programů podívejte se na Windows V tomto mýtu se spojilo hned několik špatných úvah najednou. První, nejviditelnější je, že se podle jednoho programu posuzuje celá metodologie. Na této úvaze je navíc scestné to, že Windows mají objektově orientované uživatelské rozhraní, ale samy dlouho nebyly naprogramované objektově. V současné době však již samozřejmě objektově programovány jsou, protože OOP je metodika, která umožňuje vytvářet rozsáhlé a komplikované programy nejrychleji a nejspolehlivěji. Ostatně podívejte se na banky jako na organizace, kterým životně záleží na spolehlivosti jejich softwaru. Prakticky vše, co se pro ně programuje, se programuje povinně objektově. Navíc bychom si měli přiznat, že programy takové obludnosti jakou vykazují současné operační systémy, kancelářské balíky a další aplikace, se už dost dobře jinak než objektově v rozumném čase a spolehlivosti naprogramovat nedají. Neobjektové programování se proto v současné době používá především při vývoji ovladačů a programů pro jednočipové počítače (avšak i sem již OOP proniká). V rozsáhlejších aplikacích jsou neobjektově programována již pouze jádra některých z nich. 2.5 Aby se studenti naučili správně programovat, musejí nejprve pochopit základní principy práce počítače Tento názor je vyhlašován hlavně jako protiváha ke snaze začínat výuku OOP přímo objekty. Obávám se, že stejně jako většina řidičů netuší, jak přesně pracuje jejich automobil, aniž by jim to při úspěšném řízení automobilu nějak zásadně vadilo, tak i většina programátorů znalosti o podhoubí svých programů nikdy nevyužije. Většina programátorů dokonce nevyužije ani hlubší znalosti algoritmizace a konstrukce složitějších datových struktur. Občas se dokonce ukazuje, že tyto znalosti jsou kontraproduktivní. Programátoři, kteří vědí, do jaké podoby je program přeložen a jak je pak tento přeložený program spouštěn, mívají často neodolatelné nutkání pomoci překladači a upravit program do efektivněji zpracovávané podoby. Ukazuje se však, že značná část projektů, jejichž vývoj byl předčasně ukončen, zkrachovala právě kvůli takovýmto předčasným snahám o optimalizaci, protože programátoři v zájmu optimalizace vytvářeli kód, který obsahoval řadu skrytý chyb a navíc byl právě kvůli těmto snahám špatně čitelný a modifikovatelný, takže se jej nedařilo v požadovaném termínu odladit. A to už vůbec nahovořím o tom, že současný vývoj optimalizačních překladačů pokročil tak daleko že ruční optimalizace se s ním dá jen těžko srovnat. 2.6 OOP je pro studenty příliš abstraktní a obtížněji je chápou Jeden z oblíbených pedagogických mýtů vychází z přesvědčení, že když něco špatně chápe učitel, budou to ještě hůře chápat studenti. Toto tvrzení je pravdivé pouze v případě, kdy studentům vykládá látku učitel, který ji sám nechápe. Zkušenosti s výukou objektově orientovaného programování na základní škole ale ukazují, že děti žádné problémy s chápáním OOP nemají. Ony totiž hned pochopí, že přirozeně popisuje jim známou skutečnost a nemají problém s takovýmto popisem pracovat.
5 Problémy nastávají až v okamžiku, kdy potřebujeme naučit objektově programovat někoho, kdo už před tím programoval neobjektově. Zkušenosti velkých firem (viz např. [18]) ukazují, že přeškolení klasického programátora na programátora objektově orientovaného trvá v průměru 6 až 18 měsíců. Navíc čím je programátor zkušenější, tím je přeškolení delší (a dražší), protože se musí zbavovat hlouběji zakořeněných návyků. Zkušení programátoři se totiž snaží nejprve interpretovat přednášené konstrukce pomocí konstrukcí, které již znají, takže jim dlouho trvá, než konečně pochopí, že tudy cesta nevede. Pro začátečníky je totiž dobře vysvětlené objektové myšlení mnohem přirozenější než násilný převod zadání do klasických strukturovaných schémat. Před odevzdáním rukopisu prvního vydání knihy [16] do tisku jsem dával tento rukopis číst řadě lidí, abych získal zpětnou vazbu a text ještě případně upravil. Docela mne tehdy překvapilo, že oslovení teenageři neměli s chápáním textu prakticky žádné problémy, kdežto oslovení učitelé programování na základních a středních školách s ním docela zápasili a u řady pasáží požadovali důkladnější vysvětlení. Dospěl jsem tehdy k názoru, že jedním z jejich velkých handicapů je právě jejich znalost strukturovaného programování, která ovlivňuje jejich chápání čteného textu, protože si v textu domýšlejí mezi řádky věci, které text netvrdí a velmi často ani nejsou pravda. 3. Metodika Design Patterns First Metodika Design Patterns First vznikla jako reakce na problémy, s nimiž se v praxi setkáváme u absolventů vyučovaných podle dosavadních metodik. Tito studenti jsou dobře proškoleni v oblastech, které nikdy nepoužijí, ale chybí jim znalosti a především praktické zkušenosti v oblastech, s nimiž se budou denně setkávat. Metodika se současně snaží dodržovat zásady správné výuky publikované např. v [1], [6], [11]. 3.1 Výchozí teze Metodika Design Patterns First vychází z následující posloupnosti základních tezí o současném programování a jeho výuce: 1. Principiální myšlenky je vhodné vysvětlit studentům co nejdříve, aby měli dostatek času na jejich osvojení a dostatek příležitostí na jejich procvičení. (Pedagogická zásada ranního ptáčete viz např. [1]). 2. Současné programování čelí rostoucím požadavkům na vysokou efektivitu vývoje důrazem na snadnou modifikovatelnost a vysokou znovupoužitelnost vytvořených programů. 3. K dosažení vysoké efektivity vývoje snadno modifikovatelných a znovupoužitelných programů výrazně napomáhá používání návrhových vzorů ([4], [15]). Ty se v poslední době stávají jedním z klíčů úspěšného vývoje programů. 4. Abychom studenty co nejlépe naučili pracovat podle zásad moderního programování, měli bychom zanést návrhové vzory do výuky co nejdříve. 5. Návrhové vzory důsledně uplatňují zásadu, že se nemá programovat proti implementaci, ale proti rozhraní.
6 6. Java, používaná jako programovací jazyk většiny vstupních kurzů programování zavádí konstrukci interface, kterou bychom mohli považovat za formalizaci zápisu rozhraní (případně části rozhraní) třídy. 7. Máme-li ve výuce co nejdříve používat návrhové vzory a další aspekty moderního programování, měli bychom co nejdříve vysvětlit programovou konstrukci interface. V současné době převažuje ve světě metodika výuky programování označovaná jako Object First (viz např. [7], [10]). Její velkou předností je, že učí studenty pracovat s objekty ještě dříve, než začnou psát vlastní kód. Mají tedy možnost si osvojit základního ducha objektově orientovaných programů ještě před tím, než je začnou rozptylovat záludnosti syntaxe (viz např. [16]). Nevýhodou metodiky Object First (přesněji nevýhodou stávajících učebnic) je ale to, že po dlouhou dobu zůstává u výuky objektů a práce s nimi a interface vykládá až téměř na závěr výuky, kdy už studenti nemají příliš mnoho šancí jej zažít. 3.2 První cvičení Metodika Design Patterns First proto přebírá od metodiky Object First myšlenku začít kurz s vývojovým prostředím, které umožní pracovat z počátku v interaktivním režimu. V něm se studenti naučí pracovat s objekty a posílat jim zprávy. Současně získají první povědomí o tom, že objektem může být doopravdy vše, co můžeme označit podstatným jménem. Ukážeme jim, že i třída je objekt, a to objekt, který umí vytvářet své instance. Současně jim umožníme nahlédnout pod pokličku objektů a ukážeme jim atributy jako místa, kam si objekty ukládají informace o svém stavu. Veškerý výklad včetně ukázek postupů mají studenti k dispozici ve formě flashových animací, takže si pokud něco z tohoto úvodního bombardování novými koncepcemi a termíny nezapamatují, mohou si vše v klidu domova zopakovat a vyzkoušet. V závěru prvního cvičení si studenti vytvoří svoji první třídu. I tu však vytvářejí v interaktivním režimu. Využíváme toho, že prostředí BlueJ, které používáme, je schopno definovat metody testovací třídy obdobným způsobem, jakým jsou v kancelářských programech definována jednoduchá makra, tj. předvedením postupu, který je třeba naprogramovat a který pak dané prostředí samo naprogramuje. Za domácí úkol pak mají vytvořit vlastní třídu, jejíž instance budou představovat obrázek složený nejméně za čtyř různých objektů: domek, obličej, auto 3.3 Druhé cvičení Na druhém cvičení se studenti naučí psát zdrojový kód třídy a vytvoří své první konstruktory a následně i řadové metody. Naučíme je využívat skrytý parametr this a vysvětlíme princip přetěžování metod. Následně studentům vysvětlíme, jak je k plnohodnotné funkci objektu třeba zavést atributy a ukážeme jim, jak atributy definovat a používat. Při té příležitosti vysvětlíme rozdíl mezi atributem a vlastností objektu a zdůrazníme výhodnost (či spíše povinnost) definovat atributy jako soukromé.
7 Ke konci hodiny jim ukážeme, jak je třeba definovat metody, které vracejí několik hodnot najednou a seznámíme je s jednoduchým návrhovým vzorem Přepravka, který jim ukáže, jak zařídit, aby jejich metody mohly vracet několik hodnot současně. Použití návrhového vzoru Přepravka demonstrujeme na příkladu zjišťování a nastavování pozice a rozměrů objektů. Přitom se ale ukáže, že výchozí projekt, s nímž studenti pracují, je navržen poněkud prostoduše. Objekt, který se má přesunout, se musí nejprve v původní pozici smazat. Tím ale často poškodí vzhled jiných zobrazených objektů, protože je přitom také odmaže. Tak si připravíme motivaci pro následující cvičení, kdy studentům ukážeme, jak tuto nevýhodu elegantně odstranit. Za domácí úkol mají studenti naprogramovat třídu, kterou vytvářeli v minulém domácím úkolu interaktivně, definovat v ní předepsané přetížené verze konstruktorů a metody pro zjišťování a nastavování rozměru a pozice. 3.4 Třetí cvičení Na třetím cvičení si představíme návrhové vzory Prostředník a Pozorovatel, které nabízejí způsob, jak se vypořádat s problémem odmazávání objektů, s nímž jsme se potýkali na konci předchozí hodiny. Koncepce těchto návrhových vzorů je však postavena na doposud neznáme programové konstrukci na interface. Vysvětlíme jim její význam pro současné programování a ukážeme, jak nám tato konstrukce umožní vyřešit naše dosavadní problémy. Ukážeme jim pak, jak jsou zmíněné návrhové vzory implementovány v novém projektu, který již netrpí neduhy předchozího a při změnách pozice a rozměru zobrazených objektů již nic neodmazává. Při té příležitosti je seznámíme s událostmi řízeným programováním a naučíme je psát programy, které nebudou muset neustále zjišťovat, zda ta či ona událost nastala, ale budou se umět dohodnout se zdrojem události, aby je na nastalou událost upozornil v okamžiku jejího vzniku a ony mohly zareagovat. Domácí úkol na této hodině je jednoduchý: upravit definici svých tříd (grafického objektu a testovací třídy), tak, aby plnohodnotně pracovaly s novou verzí knihovny grafických objektů 3.5 Čtvrté cvičení Ve čtvrtém cvičení prohlubujeme chápání pojmu interface a ukazujeme studentům další příklady úloh, které lze elegantně řešit vhodným použitím rozhraní. Seznámíme studenty s návrhovým vzorem Služebník a předvedeme jim, jak je možno stávající objekty elegantně doplnit o funkčnost, kterou dříve někdo naprogramoval. Poté si ukážeme služebníky s komplexnějšími požadavky na obsluhované objekty a předvedeme si, jak můžeme vyjít těmto požadavkům vstříc implementací několika rozhraní a dědičností rozhraní. Studenti tak poznají další možné použití konstrukce interface a pomalu si začnou uvědomovat, ve kterých situacích je vhodné tuto konstrukci do programu začlenit. Začnou pomalu chápat, kde všude lze užitečně využít základní skutečnost, že prostřednictvím rozhraní může objekt deklarovat svoje požadavky na své budoucí spolupracovníky a jak ji využít při návrhu architektury programu.
8 Při zadání domácího úkolu je seznámíme s novým služebníkem (a jím vyžadovaným rozhraním), který zprostředkuje ovládání svěřeného objektu prostřednictvím klávesnice. Studenti mají za úkol implementovat zadané rozhraní a zprovoznit ovládání změny pozice a velikosti jejich grafických objektů z klávesnice. 3.6 Páté cvičení Na dalším cvičení procvičujeme algoritmické konstrukce a práci s kontejnery, konkrétně s množinami a seznamy. Studenti se naučí ukládat do seznamu pozice, kterými prošel jejich objekt při ovládání z klávesnice, a po ukončení klávesnicového řízení pak přehrát celou absolvovanou cestu. Ukážeme jim různé problémy, které mohou v průběhu řešení této úlohy vzniknout. Naučí se přitom pracovat s iterátory a uvědomí si některá jejich omezení, na které je třeba myslet při jejich používání. 3.7 Další cvičení Na následujících cvičeních pak postupně doprobereme základní jazykové konstrukce. Při všech ukázkách a domácích úkolech neustále posilujeme chápání návrhových vzorů a především rozhraní jako základního nástroje pro zefektivnění vývoje podle současných měřítek. Ukazujeme, že dobře navržený program je schopen akceptovat poměrně velké změny zadání bez neustálých dominových efektů vedoucích na nutnost předělání podstatné části programu po každé drobné změně. Ukazujeme jim, že architektura projektu založeného na rozhraních usnadní nejenom reakce na neustále se měnící požadavky zákazníka, ale že umožní i snadnou výměnu celých modulů a vzájemnou zastupitelnost kompatibilních modulů. V neposlední řadě pokračujme v požadavku důsledného testování vytvořených programů. Ukazujeme studentům, jak vytvářet jednotkové testy, a učíme je, jak je možno pomocí zástupných objektů (mock objects) vyzkoušet spolupráci s ostatními moduly projektu dlouho před tím, než budou tyto objektu naprogramovány. Součástí požadavků je u všech domácích úkolů nejenom odevzdání vytvořené třídy, ale současně i odevzdání příslušné testovací třídy, která prověří, že objektu pracuje skutečně tak, jak bylo požadováno. 4. Efekty uvedeného postupu 4.1 Efekty pro studenta Hlavním cílem celé koncepce je prohloubit chápání objektové podstaty současného programování a především pak chápání významu rozhraní. Programátoři, kteří přicházejí do mých přeškolovacích kurzů, většinou znají syntaxi jazyka a vědí, jak mají implementovat rozhraní. Neumějí však ve svých projektech odhalit místa, kdy by sami měli rozhraní definovat a jsou pak překvapeni, čeho všeho se dá takto dosáhnout a jak se pak mnohá řešení zjednoduší.
9 Metodika Design Patterns First se snaží vychovat programátory, kterým jsou tyto postupy vlastní a kteří budou schopni navrhovat programy snadno upravitelné, rozšiřitelné a spravovatelné. Klíčovým cílem celé metodiky je optimalizovat spektrum získaných znalostí a dovedností z hlediska budoucí praxe absolventů. Typickou úlohou programátora většinou není vyřešit nějakou jednomužně zvládnutelnou úlohu na zelené louce. Bývá spíše postaven před nějaký rozsáhlý projekt, na jehož vývoji se podílí více lidí a má pouze doplnit či upravit některou jeho část. Metodika se proto snaží studenty naučit tomu, co budou při takto koncipovaných úlohách potřebovat. Včasné zavedení konstrukce interface nám (mimo jiné) umožní snadno zadávat kolektivní úkoly, na nichž se podílí několik studentů současně. Můžeme proto studentům ukázat, jak postupovat v situacích, kdy má jejich modul spolupracovat s moduly, které ještě nejsou hotové a jak takovou budoucí spolupráci testovat ještě před tím, než je spolupracující modul hotov. 4.2 Efekty pro učitele Jednou z nejnepříjemnějších součástí výuky je vyhodnocování domácích úloha. Je to činnost relativně mechanická, pracná a velmi únavná. Včasné zavedení rozhraní umožňuje koncipovat zadání úloh tak, aby bylo možno velmi snadno a jednoduše automatizovat vyhodnocování odevzdaných řešení. Při vhodně definovaném zadání bývá příprava vyhodnocovacího programu otázkou půl hodiny. Začlenění připraveného programu do vyhodnocovacího rámce, jeho spuštění a následné vyhodnocení všech odevzdaných prací pak zabere pouze několik málo minut prakticky nezávisle na počtu studentů a odevzdaných prací ([14]). 5. Závěr Příspěvek se pokusil vyvrátit některé mýty, kterými mnozí učitelé často argumentují při zdůvodňování toho, proč nechtějí učit objektově orientované programování, anebo proč trvají na tom, že před vysvětlením objektových konstrukcí musí nejprve probrat klasické, strukturované programování. Ukázal, že tento postup je velmi často kontraproduktivní, protože se studenti nejprve učí způsobu uvažování, který pak musejí při přechodu na skutečné objektové programování opustit. Výsledkem je pak buď zbytečná pracnost osvojení si OOP, anebo naopak přijetí mylného předpokladu, že programovat objektově znamená jenom používat třídy a objekty. V závěrečné části seznámil s metodikou Design Pattern First, která se snaží učit programování tak, aby si absolventi maximálně osvojili duch současného objektově orientovaného programování a našli tak co nejlepší uplatnění v praxi. Ukázal, že klíčovou podmínkou takto pojaté výuky je brzké začlenění výkladu návrhových vzorů a její pravidelné používání v řešených programech. To ale vyžaduje včasné zavedení konstrukce interface. Vedlejším efektem aplikace této metodiky pro učitele může být mimo jiné výrazné snížení pracnosti vyhodnocování řešení domácích úloh.
10 Literatura [1] BERGIN, Joseph: Fourteen Pedagogical Patterns for Teaching Computer Science. Proceedings of Fifth European Conference on Pattern Languages of Programs. (EuroPLoP 2000) Irsee [2] DAHL Ole Johan, NYGAARD Kristen: Class and subclass declarations. NCC document. (As presented at the IFIP Working Conference on Simulation Programming Languages, Oslo May 1967). [3] DIJKSTRA Edsger W.: Go To Statement Considered Harmful, Communications of the ACM, Vol. 11, No. 3, March 1968, pp , Elektronickou verzi lze získat např. na [4] GAMMA E.; HELM R.; JOHNSON R.; VLISSIDES J.: Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, ISBN [5] GODDARD, Doug Is it really object oriented?. Data Based Advis. 12, 12 (Dec. 1994), [6] KÖLLING Michael: The problem of teaching object-oriented programming, Part 1: Languages. Journal of Object-Oriented Programming, 11(8): 8-15, 1999 [7] KÖLLING Michael, ROSENBERG John: Guidelines for Teaching Object Orientation with Java. The Proceedings of the 6th conference on Information Technology in Computer Science Education (ITiCSE 2001). Canterbury, [8] NESLON Chris, WELLS Barbara: Developing an Elevator Control System. "Killer Examples" for Design Patterns and Objects First Workshop OOPSLA [9] NYGAARD Kristen: SIMULA, An Extension of ALGOL to the Description of Discrete Event Networks. In Proceedings, IFIP Congress62, pp North-Holland Publ. Comp. [10] PAVLÍČKOVÁ Jarmila, PAVLÍČEK Luboš: Zkušenosti s přístupem object-first v úvodním kurzu programování. Objekty 2005 sborník příspěvků devátého ročníku konference, VŠB Ostrava, ISBN [11] PECINOVSKÝ Rudolf: Výuka objektově orientovaného programování žáků základních a středních škol. Objekty 2003 Sborník příspěvků osmého ročníku konference. Ostrava ISBN [12] PECINOVSKÝ Rudolf: Výuka programování podle metodiky Design Patterns First. Tvorba softwaru 2006 sborník přednášek. ISBN [13] PECINOVSKÝ Rudolf, PAVLÍČKOVÁ Jarmila, PAVLÍČEK Luboš: Let s Modify the Objects First Approach into Design Patterns First, Proceedings of the Eleventh Annual Conference on Innovation and Technology in Computer Science Education, University of Bologna [14] PECINOVSKÝ Rudolf: Metodika Design Patterns First a vyhodnocování studentských úloh. Tvorba softwaru 2007 sborník přednášek. ISBN [15] PECINOVSKÝ Rudolf: Návrhové vzory 33 vzorových postupů pro objektové programování, Computer Press 2007, ISBN [16] PECINOVSKÝ Rudolf: Myslíme objektově v jazyku Java Kompletní učebnice programování pro naprosté začátečníky, 2. aktualizované a rozšířené vydání. Grada ISBN [17] POST Ed: Real Programmers Don't Use Pascal, Datamation 1983, Stručná charakteristika s odkazy na český překlad např. na [18] STROUSTRUP Bjarne: The Design and Evolution of C++, Addison-Wesley, Reading, MA, 1994
11 Annotation First the paper reminds some favorite myths about the object oriented programming presented by teachers who need to justify their unwillingness to teach it. It rebuts these myths and introduces the Design Patterns First methodology. It shows that the key condition of modern programming teaching is early introduction of design patterns and their regular use in presented examples. It needs early introduction of interface, too. This concept allows the students to master a broad range of the tasks which would be otherwise too difficult at the beginning of the course. The paper shows some of them. Simultaneously it shows how the early introduction of the interface simplifies the automation of the of the students tasks evaluation.
Výuka programování pro praxi
Výuka programování pro praxi Rudolf Pecinovský ICZ a.s., 104 00 Praha 4, Hvězdova 1689/2a VŠE, Fakulta informačních technologií, 130 67, Praha 3, nám W. Cuhurchilla 4 rudolf@pecinovsky.cz 1 Úvod Procházíme-li
Generátor kódu. a jeho uplatnění ve výuce programování. Rudolf PECINOVSKÝ rudolf@pecinovsky.cz
Generátor kódu a jeho uplatnění ve výuce programování Rudolf PECINOVSKÝ rudolf@pecinovsky.cz Trendy poslední doby Další a další státy si uvědomují nutnost zařazení výuky programování do učiva základních
Metodika. Architecture First. Rudolf Pecinovský rudolf@pecinovsky.cz
Copyright Rudolf Pecinovský, Soubor: 2014_Comm_PrW_Architecture First Methodology.doc, verze 1.00.2413, uloženo po 9.6.2014 14:43 1 z 39 Metodika Architecture First Rudolf Pecinovský rudolf@pecinovsky.cz
Metodika Architecture First a její podpora v prostředí BlueJ++
Metodika Architecture First a její podpora v prostředí BlueJ++ Rudolf PECINOVSKÝ rudolf@pecinovsky.cz DidInfo 2015 1 Proč prosazuji metodiku Architecture First Technologická signatura Je třeba předvídat
Objektově orientované programování? Co to je?
Objektově orientované programování? Co to je? RUDOLF PECINOVSKÝ 1 1 ICZ a.s. Hvězdova 2a, 140 00 Praha 4; VŠE, nám. W. Churchilla 4, 130 67 Praha 3; Tel.: +420 603 330 090, e-mail: rudolf@pecinovsky.cz;
Programování II. Třídy a objekty (objektová orientovanost) 2018/19
Programování II Třídy a objekty (objektová orientovanost) 2018/19 Osnova přednášky Objektový přístup (proč potřebujeme objekty). Třídy, objekty,... Příklad. Proč potřebujeme objekty? Udržovatelnost softwaru
Vyřešené teoretické otázky do OOP ( )
Vyřešené teoretické otázky do OOP (16. 1. 2013) 1) Vyjmenujte v historickém pořadí hlavní programovací paradigmata a stručně charakterizujte každé paradigma. a) Naivní chaotičnost, špatná syntaxe a sémantika
Výuka programování v jazyce Python
Výuka programování v jazyce Python Tomáš Fortelka RNDr. Jaroslav Icha Školní rok: 2009-10 Abstrakt Bakalářská práce se týká výuky programování v jazyce Python. Na trhu je velké množství knih a různých
MODERN APPROACHES TO TEACHING PROGRAMMING. Rostislav FOJTÍK
RESEARCH ARTICLES MODERN APPROACHES TO TEACHING PROGRAMMING Rostislav FOJTÍK Abstract: The article bases from practical experience of the author teaching programming on secondary and tertiary level of
Úvod. Programovací paradigmata
.. Úvod. Programovací paradigmata Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Cíl: programování efektivně a bezpečně Programovací techniky
VÝUKA PROGRAMOVÁNÍ PODLE METODIKY DESIGN PATTERNS FIRST
VÝUKA PROGRAMOVÁNÍ PODLE METODIKY DESIGN PATTERNS FIRST Rudolf Pecinovský Amaio Technologies, Inc., Třebohostická 14, 100 00 Praha 10, rudolf@pecinovsky.cz ABSTRAKT V současné době převládá ve světě ve
MODERNÍ PROGRAMOVACÍ TECHNIKY
MODERNÍ PROGRAMOVACÍ TECHNIKY Rudolf Pecinovský ICZ a.s., Hvězdova 1689/2a, 140 00 Praha 4, Katedra informačních technologií VŠE Praha rudolf@pecinovsky.cz ABSTRAKT: Umění programovat zahrnuje celou řadu
Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013
Předměty Algoritmizace a programování Seminář z programování Verze pro akademický rok 2012/2013 Verze pro akademický rok 2012/2013 1 Přednášky Jiřina Královcová MTI, přízemí budovy A Tel: 48 53 53 521
Objektově orientovaný přístup
Objektově orientovaný přístup 1 Historie programovacích jazyků 1945: John von Neumann článek o nové metodě pro ukládání programů 1945: Grace Hopper poprvé termín "bug" 1946: Konrad Zuse Plankalkul - první
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE
3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda
1. Lze vždy z tzv. instanční třídy vytvořit objekt? 2. Co je nejčastější příčinou vzniku chyb? A. Specifikace B. Testování C. Návrh D. Analýza E. Kódování 3. Je defenzivní programování technikou skrývání
METHODOLOGY ARCHITECTURE FIRST. Rudolf PECINOVSKÝ
METHODOLOGY ARCHITECTURE FIRST Rudolf PECINOVSKÝ Abstract: The set of tasks solved by computers increases all the time. There are also programming tasks among them. The area, which still resists to automation,
Projekty pro výuku programování v jazyce Java
JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil
Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.
Jakub Klemsa Jan Legerský Objektově orientované programování klemsjak@fjfi.cvut.cz jan.legersky@gmail.com 30. října 2012 návrhový vzor (design pattern) obecné řešení problému, které se využívá při návrhu
Cíl vzdělávacích modulů:
PŘÍLOHA č. 9 OBSAH VZDĚLÁVACÍHO PROGRAMU Projekt rozšiřuje nabídku dalšího vzdělávání prostřednictvím vytvoření vzdělávacího programu se speciální SW aplikací a skripty pro personalisty a vedoucí pracovníky,
1 Strukturované programování
Projekt OP VK Inovace studijních oborů zajišťovaných katedrami PřF UHK Registrační číslo: CZ.1.07/2.2.00/28.0118 1 Cíl Seznámení s principy strukturovaného programování, s blokovou strukturou programů,
Sada 1 - Základy programování
S třední škola stavební Jihlava Sada 1 - Základy programování 01. Základní pojmy a principy programování Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284
Automatizace vyhodnocování studentských úloh
Automatizace vyhodnocování studentských úloh Rudolf Pecinovský ICZ a.s., 104 00 Praha 4, Hvězdova 1689/2a VŠE, Fakulta informačních technologií, 130 67, Praha 3, nám W. Cuhurchilla 4 rudolf@pecinovsky.cz
Cumulant program usnadňující tvorbu série výukových projektů postupně kumulujících funkcionalitu vyvíjeného programu
Cumulant program usnadňující tvorbu série výukových projektů postupně kumulujících funkcionalitu vyvíjeného programu Rudolf Pecinovský ICZ a.s., Na Hřebenech II 1817, 140 00 Praha 4 VŠE Praha, Nám. W.
Vývoj a ověřování metodiky výuky programování
Copyright Rudolf Pecinovský, Soubor: 2016_INF_Architecture First.doc, verze 1.00.2413, uloženo út 19.1.2016 10:03 1 z 11 Vývoj a ověřování metodiky výuky programování Rudolf Pecinovský Informatika XXIX
IB111 Úvod do programování skrze Python Přednáška 13
IB111 Úvod do programování skrze Python Přednáška 13 Programovací jazyky Nikola Beneš 14. prosinec 2016 IB111 přednáška 13: programovací jazyky 14. prosinec 2016 1 / 21 Osnova dnešní přednášky Programovací
Programování II. Modularita 2017/18
Programování II Modularita 2017/18 Modul? Osnova přednášky Vývoj programování Modularita Příklad Vývoj programování Paradigmata programování Jak a proč se jazyky vyvíjejí? V čem se OOP liší od předchozích
IB111 Programování a algoritmizace. Programovací jazyky
IB111 Programování a algoritmizace Programovací jazyky Programovací jazyky Programovací jazyk Prostředek pro zápis algoritmů, jež mohou být provedeny na počítači Program Zápis algoritmu v programovacím
TÉMATICKÝ OKRUH Softwarové inženýrství
TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího
Metodika Design Patterns First v roce 2010
Metodika Design Patterns First v roce 2010 Rudolf Pecinovsky 1 1 Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, Katedra informačních technologií ICZ, Na Hrebenech II 1718/10, 140 00
14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
Současné trendy v metodice výuky programování Úvod Jak začít Nejdříve hardware (Hardware-first) Nejdříve algoritmy (Algorithms-first)
Současné trendy v metodice výuky programování RUDOLF PECINOVSKÝ Vysoká škole ekonomická Praha, Fakulta informatiky a statistiky; Amaio Technologies, Inc; Tel.: +420 603 330 090, e-mail: rudolf@pecinovsky.cz
Aplikace metodiky Design Patterns Fist
Aplikace metodiky Design Patterns Fist Rudolf Pecinovský 1 1 Amaio Technologies Inc., 100 00 Praha 10, Třebohostická 14 VŠE, Fakulta informačních technologií, 130 67, Praha 3, nám W. Cuhurchilla 4 rudolf@pecinovsky.cz
Programování II. Abstraktní třída Vícenásobná dědičnost 2018/19
Programování II Abstraktní třída Vícenásobná dědičnost 2018/19 Osnova přednášky Polymorfismus - důsledky. Abstraktní třída. Vícenásobná dědičnost. Polymorfismus - důsledky Polymorfismus Polymorfismus je
HERNÍ ENGINE PRO TVORBU DIDAKTICKÝCH HER VE FLASHI
HERNÍ ENGINE PRO TVORBU DIDAKTICKÝCH HER VE FLASHI GAME ENGINE FOR CREATING DIDACTIC FLASH GAMES Pavel DOSPIVA, Dominika TALIANOVÁ, Ema ŠTURALOVÁ, Petr NAJMAN Resumé Tento herní engine vznikl jako semestrální
ŠVP Gymnázium Ostrava-Zábřeh. 4.8.16. Úvod do programování
4.8.16. Úvod do programování Vyučovací předmět Úvod do programování je na naší škole nabízen v rámci volitelných předmětů v sextě, septimě nebo v oktávě jako jednoletý dvouhodinový kurz. V případě hlubšího
Uživatelem řízená navigace v univerzitním informačním systému
Hana Netrefová 1 Uživatelem řízená navigace v univerzitním informačním systému Hana Netrefová Abstrakt S vývojem počítačově orientovaných informačních systémů je stále větší důraz kladen na jejich uživatelskou
METODIKA VÝUKY PROGRAMOVÁNÍ NA ROZCESTÍ
METODIKA VÝUKY PROGRAMOVÁNÍ NA ROZCESTÍ Rudolf Pecinovský The paper points out the differences between the taught programming and the programming used in the daily praxis. In the first part it overviews
Výsledky učení (Intented Learning Outcomes) jako klíčový nástroj řízení kvality vzdělávacího procesu. Teaching Excellence
Výsledky učení (Intented Learning Outcomes) jako klíčový nástroj řízení kvality vzdělávacího procesu doc. Ing. Jiří Hnilica, Ph.D. Teaching Excellence Výsledky učení aneb jak jasně a ověřitelně popsat,
Quo vadis programování? Automatizace vyhodnocování studentských úloh
Vaše jistota na trhu IT Quo vadis programování? Automatizace vyhodnocování studentských úloh Rudolf PECINOVSKÝ rudolf@pecinovsky.cz Vladimír Oraný vladimir.orany@gmail.com Vaše jistota na trhu IT Obsah
ALGORITMIZACE A PROGRAMOVÁNÍ
Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení
Katalog vzdělávání 2016 Obsah
Katalog vzdělávání 2016 Obsah Osobnostní rozvoj... 2 1. Prezentační dovednosti... 2 2. Komunikační dovednosti... 2 3. Lektorské dovednosti a kompetence... 2 4. Myšlenkové mapy... 3 IT kurzy... 4 1. Adobe
ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2013 2+2.1 3/14
ZÁKLADY PROGRAMOVÁNÍ Mgr. Vladislav BEDNÁŘ 2013 2+2.1 3/14 Co je vhodné vědět, než si vybereme programovací jazyk a začneme programovat roboty. 1 / 12 0:40 Programování na PC Při programování na PC musíme
INFORMATIKA. Libovolná učebnice k MS OFFICE 200x (samostatné učebnice k textovému procesoru MS Word 200x, tabulkovému procesoru MS Excel 200x).
Cíl předmětu: Cílem předmětu je prohloubit znalosti studentů ze základních aplikačních programů. Jedná se především o pokročilejší nástroje z aplikací MS Word a MS Excel. Jednotlivé semináře se zaměřují
Obsah. Zpracoval:
Zpracoval: houzvjir@fel.cvut.cz 03. Modelem řízený vývoj. Doménový (business), konceptuální (analytický) a logický (návrhový) model. Vize projektu. (A7B36SIN) Obsah Modelem řízený vývoj... 2 Cíl MDD, proč
6 Objektově-orientovaný vývoj programového vybavení
6 Objektově-orientovaný vývoj programového vybavení 6.1 Co značí objektově-orientovaný - organizace SW jako kolekce diskrétních objektů, které zahrnují jak data tak chování objekt: OMG: Objekt je věc (thing).
Tvorba učebnic a kurzů programování
Tvorba učebnic a kurzů programování Rudolf Pecinovský ICZ a.s., Na Hřebenech II 1817, 140 00 Praha 4 VŠE Praha, Nám. W. Churchilla 4, 130 67 Praha 3 rudolf@pecinovsky.cz Abstrakt. Článek rozebírá různé
Jak vyvažovat autonomii a odpovědnost škol a učitelů: hodnocení výsledků vzdělávání
Jak vyvažovat autonomii a odpovědnost škol a učitelů: hodnocení výsledků vzdělávání Jana Straková Ústav pro informace ve vzdělávání a Institut pro sociální a ekonomické analýzy Rozmach plošných testů se
KOMU JE KNIHA URČENA?
7 Kapitola 0. O této knížce KOMU JE KNIHA URČENA? Tuto učebnici jsem vytvářel na základě mých přednášek a úvodních kurzů na vysokých školách i ve firmě moderníprogramování. Většina mých studentů měla malou
Programování II. Polymorfismus
Programování II Polymorfismus Osnova přednášky Vztah přetížení, překrytí a protected přístupu. Co je polymorfismus? Příklad. Přetížení, překrytí, protected Přetížení x překrytí Přetížením řešíme doplnění
Program a životní cyklus programu
Program a životní cyklus programu Program algoritmus zapsaný formálně, srozumitelně pro počítač program se skládá z elementárních kroků Elementární kroky mohou být: instrukce operačního kódu počítače příkazy
IMPLEMENTACE ECDL DO VÝUKY MODUL 6: GRAFICKÉ MOŽNOSTI PC
Vyšší odborná škola ekonomická a zdravotnická a Střední škola, Boskovice IMPLEMENTACE ECDL DO VÝUKY MODUL 6: GRAFICKÉ MOŽNOSTI PC Metodika Zpracoval: Ing. David Marek srpen 2009 Úvod Grafické možnosti
Úvod do programovacího jazyka Python
Úvod do programovacího jazyka Python Co je to Python? Python je objektově-orientovaný programovací jazyk. Tento programovací jazyk je velice výkonný, čitelný a dá se snadno naučit. Jeho použití je velice
Co je to matematika?
Co je to matematika? Hello FIT 2018 Daniel Dombek, Tomáš Kalvoda, Karel Klouda KAM FIT ČVUT 27. září 2018 Přednášející Daniel Dombek Tomáš Kalvoda Úvod Úvod Úvod Blíží se akademický Nový rok! Již příští
VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
UML - opakování I N G. M A R T I N M O L H A N E C, C S C. Y 1 3 A N W
UML - opakování I N G. M A R T I N M O L H A N E C, C S C. Y 1 3 A N W Co je to UML Evoluce UML Diagram komponent Diagram odbavení Diagram tříd Aktivity diagram Stavový diagram Sekvenční diagram Diagram
PRVNÍ ELASTICKÝ INFORMAČNÍ SYSTÉM : QI
PRVNÍ ELASTICKÝ INFORMAČNÍ SYSTÉM : QI Cyril Klimeš a) Jan Melzer b) a) Ostravská univerzita, katedra informatiky a počítačů, 30. dubna 22, 701 03 Ostrava, ČR E-mail: cyril.klimes@osu.cz b) DC Concept
Základy objektové orientace I. Únor 2010
Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných
ČÁST 1. Zahřívací kolo. Co je a k čemu je návrhový vzor 33
Stručný obsah Část 1: Zahřívací kolo Kapitola 1 Co je a k čemu je návrhový vzor 33 Kapitola 2 Zásady objektově orientovaného programování 39 Kapitola 3 Co konstruktor neumí (Jednoduchá tovární metoda Simple
Návrh softwarových systémů - úvod, motivace
Návrh softwarových systémů - úvod, motivace Jiří Šebek, Martin Tomášek Návrh softwarových systémů (B6B36NSS) Obsah Motivace Integrace s ostatními obory SI Kdo / co ovlivňuje cílový SW Modely, metodiky
VYUŽITÍ E-LEARNINGU VE VÝUCE PLANIMETRIE
VYUŽITÍ E-LEARNINGU VE VÝUCE PLANIMETRIE RNDr. Kateřina Dvořáková Gymnázium, Bučovice, Součkova 500, 685 01 Bučovice Abstrakt: Příspěvek pojednává o e-learningovém kurzu s názvem Úvod do planimetrie. Kurz
INOVACE PŘEDMĚTŮ ICT. MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika
Vyšší odborná škola ekonomická a zdravotnická a Střední škola, Boskovice INOVACE PŘEDMĚTŮ ICT MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika Zpracoval: Jaroslav Kotlán srpen 2009s Úvod Modul Programování
5.1.7 Informatika a výpočetní technika. Časové, obsahové a organizační vymezení. ročník 1. 2. 3. 4. hodinová dotace 2 2 0 0
5.1.7 Informatika a výpočetní technika Časové, obsahové a organizační vymezení ročník 1. 2. 3. 4. hodinová dotace 2 2 0 0 Realizuje se vzdělávací obor Informatika a výpočetní technika RVP pro gymnázia.
KOMU JE KNIHA URČENA?
7 Kapitola 0. O této knížce KOMU JE KNIHA URČENA? Tuto učebnici jsem vytvářel na základě mých přednášek a úvodních kursů na Vysoké škole manažerské informatiky a ekonomiky. Většina mých studentů měla malou
Základní grafové algoritmy
i Základní grafové algoritmy Jakub Černý KAM, MFF UK 24. listopadu 2010 Verze 0.95 Homepage http://kam.mff.cuni.cz/ ~ kuba/ka Kontakt: kuba@kam.mff.cuni.cz ii Obsah Úvod v iii iv OBSAH Úvod Text je psán
Analýza a Návrh. Analýza
Analysis & Design Návrh nebo Design? Design = návrh Není vytváření použitelného uživatelského prostředí (pouze malinká podmnožina celého návrhu) Často takto omezeně chápáno studenty nedokáží si představit,
Programování a algoritmizace: úvod
Programování a algoritmizace: úvod 2010 Dnešní přednáška o předmětu, administrativa motivace Cíle předmětu Úvod do programátorského a algoritmického stylu myšlení Obecné principy použitelné v řadě programovacích
Animace ve WPF. Filip Gažák. Ing. Václav Novák, CSc. Školní rok: 2008-09
Animace ve WPF Filip Gažák Ing. Václav Novák, CSc. Školní rok: 2008-09 Abstrakt Hlavním tématem práce bude nový prvek pro tvorbu uživatelského prostředí ve WPF animace. V teoretické části se nejprve seznámíme
Využití OOP v praxi -- Knihovna PHP -- Interval.cz
Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování
KIV/ASWI 2007/2008 Pokročilé softwarové inženýrství. Cíle předmětu Organizační informace Opakování
KIV/ASWI 2007/2008 Pokročilé softwarové inženýrství Přemysl Brada Cíle předmětu Organizační informace Opakování Cíl předmětu Praktické zkušenosti sw proces a iterativní vývoj jaksi mimochodem
PB161 Programování v jazyce C++ Přednáška 7
PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z
Jaký programovací jazyk učit jako první a jak ho učit?
Vojtěch Merunka Katedra informačního inženýrství PEF ČZU Praha Jaký programovací jazyk učit jako první a jak ho učit? strana 1 Motivace dříve strana 2 Motivace... pokračování dnes strana 3 Obsah presentace
Programujeme, a co dál? Dan Lessner
Programujeme, a co dál? Dan Lessner ksvi.mff.cuni.cz/ucebnice ucime-informatiku.blogspot.cz Učebnice informatiky ksvi.mff.cuni.cz/ucebnice Patří programování do všeobecného vzdělávání? Potřebujeme snad
PB161 Programování v jazyce C++ Přednáška 7
PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z
Změna pro Školní vzdělávací program oboru vzdělání L/51 Podnikání - ŠVP platné od
Změnový list ŠVP Číslo změny: 11/2018 Změna pro Školní vzdělávací program oboru vzdělání 64-41-L/51 Podnikání - ŠVP platné od 1. 9. 2015 Část dokumentu: Charakter změny: Platnost změny: Poznámka: Učební
Results of innovation of the course Application software
Zkušenosti z inovace předmětu Aplikační programové vybavení Results of innovation of the course Application software Miroslav Cepl *, Ondřej Popelka Abstrakt Článek popisuje postup a průběžný výsledek
Metodické listy pro předmět Aplikační software 1 (B_ASA)
Metodické listy pro předmět Aplikační software 1 (B_ASA) Cíl předmětu: Cílem předmětu je prohloubit znalosti studentů ze základních aplikačních programů pod Windows, především půjde o použití pokročilejších
Amaio Technologies, Inc., Třebohostická 14, 100 00 Praha 10, rudolf@pecinovsky.cz
JAK EFEKTIVNĚ UČIT OOP Rudolf Pecinovský Amaio Technologies, Inc., Třebohostická 14, 100 00 Praha 10, rudolf@pecinovsky.cz Abstrakt Objektově orientované programování vyžaduje diametrálně odlišný přístup
Moderní formy a metody vzdělávání
Moderní formy a metody vzdělávání S postupným vývojem společnosti se postupně vyvíjí také její nároky na systémy rozvoje lidských zdrojů. Měnící se organizace práce a pracovní doby, výkonnostní nároky
Matematika v programovacích
Matematika v programovacích jazycích Pavla Kabelíková am.vsb.cz/kabelikova pavla.kabelikova@vsb.cz Úvodní diskuze Otázky: Jaké programovací jazyky znáte? S jakými programovacími jazyky jste již pracovali?
Výuka programování střední průmyslové škole. Smíchovská střední průmyslová škola Praha Ing. Helena Brabcová
Výuka programování střední průmyslové škole Smíchovská střední průmyslová škola Praha Ing. Helena Brabcová O co nám jde Vývoje technologií je tak rychlý, že nejsme schopni definovat znalosti, které budou
Moodle uživatelská příručka
Moodle uživatelská příručka Učební text pro studenty dálkového studia OSŠPo Kolín Projekt Zavádění nových forem výuky do dálkového studia, využití e-learningového prostředí pro zefektivnění práce studentů
1. Programování proti rozhraní
1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní
Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března
Polymorfismus Cíle lekce Cílem lekce je vysvětlit význam pojmu polymorfismus jako základní vlastnosti objektově orientovaného programování. Lekce objasňuje vztah časné a pozdní vazby a jejich využití.
Dvouletá retrospektiva podpory učitelů při rozvoji informatického myšlení žáků. Blanka Kozáková Jiří Sumbal
Dvouletá retrospektiva podpory učitelů při rozvoji informatického myšlení žáků Blanka Kozáková Jiří Sumbal Období 2016-2018 v číslech Kurzy ICT 121 Z toho akce zdarma 64 Z toho online 20 Účastníků 1370
TRANSFORMACE RELAČNÍHO DATOVÉHO MODELU NA OBJEKTOVÝ TRANSFORMATION OF RELATIONAL TO OBJECT DATA MODEL
TRANSFORMACE RELAČNÍHO DATOVÉHO MODELU NA OBJEKTOVÝ TRANSFORMATION OF RELATIONAL TO OBJECT DATA MODEL Vít Holub Anotace Článek poskytne čtenáři základní přehled v datových modelech, ukáže výhody a nevýhody
IMPLEMENTACE ECDL DO VÝUKY MODUL 7: SLUŽBY INFORMAČNÍ SÍTĚ
Vyšší odborná škola ekonomická a zdravotnická a Střední škola, Boskovice IMPLEMENTACE ECDL DO VÝUKY MODUL 7: SLUŽBY INFORMAČNÍ SÍTĚ Metodika Zpracoval: Jaroslav Kotlán srpen 2009 Tento projekt je spolufinancován
METODIKA DESIGN PATTERNS FIRST JAK LZE DROBNOU ZMĚNOU VÝKLADU ZLEPŠIT POCHOPENÍ NĚKTERÝCH OBJEKTOVÝCH KONSTRUKCÍ
METODIKA DESIGN PATTERNS FIRST JAK LZE DROBNOU ZMĚNOU VÝKLADU ZLEPŠIT POCHOPENÍ NĚKTERÝCH OBJEKTOVÝCH KONSTRUKCÍ ING. RUDOLF PECINOVSKÝ, CSC. ICZ a.s., Praha 4, Na Hřebenech II 10 VŠE Praha, Fakulta informatiky
SYSTÉM SCREENS SYSTEM SCREENS
SYSTÉM SCREENS SYSTEM SCREENS F. Vaněk 1.LF UK Praha, gyn.por.klinika Abstrakt Systém screens je softwarový nástroj na zvýšení kvality výuky, která je vázána na práci s PC. V základní podobě umožňuje vyučujícímu
Zkoušky YLE. Termíny Zkoušek:
V průběhu měsíce května budou na ZŠ Ostrčilova probíhat mezinárodní jazykové zkoušky Cambridge určené dětem a studentům základních škol. Bude se jednat o jazykové zkoušky YLE (Cambridge Young Learners
Aplikační software 1 (B_ASA)
Metodické listy pro předmět Aplikační software 1 (B_ASA) Cíl předmětu: Cílem předmětu je prohloubit znalosti studentů ze základních aplikačních programů pod Windows, především půjde o použití pokročilejších
CASE. Jaroslav Žáček
CASE Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Co znamená CASE? Definice dle SEI A CASE tool is a computer-based product aimed at supporting one or more software engineering activities
INFORMAČNÍ SYSTÉM VIDIUM A VYUŽITÍ MODERNÍCH TECHNOLOGIÍ
INFORMAČNÍ SYSTÉM VIDIUM A VYUŽITÍ MODERNÍCH TECHNOLOGIÍ Michal Brožek, Dominik Svěch, Jaroslav Štefaník MEDIUM SOFT a.s., Cihelní 14, 702 00 Ostrava, ČR Abstrakt Neustále rostoucí význam sběru dat, možnost
METODIKA DESIGN PATTERNS FIRST A VYHODNOCOVÁNÍ STUDENTSKÝCH ÚLOH
METODIKA DESIGN PATTERNS FIRST A VYHODNOCOVÁNÍ STUDENTSKÝCH ÚLOH Rudolf Pecinovský Amaio Technologies, Inc., Třebohostická 14, 100 00 Praha 10; Katedra informačních technologií VŠE Praha rudolf@pecinovsky.cz
10 Balíčky, grafické znázornění tříd, základy zapozdření
10 Balíčky, grafické znázornění tříd, základy zapozdření Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům balíčkům, grafickému
Objektové programování
Objektové programování - přináší nové možnosti a styl programování - vytváří nový datový typ, který umí vše co standardní datové typy + to co ho naučíme - překladač se k tomuto typu chová stejně jako k
Copyright 2013 Martin Kaňka; http://dalest.kenynet.cz
Copyright 2013 Martin Kaňka; http://dalest.kenynet.cz Popis aplikace Aplikace Pattern Constructor je navržena pro tvorbu osové souměrnosti tak, aby odpovídala úrovni dovedností dětí. Tím, že mohou jednoduše
III/2 Inovace a zkvalitnění výuky prostřednictvím ICT
Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň
VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
Katalog vzdělávacích programů SMC Industrial Automation CZ s.r.o.
Katalog vzdělávacích programů SMC Industrial Automation CZ s.r.o. Strana 1 Úvod Katalog vzdělávacích programů společnosti SMC obsahuje témata pokrývající znalosti pneumatických, elektropneumatických prvků