Ako naučím deti Python?

Ako naučím deti Python?

Moja hlavná práca sa týka dát a programovania R, ale v tomto článku chcem hovoriť o svojom koníčku, ktorý dokonca prináša aj nejaký príjem. Vždy ma zaujímalo rozprávať a vysvetľovať veci priateľom, spolužiakom a spolužiakom. Tiež bolo pre mňa vždy ľahké nájsť spoločnú reč s deťmi, neviem prečo. Vo všeobecnosti som presvedčený, že výchova a vyučovanie detí je jednou z najdôležitejších činností a moja manželka je učiteľka. Asi pred rokom som teda inzeroval v miestnej skupine na Facebooku, vytvoril som skupinu a raz týždenne som začal učiť Scratch a Python. Teraz mám päť skupín, vlastnú triedu doma a individuálne hodiny. Ako som sa k tomuto spôsobu života dostal a ako presne učím deti, vám prezradím v tomto článku.

Bývam v Calgary, Alberta, Kanada, takže niektoré veci budú miestne špecifiká.

izba

Dostupnosť priestoru na cvičenie bola od začiatku hlavným problémom. Skúšal som hľadať kancelárie a učebne na prenájom po hodine, ale bez veľkého úspechu. Naša univerzita a SAIT, miestna obdoba MIT, ponúkajú hodiny s počítačmi aj bez nich. Tamojšie ceny sa ukázali ako málo humánne a nakoniec sa ukázalo, že univerzita neplnoletých nepovoľuje a SAIT vo všeobecnosti prenajíma len vlastným študentom. Takže táto možnosť bola eliminovaná. Existuje mnoho kancelárskych centier, ktoré prenajímajú zasadacie miestnosti a kancelárie na hodinu, existujú celé spoločnosti, ktoré ponúkajú veľa možností od plnej učebne až po miestnosť pre štyroch ľudí. Mal som nádej, keďže Alberta je ropná provincia, od roku 2014 sme v pomalej kríze a mnohé obchodné priestory sú prázdne. Nemal som dúfať; ceny sa ukázali byť také poburujúce, že som im spočiatku ani neveril. Pre majiteľov je jednoduchšie sedieť v prázdnych kanceláriách a platiť náklady, ako vyhadzovať.

V tom momente som si spomenul, že pravidelne platím dane a či tam náš drahý štát, respektíve mesto Calgary niečo má. Ukázalo sa, že skutočne existuje. Mesto má arény pre hokej a iné krasokorčuliarske športy a v týchto arénach sú miestnosti, kde drsní ľadoví bojovníci diskutujú o stratégiách pre budúce bitky. Skrátka, každá aréna má pár miestností so stolmi, stoličkami, bielou tabuľou a dokonca aj umývadlom s rýchlovarnou kanvicou. Cena je celkom božská – 25 kanadských tugrikov za hodinu. Pôvodne som sa rozhodol, že budem robiť hodiny a pol, a tak som cenu za lekciu stanovil na 35 dolárov za hodinu v skupine piatich ľudí, aby som kompenzoval nájomné a niečo si dal do vrecka. Vo všeobecnosti sa mi cvičenie v arénach páčilo, vyriešilo to jeden z problémov – väčšina rusky hovoriacich ľudí žije na juhu a ja na severe mesta, takže som si vybral arénu približne v strede. Vyskytli sa však aj nepríjemnosti. Kanadská byrokracia je dobrá a priateľská, ale, mierne povedané, môže byť trochu nemotorná. Neexistujú žiadne problémy, keď si zvyknete na rytmus a plánujete vopred, ale niekedy prídu nepríjemné chvíle. Napríklad na webovej stránke mesta si môžete pohodlne vybrať čas a miesto a rezervovať si izbu, ale nemôžete v žiadnom prípade platiť. Sami telefonujú a prijímajú platby kartou. Môžete ísť do kancelárie a zaplatiť v hotovosti. Nastal vtipný, ale nie veľmi príjemný moment, keď som čakal na ich výzvu na zaplatenie druhej hodiny, neprišlo a posledný deň som meškal pätnásť minút do kancelárie. Musel som pristupovať k bezpečnosti s drzou tvárou a klamať, že miestnosť je rezervovaná. My Kanaďania ma berieme za slovo; pokojne ma pustili dnu a nič nekontrolovali, ale neurobil by som to, keby ľudia už neboli na ceste do triedy.

Takto som fungoval cez zimu a jar a potom nastali zmeny, ktoré boli poslednou kvapkou. Po prvé, kancelária bola pre návštevníkov zatvorená a za rohom ponúkli prijatie platieb telefonicky. Sedel som na uličke aspoň pol hodiny, kým som prešiel. Po druhé, ak predtým moja drahá teta odo mňa brala platbu na hodinu a pol, teraz nejaké dievča odpovedalo na telefón a povedalo, že platba je len na hodinu. V tom čase bola moja skupina buď traja alebo dvaja ľudia a ďalších 12.5 dolára nebolo vôbec zbytočných. Samozrejme, som ideológ, ale ak ma manželka vyhodí na ulicu, nebude mať kto učiť. Vtedy som bol ešte nezamestnaný.

A rozhodla som sa ísť do knižnice. Knižnice prenajímajú nádherné miestnosti úplne zadarmo, ale má to jeden háčik – nemôžete vykonávať komerčné aktivity. Ani charitatívne organizácie tam nesmú vyberať peniaze. Bolo mi povedané, že to nie je nijak zvlášť kontrolované, hlavnou vecou nie je brať peniaze pri vchode, ale naozaj nemám rád porušovanie pravidiel. Ďalším problémom je, že miestnosti sú často obsadené a je ťažké viesť plánované vyučovanie v jednom čase na jednom mieste. Cez leto a začiatkom zimy som učil v knižniciach, musel som si vybrať tie s priestorom a nakoniec som vystriedal päť-šesť knižníc. Potom som si začal rezervovať miesto dva mesiace vopred a aj tak sa mi to podarilo len v jednej malej knižnici, zvyšok pravidelne nemal miesta na požadovaný čas. A potom som sa rozhodol urobiť počítačovú triedu doma. Zvesil som tabuľu, kúpil druhý stôl a pár starých monitorov z inzerátu. V práci mi firma kúpila nový výkonný notebook, pretože analýza na mojom počítači trvala takmer 24 hodín. Mal som teda nový starý počítač, starý starý počítač, notebook, na ktorom môj malý drvil obrazovku a starodávny netbook, na ktorom som si sám drvil obrazovku. Všetky som ich pripojil k monitorom a všade nainštaloval Linux Mint, okrem netbooku, na ktorý som nainštaloval veľmi ľahký distribučný kit, zdá sa, Pappy. Mám ešte starý nový notebook, kúpený za 200 dolárov, pripojil som ho k TV. Dôležité je aj to, že náš majiteľ nám nedávno vymenil okná a namiesto strašnej, rozpadajúcej sa špiny v izbe máme teraz nové biele rámy. Moja žena si necháva obývačku, kuchyňu a druhú spálňu pre škôlku, takže celé poschodie sa ukázalo ako čisto pedagogické. Takže teraz je všetko v poriadku s priestormi, prejdime k výučbe.

Škrabanec

Začínam učiť základy programovania pomocou jazyka Scratch. Toto je jazyk, ktorý používa hotové bloky, vynájdené naraz na MIT. Väčšina detí už Scratch videla v škole, takže si ho pomerne rýchlo osvoja. Existujú hotové programy a plány hodín, ale vôbec sa mi nepáčia. Niektoré sú zvláštne – vytvorte si napríklad vlastný príbeh. Celý program pozostáva z nespočetných blokov say '<...>' for 2 seconds. Je vidieť, že to vymysleli veľmi kreatívni jedinci, no s týmto prístupom sa môžete naučiť písať klasický indický kód špagiet. Od samého začiatku hovorím o princípoch ako D.R.Y. Ďalšie zbierky úloh sú celkom dobré, ale deti to rýchlo pochopí a začnú ich robiť ako zo samopalu. Výsledkom je, že v jednej lekcii urobia to, čo mali urobiť v piatich. A vyhľadávanie a výber úloh si vyžaduje veľa osobného času. Vo všeobecnosti Scratch viac nepripomína jazyk, ale IDE, kde si stačí zapamätať, kam kliknúť a kde čo hľadať. Hneď ako sú študenti viac-menej v pohode, snažím sa ich preniesť do Pythonu. Dokonca aj moje sedemročné dievčatko píše jednoduché programy v Pythone. Ako výhodu Scratch vidím to, že obsahuje základné pojmy, ktoré sa učia hravou formou. Z nejakého dôvodu je pre každého bez výnimky veľmi ťažké pochopiť myšlienku premennej. Najprv som rýchlo preletel túto tému a pokračoval som ďalej, až som sa stretol s tým, že nevedeli, čo s tým robiť. Teraz trávim veľa času premennými a neustále sa k nim vraciam. Musíte urobiť nejaké hlúpe zabíjanie. Na obrazovke mením rôzne premenné a prinútim ich, aby hovorili svoje hodnoty. Scratch má aj riadiace štruktúry a hodnotové kontroly, ako napr while, for alebo if v pytóne. Sú celkom jednoduché, ale s vnorenými slučkami sú problémy. Snažím sa dávať niekoľko úloh s vnorenou slučkou a tak, aby bola jej činnosť jasná. Potom prejdem k funkciám. Ani pre dospelých nie je pojem funkcie zrejmý a o to viac pre deti. Dlho hovorím o tom, čo je funkcia vo všeobecnosti, hovorím o továrni, ktorá prijíma položky ako vstup a vydáva tovar, o kuchárovi, ktorý vyrába jedlo zo surovín. Potom vytvoríme program „vyrobte si sendvič“ s produktmi a potom z neho vytvoríme funkciu, ktorej sa produkty odovzdávajú ako parametre. Dokončujem učenie funkcií pomocou programu Scratch.

krajta

S pythonom je všetko jednoduchšie. Existuje dobrá kniha Python pre deti, z ktorej učím. Všetko je tam štandardné - linky, poradie operácií, print(), input() atď. Napísané ľahkým jazykom, s humorom, deťom sa páči. Má chybu spoločnú pre mnohé knihy o programovaní. Ako v známom vtipe - ako nakresliť sovu. Ovál - kruh - sova. Prechod od jednoduchých pojmov k pomerne zložitým pojmom je príliš náhly. Pripojenie objektu k metóde bodky mi trvá niekoľko sedení. Na druhej strane sa nikam neponáhľam, opakujem to isté rôznymi spôsobmi, kým sa aspoň nejaký obrázok neposkladá. Začnem s premennými a znova ich vytlačím, tentoraz v Pythone. Premenné sú akýmsi prekliatím.

Šikovný študent, ktorý pred pár mesiacmi šikovne klikal na premenné na Skratch, vyzerá ako baran na novej bráne a nevie pridať X s Y, čo je na tabuli jasne napísané o riadok vyššie. Opakujeme! Čo má premenná? Meno a význam! Čo znamená znamienko rovnosti? Zadanie! Ako skontrolujeme rovnosť? Dvojité znamienko rovnosti! A toto opakujeme znova a znova až do úplného osvietenia. Potom prejdeme k funkciám, kde vysvetlenie o argumentoch trvá najdlhšie. Pomenované argumenty, podľa pozície, predvolene atď. V žiadnej skupine sme sa ešte nedostali do tried. Okrem Pythonu študujeme populárne algoritmy z knihy, o tom neskôr.

Vlastne tréning

Moja hodina je štruktúrovaná takto: pol hodinu dávam teóriu, testujem vedomosti a upevňujem naučené. Je čas na laboratóriá. Často sa nechám uniesť a rozprávam až hodinu, potom mi ostáva polhodina na cvičenie. Keď som sa učil python, sledoval som kurz Algoritmy a dátové štruktúry Khiryanova z MIPT. Veľmi sa mi páčila jeho prezentácia a štruktúra jeho prednášok. Jeho myšlienka je takáto: rámce, syntax, knižnice zastarávajú. Architektúra, tímová práca, systémy na správu verzií – to je ešte skoro. V dôsledku toho zostávajú algoritmy a dátové štruktúry, ktoré sú známe už dlho a vždy budú v podobnej forme. Ja sám si pamätám len celé čísla z inštitútu pascal. Keďže moji študenti sú väčšinou mladí, od siedmich do pätnástich rokov, domnievam sa, že pre ich budúcnosť je dôležitejšie položiť základy, ako rýchlo napísať plošinovku v Pythone. Aj keď viac chcú plošinovku a ja ich chápem. Dávam im jednoduché algoritmy - bublinu, binárne vyhľadávanie v zoradenom zozname, reverznú poľskú notáciu pomocou zásobníka, ale každý z nich analyzujeme veľmi podrobne. Ukázalo sa, že moderné deti v zásade nevedia, ako počítač funguje, tiež vám to poviem. Na každej prednáške sa snažím spojiť viacero konceptov. Napríklad počítač - pamäť/percento - pamäť zložená z buniek (nechám ťa držať pamäťový čip, hádaj koľko je tam buniek) - každá bunka je ako žiarovka - sú dva stavy - pravda/nepravda - a/alebo - binárne/desiatkové - 8 bitov = 1 bajt - bajt = 256 možností - logický dátový typ na jednom bite - celé čísla na jednom byte - float na dva bajty - string na jeden bajt - najväčšie číslo na 64 bitoch - zoznam a n-tica z predchádzajúcich typov. Mám výhradu, že v skutočnom počítači je všetko trochu iné a množstvo pamäte pre tieto typy údajov je iné, ale hlavné je, že sami v procese vytvárame zložitejšie typy údajov z jednoduchších. Typy údajov sú azda najťažšie na zapamätanie. Preto každú hodinu začínam rýchlou rozcvičkou – jeden žiak pomenuje dátový typ, ďalší uvedie dva príklady atď. Vďaka tomu som dosiahol, že aj tie najmenšie deti veselo kričia – vznášaj sa! boolovská hodnota! sedem, päť! pizza, auto! Počas prednášky neustále ťahám najprv jedného alebo druhého, inak sa rýchlo začnú vyberať v nose a pozerať do stropu. A úroveň vedomostí každého je potrebné z času na čas skontrolovať.

Moji študenti ma neprestávajú udivovať svojou hlúposťou a nečakanou inteligenciou. Našťastie častejšie s inteligenciou.

Chcel som napísať viac, ale ukázalo sa, že je to len list. Na všetky otázky rada odpoviem. Každú kritiku všemožne vítam, len vás v komentároch poprosím, aby ste boli k sebe tolerantnejší. Toto je dobrý článok.

Zdroj: hab.com

Pridať komentár