Rudolf Pecinovský: Zkušenosti z dalšího roku výuky OOP

čtvrtek 19. května 2005 ·

V říjnu loňského roku vyšla učebnice, která vycházela ze seriálu, jenž tu před nějakou dobou proběhl. Od té doby jsem dostal řadu mailů s dotazy i připomínkami. Několik učitelů se dokonce ozvalo, že by podle této učebnice chtěli v příštím roce učit. Chtěl bych tu proto shrnout zkušenosti z dalšího roku výuky objektově orientovaného programování (OOP) a případně vyvolat diskusi těch, kteří o takové výuce přemýšlejí.

Povinná učebnice

Když už jsem se zmínil o učebnici, tak s ní také začnu. Zavedl jsem ji pro děti v kroužku jako povinnou. Učebnice řadu věcí zjednodušila:

  • Když se někdo na hodině zcela nesoustředí nebo mu něco vypadne, má se doma kam podívat.
  • Nemusím se na hodině zabývat pasážemi, které nevyžadují zvládnutí nějakých dovedností, ale spíše zapamatování si nějakých faktů (moc jich není, ale najdou se). Nyní pouze odkážu děti na učebnici, protože vím, že kdybych jim něco jenom vyjmenovával před tabulí, stejně to cestou domů zapomenou.
  • Odpadají problémy s těmi, kterým připadá tempo výkladu příliš pomalé. Když chtějí pokračovat rychleji, odkážu je na nějakou pasáž v učebnici, kterou si mohou doma nastudovat a pak při hodině řešit své vlastní úlohy.

Elektronická třídnice

V letošním kroužku jsem zavedl novinku, která se sice netýkala přímo programování, ale výuce v lecčems pomohla. Zavedl jsem totiž elektronickou třídnici, která je permanentně vystavena na webu a rodiče o ní vědí. Kdykoliv si tedy mohou zjistit, jak si jejich holoubátko stojí v porovnání s ostatními, co bylo posledně zadáno za domácí úkol, co bylo tématem posledních hodin a na co se chystáme příště.

Elektronická třídnice se hodila i marodům, kteří se mohli podívat, co se bralo na poslední hodině a pokud měli chuť, tak si alespoň přečíst příslušnou pasáž v učebnici. (Mohli, ale udělal to jen jeden.)

Přiznám se, že jsem si tím na sebe upletl bič, protože se děti svým příbuzným i spolužákům chlubily s tím, že se o nich píše na webu, a kdykoliv jsem zapomněl třídnici aktualizovat a připsat jim příslušné body za docházku a donesené domácí úkoly, hned mne další hodinu uháněly. (Připomínám, že se u mne v kroužku počet bodů přidělených za kvalitu programu násobí počtem žáků, kteří úkol nepřinesli, takže někdy lze i za průměrný program získat zajímavý počet bodů.)

Postup výuky

Postup výuky jsem oproti učebnici trochu změnil. Přiměli mne k tomu profesionální programátoři, které paralelně učím v placených kurzech. Pozoroval jsem na nich, že když začnu učit příliš brzy dědičnost, s chutí zapomenou na rozhraní a snaží se řadu úloh řešit pomocí dědičnosti, i když by použití rozhraní bylo v dané situaci výhodnější. Přitom moderní programování prosazuje použití dědičnosti až v situacích, kdy ostatní postupy nevedou k rozumnému výsledku.

V letošním kroužku jsem proto přesunul výklad dědičnosti až na konec (přesněji až na příští rok) a místo toho jsem rozšířil množinu úloh, při jejichž řešení jsme používali rozhraní.

Současně jsem rozšířil i počet probíraných návrhových vzorů. Oproti učebnici jsme probrali návrhový vzor Pozorovatel a Strategie a mnohem podrobněji jsme se seznámili s návrhovým vzorem Zástupce.

Příklady

Inovoval jsem trochu příklady. Na počátku výuky jsme nevytvářeli strom, který je v učebnici, ale jako nejjednodušší objekt jsme zvolili semafor. Protože semafor je živý, připadala taková úloha dětem zajímavější a ještě zajímavější pro ně bylo, když jsme pak tvořili silnice a začali umísťovat semafory na křižovatky.

Před Vánocemi si děti navrhly svá vlastní auta, která naučily jezdit. Pak jsme vylepšili rozhraní, děti doplnily pár metod, které reagovaly na stisk kláves, a začaly se svými auty závodit po uzavřeném okruhu.

Školní rok končíme návrhem dopravního hřiště, po kterém budou jejich auta samostatně jezdit, zastavovat u semaforů, dávat si přednost a vůbec simulovat řádný provoz. To ale nejspíš letos nezvládneme dokončit, takže budeme mít zajímavý výchozí bod pro příští rok.

Ti, kterým tempo nevyhovovalo a dočetli si učebnici sami, začali před měsícem vytvářet známou hru, v níž se na šachovnicové hrací ploše prohazují diamanty tak, aby tvořily vodorovné či svislé trojice a "vícetice".

Tato úloha sice na první pohled vypadá jednodušeji než dopravní hřiště těch pomalejších, ale to je jenom zdání. Tito pokročilejší programátoři totiž na rozdíl od svých "pomalejších" kolegů nevyužívají žádné předpřipravené moduly a vytvářejí celou hru od počátku sami. Přitom se za chodu seznamují s různými specialitami, které jsem v začátečnické učebnici vůbec neprobíral – např. s akčními výčtovými typy.

Sbírka úloh

Pomalu přemýšlím nad tím, že bych měl všechny příklady upravit do publikovatelného tvaru a někde vystavit. Největším problémem výuky programování je totiž nedostatek vhodných (nejlépe řešených) příkladů, na nichž by bylo možno látku demonstrovat.

Zhruba před dvěma lety jsem zkoušel dát přes Českou školu dohromady nějakou sbírku osvědčených úloh. Přišla jediná odpověď. Teď je situace ještě horší, protože OOP na základních a středních školách skoro nikdo neučí a vysokoškolské příklady jsou většinou buď příliš abstraktní nebo zase příliš složité. Rozhodl jsem se proto postupně učesat použité příklady do publikovatelného tvaru (tj. např. s kompletizovanými dokumentačními komentáři) a vystavit je na počátku příštího školního roku na svém webu.

Přiznejme si, že je to dost práce. Docela bych proto přivítal, kdyby se mi ozvali ti, kteří se rozhodli učit OOP a chtěli by tyto příklady využívat, protože vytvářet je jenom pro vlastní uspokojení by se mi nechtělo.

Dopředu ale varuji, že tyto příklady budou asi nepoužitelné pro školení tvůrců klikacích programů ve Visual Basicu či Delphi. Budou totiž předpokládat, že žáci jsou vedeni k objektovému myšlení.

Prozatím počítám s tím, že bych připravil semafor a následné křižovatky, autíčka a jejich závody, jednotlivé etapy vývoje dopravního hřiště, hru sestavování diamantů, házení kostkou a Tetris (poslední dvě hry jsou sice vyvinuty pro kurz programování mobilních telefonů, ale nemělo by být těžké je upravit i pro desktopy – třeba se toho nějaké dítě chytne).

Kudy dál? – Telefony!

Když jsme se letos na konci roku s dětmi domlouvali, kudy půjdeme dál, projevily přání naučit se převádět své programy na mobilní telefony. Většina z dětí v kroužku již vlastní telefony programovatelné v Javě a ti ostatní to berou za vítanou záminku, která jim umožní takový telefon na rodičích vymámit.

Knihovna grafických tříd, kterou jsem použil v učebnici, je naštěstí takovému převodu nakloněna, protože nepoužívá skoro nic z toho, co by v mobilních telefonech nebylo. Teď už zbývá jediná věc: najít potřebný čas.



Rudolf Pecinovský

0 komentářů:

Č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.