Učíme děti programovat - stručný přehled možností

Všichni přeci chceme, aby naše děti uměly programovat. (Kdo nechce nemusí číst dál.)

Programováním myslím, aby uměly algoritmicky myslet, uměly trochu zápasit s technikou a zvládaly používat počítače a telefony i pro automatizaci běžných činností. A postupně se učily počítačové jazyky, protože jak říká známé české přísloví: "kolik počítačových jazyků znáš, tolikrát jsi počítačem."

Ale jak je to naučit? Od škol tohle úplně čekat nemůžeme. Byť jsou světlé výjimky, tak ve většině se informatice věnuje tak hodina týdně a ta se spotřebuje maximálně na základní ovládání počítače. V některých městech existují nadřazenecké kluby mladých techniků, ale to nemusí být všude

Takže nezbývá než děti učit sám. Pokud jste došli ke stejnému závěru a tápete co k tomu použít, tak se můžete inspirovat v tomto seznamu. Obsahuje to co jsem s mými dětmi za posledních asi 5 let postupně prošel s mými dětmi, kterým je aktuálně 12 let.

Pochopitelně budu strašně rád za jakékoliv další tipy.

Co jsem hledal:
  • učební pomůcku, která by mne - nepedagoga - trochu vedla
  • něco k čemu si děti mohou sednout i samy beze mne
  • něco co je bude přirozeně motivovat

Code Studio

Určitě doporučuji https://studio.code.org/courses. Jedná se o projekt, který se snaží naučit děti programovat a poskytuje k tomu:
  • Prostředí postavené na blocky programování, kdy děti skládají příkazy jako jakési puzzle.
  • Komplexně zpracované posloupnosti lekcí. Ty obsahují jak samotné úlohy, tak různé aktivity s papírem a tužkou, motivační videa atd.
Je to částečně lokalizováno do češtiny, ale doporučuji ponechat anglicky. Obsahu je pak mnohem více a navíc učit se anglicky dětem neuškodí.

Prostředí blocky vypadá asi takto:


Pomocí jednoduchých příkazů dítě musí dostat veverku k oříšku. Ano tohle je na CodeStudio super. Úlohy využívají všeho co je mezi dětmi populární. Takže řešíte Minecraft, StarWars, Dobu ledovou, .... atd. Pro děti je to zábavnější než Robot Karel. Kromě úloh typu šachovnice se vyskytují úlohy na malování - známá želva.

Postupně se to zesložiťuje, přibývají funkce, cykly, výuka rozklady problému top-down, podmínky, proměnné, atd. Vše velmi pozvolna a nenásilně.

Ale tam to nekončí. CodeStudio nabízí i PlayLab nebo AppLab. To jsou už relativně komplexní IDE, kde lze postupně vyvinout hru nebo web aplikaci. Vypadá to asi takto.



A co je na tom nejlepší? Ta hra nebo appka funguje. Mohou poslat odkaz kamarádům, mohou s tím machrovat na telefonu ve škole. 

Jednoduché blbosti, kdy mají na telefonu něco co kluk sám vyrobil. Je tam třeba obrázek jejich školy a po kliknutí se ozve výbuch a je tam animace dinosaura. WOW.

Na takovýchto ptákovinách se děti učí event driven programovéní, ladění a krokování programů a tvorbu jednoduchých UI. 

Obrovskou výhodou CodeStudia je, že se můžete registrovat jako učitel a tím mít přístup k  metodickým poznámkám, materiálům atd. Začít učit svoje děti je fakt snadné a stačí na to prohlížeč a trocha angličtiny.

A pěkné je i to, že je možné se podívat na zdrojový kód pot těmi bloky. Což je javascript a funguje to i tak, že v kódu lze i psát. Tedy si dítě postupně může začít zkoušet místo klikání i psaní kódu.

Kodu

Zkoušeli jsme i https://www.kodugamelab.com/. Jedná se o výukové prostředí od Microsoftu, kde lze dělat jednoduché hry. Bohužel to neklaplo. Mně se to líbilo, ale na děti to bylo složité a nějak je to nechytilo. Možná to ještě přijde. Každopádně to zkuste, je to pěkné.

Unity

Poslední zajímavý pokus s dětmi je unity. K tomu mne inspirovali kolegové, kteří v tom vyvíjejí různé 3D věci pro virtuální realitu. Ale je to velmi komplexní IDE, kde lze vyvíjet hry a animace.

A je to naprosté WOW. Stačí si stáhnout Unity a pak začít podle https://unity3d.com/learn/tutorials



Velmi rychle uděláte 3D "kulečník" nebo docela pěknou klasickou space střílečku. Děti si pak hrají s fyzikou, modelováním světa, mixováním hudby atd.

Skriptování se děje v C# nebo UnityScriptu, což je prakticky opět javascript. Na dvanáctileté děti je to ještě relativně komplexní, ale když jim člověk trochu pomůže s unity API, tak to funguje.

Navíc to hodně rozvíjí další dovednosti. Angličtinu, matematiku a fyziku. Kluci strávili několik hodin experimentováním s tím, kdy koule přeskočí ohrádku. Myslím, že stovky nastavování parametrů váhy, rychlosti, gravitace a dalších parametrů fyzikálního modelu jim něco dalo.

Tutor - něco z české zahrádky

Na adrese https://tutor.fi.muni.cz/index.php najdete po registraci překvapivě propracovaný systém různých úloh. Některé z nich dají zabrat i člověku, co se programováním živí. 



Z této bohaté nabídky pro děti doporučuji:

  • Robot Karel - absolutní klasika na procedurální programování, ale řekl bych, že toto je lépe zpracované v kurzech CodeStudio. Nicméně čeština může býti výhodou.
  • Robotanik - velmi rafinovaná věc, která primárně učí rekurzi a pochopení fungování zásobníku instrukcí. Je to trochu hardcore, ale když to dětem vysvětlíte, je to super. A vyšší levely dají zabrat i dospělákovi.
  • Želva - opět klasika, ale opět se toto lépe učí v CodeStudio.
Zle zajímavé jsou i různé matematické hříčky, regulární výrazy atd. Celé to má mírné mouchy v uživatelském rozhraní, ale zase je to česky a velmi pěkně to vede od jednoduchých ke složitým.

Jako zajímavost uvedu, že od projektu Tutor se odštěpily dva projekty:
  • Robomise (https://robomise.cz/) - zábavé programování raketky pomocí bloků.
  • Umímeprogramovat (https://www.umimeprogramovat.cz/) - začínající komerční projekt, který obsahuje nějaké  úlohy z Tutora a mimo to i procvičování matematiky, češtiny, angličtiny a faktů z dějepisu. 

Lego NXT / EV3

Pojďme ale k robotům. Ono totiž programování je pěkné, ale jakmile se hýbe robot, tak se prostě hýbe robot. A to je jiná liga.

Začali jsme tím, že jsme u jednoho příbuzného našli staré Lego RXC. Z toho jsme postavili prvního robotka a začali jsme stavět. První robot vypadal nějak takhle.



Trochu problém byl v čem jej programovat. To co dodává LEGO je takové divné grafické rohraníNašli jsme vynikající projekt Brixcc (http://bricxcc.sourceforge.net/). Ten umožňuje programovat Lego Roboty (a nejen je) pomocí jazyků blízkých jazyku C. Konrétně:
  • NQC (Not Quite C) pro Lego RXC
  • NXC (Not eXactly C) pro Lego NXT a EV3
Velmi rychle jsme narazili na limity starého Lego RXC a zakoupil jsem stavebnici Lego NXT. Ta je již modernější a funguje se systémem Lego technics.

Lze programovat buďto přímo v programu od LEGO a nebo opět v Brixcc. S tím jsme se hodně vyblbli. Ono udělat robota aby jel rovně z zabočil doprava je legrace. A děti tak nějak přirozeně baví stavět. 

Lego NXT (a jeho následník EV3) obsahuje řídící jednotku ke které jsou připojit senzory na jedné straně a motory na druhé straně. Senzory jsou typicky:
  • barevný senzor
  • detektor světlosti vhodný pro sledování čáry
  • tlačítka
  • ultrazvokový dálkoměr
  • mikrofon
  • ...
Ve výsledku můžete udělat stovky projektů. Tančíky, autířka, robotické ruky, plottery a mnoho dalšího. Hodně inspirace naleznete zde: http://www.nxtprograms.com/. Tento web obsahuje jak instrukce ke stavění tak programy.

Třeba takto vypadá robot sledující hranu pomocí světelného senzoru.



Bohužel to má i nějaké nevýhody na které je dobré upozornit:
  • Cena - není to levné, platíte za značku lego. Stavebnice stojí asi deset tisíc. Ale každý další senzor stojí strašně moc.
  • Programovací prostředí. Lego dodává svůj grafický nástroje na programování. Ten mi prostě přijde špatný. Je krásný pro první kroky, ale jakmile se člověk snaží o cokoliv složitějšího, je to totálně nepřehledné.  Takže jsme spíše programovali v Briccx. Ale to je taková postarší a také to občas trochu štve.
  • Připojení robota k počítači - buďto používáte USB a nebo bluetooth. BT připojení je ale takové na baterky. Padá to, nefunguje to.
  • Rozšiřitelnost - připojit jakýkoliv senzor, který není LEGO je komplikované. 

MakeBot

Výše uvedené nevýhody mne nakonec motivovaly k nákupu Mbota. Jedná se o stavebnici robotů postavenou nad Arduinem. Detaily zde: http://store.makeblock.com/


Stavebnice připomíná známý Merkur. Nosníky jsou eloxovaný hliník, spojený šroubky. A na to dáte Arduino Mega, kterému se již napojí desítky senzorů a pochopitelně motory.

Programovat to celé můžete pomocí klasického Arduino IDE a nebo lze použít mBlock postavený nad MIT projektem Skratch, což je opět blokové programování jako jsme měli u CodeStudia. Existuje i nějaký způsob programování v Pythonu, ale to jsem zatím nezkoumal.

Pokud si pořídíte robota s bluetooth, tak můžete pomocí mBlocku posílat příkazy bezdrátově. A funguje to. Na rozdíl od lega, kde to je dosti na baterky.

Obrovskou výhodou je pochopitelně je i to, že je to prostě Arduino. Takže máte k dispozici desítky senzorů, které stojí pár korun.

Kolem MakeBlocku je velká komunita a mraky návodů jak a co dělat. 

O výsledky se podělím v nějakém dalším článku.



Komentáře