Robov blog
Robert Važan

Programovanie pre deti od 4 rokov

Naučte svoje dieťa programovať. Dnes nie je nič výnimočné, keď 4-ročné dieťa programuje. Samozrejme, na úrovni primeranej veku. Pomôcok je na internete dosť, ale učiteľ je stále nenahraditeľný a najlepšími učiteľmi sú rodičia. Hovorím z vlastnej skúsenosti ako otec.

Poznáte to, keď sa 20-ročný človek nevie lyžovať? Bojí sa postaviť na lyže, že vraj toto nie je preňho, na toto nemá bunky a nikdy to nezvládne. Trápne, však? Pritom keby ho rodičia v piatich rokoch postavili na lyže, vôbec by neprotestoval, rýchlo by sa to naučil a ešte by sa z toho celý čas tešil. Spomeňte si na to, keď budete počuť 15-ročné dievča hovoriť, že programovanie je zložité a ona tomu nerozumie, nie je to pre ňu a nemá na to bunky.

Môže 4-ročné dieťa programovať?

Ľudia si myslia, že je to o nadaní. V skutočnosti už desaťročia prebieha proces, ktorým sa programovanie zosúva do stále nižších a nižších ročníkov. Tu je dôkaz, že ani tí najznámejší programátori tento proces nepredbehli bez ohľadu na akékoľvek nadanie:

To je posledná hranica. S programovaním sa dá začať najskôr od 4 rokov, výnimočne od 3 rokov.

Načo sa mám učiť programovať?

Aj štvorročné deti kladú túto otázku a je správne pravdivo im odpovedať. Stroje máme na to, aby spravili prácu, ktorú potom nemusia robiť ľudia. Stroje sú dnes všade okolo nás (tu pomôže uviesť kopec príkladov), ale v budúcnosti ich bude oveľa viac (a tu môžeme s deťmi snívať, čo všetko by mohli robiť), aby ľudia mohli pracovať stále menej a mali sa stále lepšie. Stroje potrebujú program, ktorý im povie, čo majú robiť (tu pomôže príklad jednoduchého domáceho spotrebiča). No a kto ten program spraví? Kto povie stroju, čo má robiť? Možno práve vaše dieťa a preto sa musí naučiť ako. Začať treba s jednoduchým programom, aby sa dal stihnúť za večer, ale časom sa dá naučiť všetko.

Program v ScratchJr, ktorý nechá mačku skákať
Hello World v roku 2017. Toto sa dá stihnúť za jeden večer aj s 4-ročným úplným začiatočníkom.

My dospelí máme vážnejšie dôvody. Väčšina starých profesií bude automatizovaná. Budú tu jazdiť samoriadiace kamióny a taxíky. Poštu a balíky doručia drony alebo pozemné roboty. Vo fabrikách sa nasadzujú stroje aj tam, kde by bola ľudská práca lacnejšia. Stroje totiž pracujú non-stop, nikdy neprídu do práce ožraté a umožňujú dizajnérovi kdesi v juhokórejskom Soule rýchlo zmeniť výrobný proces vo všetkých fabrikách na svete, ktoré produkt vyrábajú. Programovanie je jedna z mála profesií, ktoré majú stále perspektívu. Programovanie absorbuje iné profesie ako svoje aplikačné oblasti. Alebo naopak, programovanie sa stáva neoddeliteľnou súčasťou iných profesií.

Lego helikoptéra zaznamenáva zdvih na kychynskej váhe
Dron, verzia 0.0.1. Zdvihne 10% svojej hmotnosti.

Ale prečo už v štyroch rokoch? Možno jednoducho preto, že v tomto veku sa deti rady naučia čokoľvek. Programovanie je ako všetky profesie dlhou cestou, ktorú ľudia zvládnu ľahšie, ak začnú skôr. Ja mám ale hlbšie dôvody. Nie je správne zatvárať deti do detského sveta. Ochudobňuje ich to. Pre deti je svet veľké ihrisko a všetko je pre ne hračka. To treba podporiť a dúfať, že si tento prístup zachovajú do dospelosti. Toto je ich svet a oni s ním môžu spraviť čokoľvek. Nechceme z nich spraviť pasívne obete rozvíjajúcej sa umelej inteligencie. Chceme, aby naše deti mali kontrolu nad strojmi, nie naopak.

Čo budete potrebovať

Čas. Deti sa v tomto veku nebudú učiť samé. Potrebujú pri sebe učiteľa. Krúžky sú dostupné od 9-tich rokov a pozornosť učiteľa je tam rozdelená medzi 10 a viac detí. Oveľa lepšie je, keď sa deťom venujú priamo rodičia. Deti takto môžu začať s programovaním skôr, môžu sa mu venovať viac a získajú viac zážitkov za menej starostí. Učiť dieťa programovanie vás bude stáť pár hodín týždenne, niekedy viac, niekedy menej.

Angličtinu. Deti sa nemusia naučiť po anglicky skôr než začnú programovať, ale odporúčam to, ak ešte máte čas, ideálne formou bilingválnej výchovy. V krajnom prípade stačí, keď rodič vie čítať bežnú angličtinu a zvyšok dohľadá v slovníku.

Skoré čítanie. Prvé programovanie je čisto obrázkové, ale časom prejdete na bloky s popismi a potom na textový editor. Slabé čítanie vás vtedy môže zbrzdiť. Našťastie deti sa učia čítať rýchlo a programovanie obnáša len neveľké množstvo fráz, ktoré si rýchlo osvoja. V krajnom prípade im niektoré veci prečítate vy.

Programátorské skúsenosti. Ideálne je, keď dieťa učí profesionálny programátor, ale nie je to na 100% nutné. Programovanie pre deti je jednoduché a vy sa to môžete učiť spolu s dieťaťom. Naštudujte si tému deň vopred a v očiach dieťaťa budete expert. Ak náhodou nebudete vedieť na niečo odpovedať, môžete to proste priznať a sľúbiť, že do zajtra zistíte viac.

Tablet. Tablet striktne povedané nepotrebujete, pretože Android softvér môžete spustiť aj v emulátore, ale so skutočným tabletom máte menej starostí a jeho výhodou je, že sa dá použiť v autobuse alebo na gauči. Stačiť by mal aj 7-palcový tablet za 100€. Venujte pozornosť verzii Androidu.

Počítač. Dá sa použiť aj počítač rodičov, ale dieťa časom bude potrebovať vlastný. Nekupujte mu laptop. Pre deti je oveľa lepší stolný počítač s veľkým monitorom a malou myškou a klávesnicou. Pravé klávesnice pre deti sa nevyrábajú. Tzv. "detské" klávesnice sú v skutočnosti farebné nezmysly s gigantickými klávesami ako pre Shreka. Najbližšie k ideálu sú mini-klávesnice určené na pripojenie k tabletu. Všetko sa dá kúpiť dokopy za 500€. Grafika zatiaľ stačí integrovaná. Ja som fanúšik linuxu od kolísky, ale dobre poslúži aj Windows. Ak sa pri linuxe bojíte problémov s kompatibilitou, kúpte si matičnú dosku s Intel chipsetom a integrovanou Intel grafikou, pripojte počítač do internetu pevným káblom (nie WiFI) a žiadne problémy s kompatibilitou neuvidíte. Odporúčam použiť prehliadač Chrome, pretože dodnes podporuje zastaralú technológiu Flash, ktorú veľa programovacích prostredí pre deti stále používa.

Klávesnica a myš pre deti
Jedinou klávesnicou, ktorá je skutočne pre deti, je klávesnica pre tablety. K počítaču ju treba pripojiť cez micro-USB redukciu. Malé myšky sa bežne predávajú ako cestovné myšky k notebookom.

Tablet

Skôr než sa dostanete k programovaniu, nechajte dieťa, nech sa zoznámi s tabletom prostredníctvom hier a jednoduchých aplikácií ako sú kreslenie, mapy, fotoaparát, galéria a podobne (pre deti je všetko hra). Dieťa bude pri programovaní sústredenejšie, lebo všetky bežné vlastnosti tabletu už bude poznať a nebude sa nimi rozptyľovať. Tlačítka a iné štandardné vizuálne koncepty bude mať v oku a ťahanie a stláčanie v ruke. Hry sú ale nadizajnované ako droga, tak ich obmieňajte a nedovoľte, aby vytláčali zmysluplnejšie aktivity.

Titulná obrazovka Android hry Dr. Panda Teach Me s množstvom objektov reagujúcich na dotyk
Dr. Panda Teach Me - Jedna z podarenejších hier, ktoré motivujú ku stláčaniu všetkého a niečo dieťa naučia. Žiaľ, už nie je dostupná.

ScratchJr - obrázkové programovanie

Najjednoduchšie plnohodnotné prostredie pre programovanie, ktoré odporúčam, je ScratchJr. Začnite jednotlivými príkazmi, žiadne sekvencie. Nechajte dieťa, nech sťahuje bloky do zóny programu a skúša ich stlačiť. Keď mačka na scéne reaguje, komentujte to zľahka a tak uvádzajte dieťa do terminológie a základných konceptov. ScratchJr má veľa blokov a deti baví zisťovať, čo ktorý robí.

ScratchJr program pozostávajúci z jednotlivých blokov
Tu som syna presvedčil, aby si šípky rozložil okolo spoločného stredu. Deti inak málokedy udržiavajú v programe poriadok.

Skôr či neskôr dieťa nechtiac spojí niektoré bloky do krátkej sekvencie. Nechajte ho, nech si vyskúša rozpojenie a spojenie blokov. Keď sekvenciu spustí stlačením, vysvetlite, že všetky príkazy sa vykonajú postupne za sebou. Odtiaľ je už len na krok k štartovaciemu bloku a zelenej zástavke. Tou je možné spustiť sekvencie pre viaceré postavy naraz (pridávajú sa na ľavej strane). S týmito základmi môžete nechať dieťa vyblázniť sa. Ak sa nechytí samé, inšpirujte ho vtipnými námetmi. Deti v tejto fáze programujú opakované príkazy duplikovaním blokov. Zatiaľ ich nezaťažujte slučkami ani číselnými parametrami blokov.

ScratchJr program animujúci viacero monštier
Najdôležitejšia na celom ScratchJr je zábava. Áno, ten chudák so sloními ušami som ja.

Na stránke ScratchJr sa dá nájsť pár námetov na projekty aj s detailnými inštrukciami. Tieto nie sú až také zábavné, ale sú dôležité tým, že prezentujú kompletné programy, o ktorých je možné sa rozprávať. Pokračujeme prvými štrukturálnymi blokmi. Asi najjednoduchším úvodom do slučiek je červený blok "opakovať naveky". Žlté bloky "dotyk cez obrazovku" a "dotyk s inou postavou" posúvajú deti od animácie k interaktívnej hre. Keď dieťaťu dôjde miesto na obrazovke a nemá kam pokračovať s programom, je to vhodný čas ukázať mu posielanie a prijímanie správ, ktoré sa dá zneužiť na predĺženie programu do ďalšieho riadku. Ak ani to nestačí, je čas ukázať parametre príkazov (počet krokov) a slučky.

Basketbalový projekt v ScratchJr, ktorý animuje driblovanie loptou
Realizácia jedného z námetov z webstránky ScratchJr. Táto verzia je vylepšená o hádzanie do koša.

Ďalší level je úmyselné programovanie. Program by sa mal totiž tvoriť s nejakým cieľom, aby bol nielen funkčný, ale aj užitočný. Tu je dobré vytvoriť scénu, v ktorej treba vyriešiť nejaký problém formou programu. Príkladom je bludisko, prechod ducha cez stenu alebo preskočenie prekážky. Prvý raz bude treba debugovať program. Deti spočiatku opravujú program tak, že pridávajú ďalšie bloky. Je dôležité naučiť ich, že program sa testuje po každej malej zmene a vadný program sa opravuje odstránením poslednej zmeny. Toto sú veľmi dôležité zvyky, ktoré neskôr deťom umožnia stavať zložité programy.

Bludisko v ScratchJr
Bludisko je úmyselný program. Je daný cieľ a ten treba dosiahnuť.

So všetkou touto výbavou sa dostávame k tomu, v čom je ScratchJr úžasný - k tvorbe animovaných príbehov. V každej technickej profesii je totiž hore nad všetkými tými technickými detailami šľahačka kreativity. Keď dieťa dokáže zdolať všetky technické prekážky v snahe priviesť k životu svoje predstavy, tak si môžeme povedať, že sme uspeli. Práve to je totiž podstata programovania.

ScratchJr program, kde pes v triede vystraší učiteľa a ten uteká
V tomto animovanom príbehu hľadá pes svoju majiteľku. Prechádza pri tom cez rôzne scény a na každej sa niečo deje.

Lightbot - programovateľné bludisko

Okrem voľne kreatívnych prostredí ako je ScratchJr sa môžete stretnúť aj s iným typom hry, ktorú by som nazval programovateľné bludisko alebo puzzle. Takýchto hier je veľa. Pre tablety existuje napríklad lightbot. V hre nie je možné uhýbať pred problémom, čo je zároveň výhoda aj achylova päta tohto konceptu. Núti to deti prekonávať prekážky, ale ak sa dieťa na niečom zasekne, hra vie byť veľmi frustrujúca. Napriek tomu ma lighbot zaujal, pretože učí niečo, čo ScratchJr opomína: podprocedúry a dokonca rekurzívne slučky. So synom sme nakoniec všetky levely zvládli.

Lightbot level 2-3 s použitím procedúry
Procedúry dajú deťom zabrať, ale s malou pomocou tento level predškolák zvládne.

Ako príde dieťa na to, čo patrí do podprocedúry? Treba hľadať opakujúce sa vzory. Toto mimochodom robia predškoláci v pracovných zošitoch. Majú tam rad symbolov (OXIOXIOX...) alebo domčekov, tvarov a podobne, a majú ich doplniť do konca riadku. Na identifikáciu procedúry môžete program zapísať na papier bez procedúr a potom zakrúžkovať opakujúce sa sekvencie. Z tých bude procedúra. Prípadne kroky vyskladať rovno v lightbote, čo je menej náročné na koncentráciu než kreslenie na papieri, a potom opakujúcu sa sekvenciu preniesť z hlavnej sekvencie do procedúry. Podobne sa dajú vyhľadať aj slučky.

Stolný počítač

Deti si rady poskladajú svoj počítač samé. Ničomu nerozumejú, ale aspoň máte príležitosť povedať pár slov o procesore a pamäti. Rodič musí len aplikovať pastu na procesor, spraviť niektoré fyzicky náročné úkony a dohliadnuť, aby sa nič nezlomilo. Rovnako inštaláciu operačného systému a prvé kroky v ňom zvládnu deti pod dohľadom samé. Kým čakáte na dokončenie inštalácie, môžete porozprávať niečo o operačnom systéme a programoch všeobecne.

Skôr než začnete s programovaním, vybudujte základné návyky pre používanie počítača. Predstavte deťom rôzne aplikácie ako je prehrávanie filmov (toto silno motivuje k samostatnosti pri počítači, tak to využite), prezeranie fotiek stiahnutých z kamery, jednoduché kreslenie (precvičí prácu s myškou), gimp, vectary (má dobrého videosprievodcu) a blender (veľmi pútavé). Ak vie dieťa aspoň trochu čítať, tak začneme pracovať s klávesnicou napríklad vo vyhľadávači obrázkov (môže byť sranda), písaním do chatu (tu môžete blbnúť spolu s dieťaťom), odoslaním mailu niekomu z blízkych a napísaním vtipného príbehu v textovom editore.

Ak ste vynechali tablet, môžete skúsiť Kodable alebo online verziu hry lightbot. Toto sú programovacie puzzle. Pre stolné počítače neexistuje nič tak kreatívne a otvorené ako ScratchJr. ScratchJr by ale mal fungovať vo väčšine emulátorov Androidu, ktoré sú dostupné pre WIndows aj Linux.

Scratch

Scratch umožňuje skladanie programov z blokov, ktoré do seba zapadajú ako lego. Deti tak nemusia vedieť písať a nemusia sa trápiť so syntaktickými chybami ako pri práci s klasickým programovacím jazykom v textovom editore. Na rozdiel od ScratchJr sú ale bloky vo veľkom Scratchi svojou vyjadrovacou silou ekvivalentné plnohodnotnému programovaciemu jazyku. Veľký Scratch má tiež väčšiu knižnicu preddefinovaných blokov. Tu už ide o skutočné dospelácke programovanie, len uspôsobené tak, aby sa s minimom úsilia dali dosiahnuť viditeľné výsledky.

Scratch hra myš a mačka
Mačka naháňa myš. Prvý projekt z knihy Coding for Beginners using Scratch.

Asi najľahší spôsob, ako zoznámiť dieťa so Scratchom, sú bezplatné programovacie hry v projekte Hour of Code. Tieto hry sú takmer všetky založené na niektorom klone Scratchu, komerčnom alebo nekomerčnom, ktorý nahrádza voľnú kreatívnu prácu typickú pre Scratch preddefinovanými úlohami. Samozrejme, takto sa deti programovať nenaučia, ale za tú chvíľu, čo ich to bude baviť, sa naučia pracovať s blokovou štruktúrou Scratch programu, čo nám ako skúsenosť počas prvých hodín bude stačiť. Na limitovanie nudy je lepšie vystriedať viacero týchto hier a nenútiť dieťa dotiahnuť to až do najvyššieho levelu. Na začiatok odporúčam Puppy Adventure. Niečo podobné existuje aj v slovenčine pod menom Galaxy Coder. Zaujímavá je aj geometrická hra Code with Anna and Elsa, reinkarnácia korytnačky Žofky, vhodná pre deti, ktoré vedia počítať s uhlami.

Tynker Puppy Adventure level 12
Puppy Adventure je programovacie puzzle s tou istou pointou ako lightbot na tabletoch.

Tynker má viacero sprievodcov (tutoriálov), ktoré dieťa prevedú projektom krok za krokom. Sprievodca dáva na výber len z niekoľkých možností a tak deťom uľahčuje rozhodovanie. Originálny Scratch sa dá doplniť návodmi z rôznych stránok a kníh. My máme doma Coding for Beginners using Scratch.

Tynker sprievodca Monster High tancom
Tanečná párty Monster High v Tynkeri funguje s hocijakou sekvenciou krokov, takže je bezpečným miestom pre prvé improvizované experimenty.

Po tom všetkom by malo byť dieťa oboznámené so základmi programovania v Scratchi a je čas pristúpiť k tomu najdôležitejšiemu: voľnej improvizácii. Programovanie je kreatívna práca. Začína sa nápadom, ktorý postupne vykresávame do algoritmu a ten následne implementujeme v kóde. Toto je pre dieťa ťažká úloha a pre vás je to príležitosť oboznámiť dieťa s rôznymi technikami, ktoré mu pomôžu k riešeniu.

Ale hlavne je to vždy o zábave, o kreativite, o experimentovaní. Scratch je perfektný pre tvorbu animovaných príbehov rovnako ako ScratchJr. Scratch vie navyše kresliť po scéne a dajú sa pomocou neho robiť síce jednoduché ale pomerne hrateľné hry. Dieťa treba nechať snívať a pomôcť mu pretaviť sny do funkčného programu. Schopnosť programovať neprichádza po vysvetlení nejakých konceptov (to sú technické detaily), ale po početných skúsenostiach, ktoré rozvíjajú algoritmické myslenie a navykajú dieťa na produktívne postupy.

Roboty

Robotika lezie do peňazí, ale je veľmi motivujúca a robí programovanie konkrétne, hmatateľné. Je na vás, či to považujete za rozumnú investíciu. Deti sa naučia programovať aj bez robotov. Robotika je skôr cieľ sám o sebe. Je to aplikačná oblasť programovania, ktorú si môžete zvoliť spomedzi mnohých iných oblastí (web, hry, appky, grafika a vizualizácia, umelá inteligencia, ...).

Pre najmenšie deti je asi najlepšie Lego. Lego Classic je strata času. Deťom dajte Lego Technic hneď ako vyrastú z Dupla. Odporúčam obísť širokým oblúkom lego sady pre spotrebiteľov, ktoré dieťa veľa nenaučia aj keď do nich investujete nemalé peniaze. Oveľa lepšou voľbou sú stavebnice pre školy, ktoré u nás distribuuje Eduxe. Skôr než začnete s robotmi, uveďte dieťa do mechaniky cez stavebnice 9689 Jednoduché stroje a 9686 Jednoduché a hnané stroje. Majú pribalené množstvo návodov pre rôznorodé mechanizmy a stroje, na ktorých môžete vysvetliť základné princípy mechaniky. Deti budú stavať vlastné nápady a keď ich to prestane baviť, zostane vám kopec súčiastok, ktoré sa neskôr zídu.

WeDo 2.0 auto s vlastným pohonom a so senzorom na čele
Improvizovaný robot postavený z WeDo 2.0 súčiastok. Vpredu je senzor vzdialenosti. Na palube je ešte motor a "chytrá" kocka s mikrokontrolérom a batériou.

Pre robotiku odporúčam školsku sadu 45300 WeDo 2.0 namiesto spotrebiteľskej sady Mindstorms. Budete potrebovať tablet s Bluetooth 4.0. Návody už nenájdete na papieri. Všetko je v appke. Niektoré projekty sú s detailnými inštrukciami. Tie odporúčam spraviť ako prvé. Niektoré obsahujú len obrázok výsledného stroja. Tieto vedú dieťa k improvizácii, lebo deti ich nikdy nepostavia úplne rovnako. Deti môžu chcieť hotový model vylepšiť. Podporte ich v tom. Posúva ich to viac k samostatnej práci. Vrcholom je potom stavba vlastných strojov od nápadu po hotový model. Prvé bude asi auto. Približný vzhľad modelu je dobré nakresliť najskôr na papier a upozorniť dieťa, ak je tam niečo nezrealizovateľné.

Program pre WeDo 2.0 riadiaci plachého robota
Program pre WeDo 2.0 pripomína ScratchJr. Tento program riadi plachého robota z obrázku vyššie. Keď zaznamená pohyb, zacúva do krabice, chvíľu počká a potom pomaly vylezie von.

Abstraktné stavové stroje sú veľmi praktické pre modelovanie jednoduchých algoritmov. V akom stave robot začne? Čo bude vtedy robiť? Kedy s tým skončí? V akom stave vtedy bude? Čo urobí v tom stave? Kreslenie stavov a prechodov medzi nimi na papieri je dobrý spôsob ako sa pohnúť ďalej, keď sa dieťa zasekne a nevie poskladať program alebo keď len blúdi a háda.

Nepočúva? Nezaujíma ho to? Nechápe to?

Samozrejme, 4-ročné deti nebudú sedieť v lavici a počúvať výklad. Nemajú žiadnu trpezlivosť, žiadnu dlhodobú motiváciu, žiadne ciele, žiadnu zodpovednosť. Stojí teda za zamyslenie, ako vlastne chceme tak malé deti naučiť niečo tak zložité ako programovanie. Tu je pár rád ako to zvládnuť.

Pamätajte, programovanie má byť hlavne zábava.

Čo ďalej?

Ďalej som sa so synom ešte nedostal. Plán je robiť zaujímavé improvizované projekty v Scratchi, prípadne urobiť niečo z knihy. Mali by sme začať s Arduinom alebo s Raspberry Pi, lebo z lega sme už vyrástli. To bude impulzom na prechod zo Scratchu do textového editora, lebo Scratch nevie komunikovať s microcontrollermi. Alebo by sme mohli skúsiť konvenčnejšie programovanie, napríklad webstránky. Asi by sa mal dať na nejaké súťaže, možno letný tábor, nech vidí aj iné deti s podobným koníčkom.