
Moje hlavní práce je spojena s daty a programováním v R, ale v tomto článku se chci podělit o své hobby, které dokonce přináší nějaký příjem. Vždy mě bavilo vyprávět a vysvětlovat věci přátelům, spolužákům a kolegům. Také jsem vždy měl snadnou komunikaci s dětmi, nevím proč. Obecně si myslím, že výchova a vzdělávání dětí je jednou z nejdůležitějších činností, a navíc moje žena je učitelka. Asi před rokem jsem dal inzerát v místní skupině na Facebooku, sestavil jsem skupinu a začal učit Scratch a Python jednou týdně. Teď mám pět skupin, svou učebnu doma a individuální lekce. Jak jsem se k tomu dostal a jak děti učím, povím vám v tomto článku.
Žiji v Kanadě, v Calgary, provincie Alberta, takže některé momenty budou spojeny s místními specifiky.
Prostor
Zajištění místa pro výuku bylo od začátku hlavním problémem. Snažil jsem se hledat kanceláře a učebny k pronájmu na hodinu, ale moc úspěšně to nešlo. Naše univerzita a SAIT — místní ekvivalent MIT — pronajímají učebny s počítači i bez. Ceny se ukázaly jako dost vysoké a nakonec jsem zjistil, že univerzita nepouští nezletilé, a SAIT pronajímá pouze svým studentům. Tento variant tedy vypadl. Existuje mnoho kancelářských center, které pronajímají zasedací místnosti a kanceláře na hodinu, a jsou celé firmy, které nabízejí spoustu možností od plnohodnotné učebny po místnost pro čtyři osoby. Měl jsem velké naděje, protože Alberta je ropná provincie a od roku 2014 procházíme pomalou krizí a mnoho komerčních prostor je neobsazených. Zbytečně jsem doufal, ceny byly tak šílené, že jsem to zprvu ani nevěřil. Vlastníkům dává smysl raději nechat prostory prázdné a hradit náklady, než soutěžit cenami.
V tu chvíli jsem si vzpomněl, že pravidelně platím daně, a jestli náhodou není něco u našeho drahého státu, přesněji řečeno – u města Calgary. Ukázalo se, že je. Město má arény pro hraní hokeje a různých bruslařských disciplín, a v těchto arénách jsou místnosti, kde přísní ledoví válečníci diskutují o strategiích budoucích bitev. Zkrátka, u každé arény je pár místností se stoly, židlemi, bílou tabulí a dokonce dřezem s konvicí. Cena je více než přijatelná – 25 kanadských dolarů za hodinu. Původně jsem se rozhodl dělat lekce po jeden a půl hodině, takže jsem stanovil cenu za lekci na 35 dolarů na osobu ve skupině pěti lidí, abych pokryl náklady na pronájem a něco si dal do kapsy. Celkově mě bavilo cvičit v arénách, to vyřešilo jeden z problémů – většina rusky mluvících žije na jihu, zatímco já bydlím na severu města, takže jsem vybral arénu zhruba uprostřed. Mělo to ale i svá úskalí. Kanadská byrokracie je dobrá a přátelská, ale abych to řekl jemně, může být občas trochu nemotorná. Není problém, když si zvyknete na rytmus a plánujete dopředu, ale občas se objeví nepříjemné chvíle. Například na webu města si snadno můžete vybrat čas a místo, rezervovat místnost, ale zaplatit nelze, vůbec. Oni sami zavolají a přijmou platbu kartou. Můžete zajet do kanceláře a zaplatit hotově. Byl tu zábavný, ale ne moc příjemný moment, kdy jsem očekával jejich telefonát, abych zaplatil za druhou lekci, ale nedočkal jsem se, a v kanceláři jsem na poslední chvíli přišel o patnáct minut pozdě. Musel jsem s drzým výrazem přistoupit k ochrance a lhát, že místnost je rezervována. My Kanaďané věříme na slovo, pustili mě v klidu dál a nic neprověřovali, ale já bych to takto nedělal, kdyby lidé už k lekci nejeli.
Tak jsem se věnoval výuce zimu a na jaře, a pak přišly změny, které se staly poslední kapkou. Zaprvé, kancelář byla uzavřena pro návštěvníky a nabídli, že platbu přijmou telefonicky za rohem. Čekal jsem alespoň půl hodiny na chodbě, než jsem se dovolal. Zadruhé, zatímco dříve milá paní brala platbu za hodinu a půl, nyní zvedla telefon nějaká dívka a prohlásila, že platba je pouze za jednu hodinu. V té době jsem měl ve skupině buď tři, nebo dva lidi, a navíc $12,5 nebylo vůbec zanedbatelných. Jsem samozřejmě ideově zaměřený, ale pokud mě žena vyhodí na ulici, nikdo nebude učit. Tehdy jsem ještě byl bez práce.
A rozhodl jsem se jít do knihovny. Knihovny pronajímají krásné místnosti zcela zdarma, ale je tu jedno ale — nelze tam vykonávat komerční činnost. Ani charitativní organizace nemají právo tam vybírat peníze. Říkali mi, že to až tak nekontrolují, hlavní je, že tam přímo nevybíráte peníze na vstup, ale já opravdu nerad porušuji pravidla. Další problém je, že místnosti jsou často obsazené a je těžké organizovat lekce podle rozvrhu na jednom místě v jeden čas. Učil jsem v knihovnách v létě a na začátku zimy, musel jsem vybírat ty, kde bylo místo, nakonec jsem změnil pět až šest knihoven. Pak jsem začal rezervovat místo na dva měsíce dopředu, a to se mi podařilo jen v jedné malé knihovně, v ostatních pravidelně nebylo místo ve správný čas. A tehdy jsem se rozhodl udělat počítačovou třídu doma. Pověsil jsem tabuli, koupil ze seznamu druhý stůl a pár starých monitorů. Práce mi firma koupila nový výkonný notebook, protože můj počítač potřeboval na analýzu skoro 24 hodin. Takže jsem měl nový starý počítač, starý starý počítač, notebook, jehož obrazovku rozbil můj malý, a starý netbook, na kterém jsem rozbil obrazovku já sám. Všechny jsem připojil k monitorům a nainstaloval všude Linux Mint, kromě netbooku, na který jsem dal úplně lehkou distribuci, myslím, že Puppy. Mám ještě starý nový notebook koupený za 200 dolarů, připojil jsem ho k televizi. Ještě je důležité zmínit, že náš majitel nám nedávno vyměnil okna, a v pokoji máme nyní místo hrozného rozpadlého odpadu nové bílé rámy. Obývací pokoj, kuchyň a druhou ložnici manželka udržuje pro dětskou školku, takže celé patro je pedagogicky zaměřené. Takže nyní je s prostorem vše v pořádku, přejděme k vyučování.
Scratch
Začínám s učením základů programování pomocí jazyka Scratch. Je to jazyk, který používá hotové bloky, byl vynalezen na MIT. Většina dětí už Scratch viděla ve škole, takže se rychle osvědčuje. Existují hotové programy a plány lekcí, ale mně se vůbec nelíbí. Jedny jsou divné — vytvoř si svou vlastní příběh, například. Celý program tvoří nespočetné bloky. say '' for 2 seconds. Je jasné, že to vymysleli velmi kreativní osobnosti, ale s takovým přístupem lze naučit psát klasický indický spaghetti kód. Já od samého začátku vyprávím o principech jako D.R.Y. Jiná sbírka úloh je také docela dobrá, ale děti rychle pochopí podstatu a začnou je dělat, jako by z kulometu. Výsledkem je, že za jednu lekci udělají to, co měly udělat za pět. A na vyhledávání a vybírání úloh trávím hodně osobního času. Vůbec, Scratch více připomíná ne jazyk, ale IDE, kde je třeba si jen zapamatovat, kam kliknout a kde něco hledat. Jakmile se žáci více méně uvedou do obrazu, snažím se je přenést na Python. Mám dokonce sedmiletou holčičku, která píše jednoduché programy v Pythonu. Co vidím jako přínos Scratche, jsou v něm základní pojmy, které se osvojí hravou formou. Pročsi je všem bez výjimky velmi těžké pochopit myšlenku proměnné. Zpočátku jsem tuto tematiku rychle probíhal a šel dál, dokud jsem se nesetkal s tím, že vůbec nevědí, co s tím dělat. Teď věnuji proměnným hodně času a neustále se k nim vracím. Musím se zabývat tupým bušením. Na obrazovce měním různé proměnné a nutím je říkat jejich hodnotu. Také v Scratch existují kontrolní struktury a kontroly hodnot, jako while, for nebo if v Pythonu. Jsou dávány dost snadno, jen s vnořenými cykly bývají problémy. Snažím se dát několik úloh s vnořeným cyklem, aby bylo jeho působení názorné. Poté přecházím k funkcím. I pro dospělé může být pojem funkce nejasný, a pro děti tím spíše. Dlouho se rozplývám, co vlastně funkce je, vyprávím o továrně, která dostává na vstupu předměty a vydává zboží, o kuchaři, který z syrových ingrediencí dělá jídlo. Pak vytvoříme program „udělej sendvič“ s ingrediencemi a poté z něj uděláme funkci, které předáváme ingredience jako parametry. Na studiu funkcí končím se Scratchem.
Python
S Pythone je to jednodušší. Existuje dobrá kniha Python for Kids, podle níž učím. Všechno je standardní — řetězce, pořadí operací, print(), input() a atd. Napsáno jednoduchým jazykem, s humorem, dětem se to líbí. Má však nevýhodu, která je vlastní mnoha knihám o programování. Jak v známém vtipu - jak nakreslit sovu. Ovál - kruh - sova. Příliš prudký přechod od jednoduchých pojmů k poměrně složitým konceptům. Na to, že se objekt spojuje s metodou tečkou, potřebuji několik hodin. Na druhou stranu, nespěchám, opakuji to samé víckrát, dokud se neobjeví alespoň nějaký obraz. Začínám u proměnných a znovu je probírám, už v Pythonu. Proměnné jsou jakýsi prokletí.
Bystrý student, který před pár měsíci obratně zvládal proměnné na scratchi, teď kouká jako telátko na nová vrata a nemůže spojit x s y, které jsou jasně napsané na tabuli o řádek výše. Opakujeme! Co má proměnná? Jméno a hodnotu! Co znamená znak rovnosti? Přiřazení! A jak zkontrolujeme rovnost? Dvojitý znak rovnosti! A tak opakujeme znovu a znovu, až do úplného osvícení. Potom přecházíme k funkcím, tam nejvíc času zabere vysvětlování argumentů. Pojmenované argumenty, podle pozic, s výchozími hodnotami atd. Do tříd jsme v žádné skupině ještě nedošli. Kromě Pythonu podle knihy se učíme populární algoritmy, o tom více dále.
Vlastně vzdělávání
Hodina u mě probíhá takto - půl hodiny dám teorii, ověřuji znalosti, upevňuji to, co jsme prošli. Hodina - laboratoře. Často mě to baví a přednáším hodinu, pak zbyde na praktickou část půl hodiny. Když jsem se učil Python, shlédl jsem kurz Algoritmy a datové struktury Chirjanova z MFTI. Velmi se mi líbilo jeho podání a struktura přednášek. Jeho myšlenka je taková — rámce, syntaxe, knihovny — zastarávají. Architektura, týmová práce, systémy version control — zda je to brzy. Nakonec zůstávají algoritmy a datové struktury, které jsou dávno známé a budou vždy v podobném tvaru. Já sám z institutního Pascala si pamatuji jen celé čísla. Protože moji žáci jsou většinou mladí, od sedmi do patnácti let, považuji za důležitější položit základy pro jejich budoucnost, než co nejdříve napsat platformer v Pythonu. I když, oni chtějí platformer víc a já je chápu. Dávám jim jednoduché algoritmy — bublinkové, binární vyhledávání v seřazeném seznamu, zpětnou polskou notaci pomocí zásobníku, ale každý se podrobně rozebíráme. Ukázalo se, že moderní děti vůbec nevědí, jak počítač funguje, také o tom vyprávím. Snažím se v každé přednášce spojit několik pojmů dohromady. Například, počítač — paměť/proces — paměť z buněk (dávám jim podržet modul paměti, hádejte, kolik zde je buněk) — každá buňka jako žárovka — má dva stavy — pravda/nepravda — a/nebo — binární/desetinné — 8 bitů = 1 byte — byte = 256 variant — logický datový typ na jednom bitu — celé číslo na jednom byte — float na dvou bytech — string na jednom byte — největší číslo na 64 bitech — seznam a tuple z předchozích typů. Upozorňuji, že v reálném počítači je všechno trochu jinak a jiné množství paměti pro tyto datové typy, ale hlavní je, že my sami v procesu vytváříme složitější datové typy z jednodušších. Datové typy jsou pravděpodobně to nejsložitější, co je třeba si zapamatovat. Proto každou lekci začínám rychlým zahřátím — jeden žák řekne datový typ, další přinese dva příklady, a tak dále dokola. Nakonec jsem dosáhl toho, že i ti nejmladší děti energicky vykřikují — float! boolean! sedm, pět! pizza, auto! Během přednášky neustále kontroluji to jednoho, pak druhého, jinak brzo začnou škrábat nos a dívat se na strop. A úroveň znalostí každého musí být mezi tím kontrolována.
Moji žáci mě nepřestávají překvapovat jak svou hloupostí, tak neočekávanou bystrostí. Bystrostí, naštěstí, častěji.
Chtěl jsem napsat více, ale už to vyšlo jako dlouhý text. Rád odpovím na všechny otázky. Jakoukoli kritiku vítám, jen prosím — buďme k sobě v komentářích shovívaví. Je to milý článek.
Zdroj: habr.com
