Jak naučím Python děti?

Jak naučím Python děti?

Moje hlavní práce se týká dat a programování v R, ale v tomto článku chci mluvit o svém koníčku, který přináší i nějaké příjmy. Vždy jsem měl zájem vyprávět a vysvětlovat věci přátelům, spolužákům a spolužákům. Také pro mě bylo vždy snadné najít společný jazyk s dětmi, nevím proč. Obecně se domnívám, že výchova a výuka dětí je jedna z nejdůležitějších činností ze všech a moje žena je učitelka. Asi před rokem jsem tedy inzeroval v místní facebookové skupině, vytvořil skupinu a začal jednou týdně učit Scratch a Python. Nyní mám pět skupin, vlastní třídu doma a individuální lekce. Jak jsem se k tomuto způsobu života dostal a jak přesně učím děti, vám povím v tomto článku.

Bydlím v Calgary, Alberta, Kanada, takže některé věci budou místní specifika.

Pokoj

Od začátku byla hlavním problémem dostupnost prostoru pro cvičení. Zkoušel jsem hledat kanceláře a učebny k pronájmu po hodině, ale bez velkého úspěchu. Naše univerzita a SAIT, místní ekvivalent MIT, nabízejí kurzy s počítači i bez nich. Tamní ceny se ukázaly jako nepříliš humánní a nakonec se ukázalo, že univerzita nezletilé nepovoluje a SAIT vesměs pronajímá pouze vlastním studentům. Takže tato možnost byla eliminována. Existuje mnoho kancelářských center, která pronajímají zasedací místnosti a kanceláře na hodinu, existují celé společnosti, které nabízejí spoustu možností od plné učebny až po místnost pro čtyři osoby. Doufal jsem, protože Alberta je ropná provincie, od roku 2014 jsme v pomalé krizi a mnoho obchodních prostor je prázdných. Neměl jsem doufat, ceny se ukázaly být tak pobuřující, že jsem jim zpočátku ani nevěřil. Pro majitele je snazší sedět v prázdných kancelářích a platit náklady, než vyhazovat.

V tu chvíli jsem si vzpomněl, že pravidelně platím daně a jestli tam náš drahý stát, respektive město Calgary něco má. Ukázalo se, že skutečně existuje. Ve městě jsou arény pro hokej a další krasobruslařské sporty a v těchto arénách jsou místnosti, kde drsní válečníci na ledě diskutují o strategiích pro budoucí bitvy. Zkrátka každá aréna má pár místností se stoly, židlemi, bílou tabulí a dokonce i dřezem s varnou konvicí. Cena je docela božská – 25 kanadských tugriků za hodinu. Původně jsem se rozhodl, že budu dělat hodiny a půl, takže jsem stanovil cenu za lekci na 35 dolarů za hodinu ve skupině pěti lidí, abych kompenzoval nájemné a strčil něco do kapsy. Obecně se mi cvičení v arénách líbilo, vyřešilo to jeden z problémů - většina rusky mluvících lidí žije na jihu a já bydlím na severu města, takže jsem zvolil arénu přibližně uprostřed. Byly ale i nepříjemnosti. Kanadská byrokracie je dobrá a přátelská, ale mírně řečeno může být poněkud nemotorná. Nejsou žádné problémy, když si zvyknete na rytmus a plánujete dopředu, ale občas nastanou nepříjemné chvíle. Například na webu města si můžete pohodlně vybrat čas a místo a zarezervovat pokoj, ale nemůžete v žádném případě platit. Sami telefonují a přijímají platby kartou. Můžete jít do kanceláře a zaplatit v hotovosti. Nastal vtipný, ale nepříliš příjemný okamžik, když jsem čekal na jejich výzvu k zaplacení druhé lekce, nepřišlo a poslední den jsem měl patnáct minut zpoždění v kanceláři. Musel jsem k ochrance přistupovat s drzou tváří a lhát, že pokoj je rezervovaný. My Kanaďané to bereme za slovo; pustili mě klidně dovnitř a nic nekontrolovali, ale neudělal bych to, kdyby lidé už nebyli na cestě do třídy.

Takto jsem fungoval přes zimu a jaro a pak nastaly změny, které byly poslední kapkou. Za prvé, kancelář byla pro návštěvníky uzavřena a oni nabízeli, že budou přijímat platby telefonicky za rohem. Než jsem prošel, seděl jsem v uličce alespoň půl hodiny. Zadruhé, když ode mě dříve drahá teta brala hodinu a půl platbu, teď nějaká dívka zvedla telefon a řekla, že platba je pouze na hodinu. V té době byla moje skupina buď tři nebo dva lidé a dalších 12.5 dolaru nebylo vůbec zbytečných. Samozřejmě jsem ideolog, ale když mě manželka vyhodí na ulici, tak nebude mít koho učit. Tehdy jsem byl ještě nezaměstnaný.

A rozhodl jsem se jít do knihovny. Knihovny pronajímají nádherné místnosti zcela zdarma, ale má to jeden háček – nemůžete provozovat komerční aktivity. Ani charitativní organizace tam nesmějí vybírat peníze. Bylo mi řečeno, že to není nijak zvlášť kontrolováno, hlavní věcí je nebrat peníze u vchodu, ale opravdu nerad porušuji pravidla. Dalším problémem je, že místnosti jsou často obsazené a je obtížné vést naplánované hodiny v jeden čas na jednom místě. Přes léto a začátkem zimy jsem učil v knihovnách, musel jsem si vybrat ty s prostorem a nakonec jsem vystřídal pět nebo šest knihoven. Pak jsem začal rezervovat místo dva měsíce dopředu a i tak jsem to stihl jen v jedné malé knihovně, zbytek pravidelně neměl místa na požadovanou dobu. A pak jsem se rozhodl udělat počítačovou třídu doma. Pověsil jsem desku, koupil druhý stůl a pár starých monitorů z inzerátu. V práci mi firma koupila nový výkonný notebook, protože analýza na mém počítači trvala téměř 24 hodin. Takže jsem měl nový starý počítač, starý starý počítač, notebook, na kterém moje malá drtila obrazovku, a starodávný netbook, na kterém jsem si sám drtil obrazovku. Všechny jsem je připojil k monitorům a všude nainstaloval Linux Mint, kromě netbooku, na který jsem nainstaloval velmi lehký distribuční kit, zdá se, Pappy. Mám ještě starý nový notebook, koupený za 200 dolarů, připojil jsem ho k televizi. Důležité také je, že náš majitel nám nedávno vyměnil okna a místo strašlivé, rozpadající se špíny v místnosti máme nyní nové bílé rámy. Obývací pokoj, kuchyň a druhou ložnici si manželka nechává pro mateřskou školu, takže celé patro se ukázalo jako čistě pedagogické. Nyní je tedy s areálem vše v pořádku, přejděme k výuce.

Poškrábat

Začínám učit základy programování pomocí jazyka Scratch. Toto je jazyk, který používá hotové bloky, vynalezené najednou na MIT. Většina dětí už Scratch viděla ve škole, takže si to docela rychle osvojí. Existují hotové programy a plány lekcí, ale vůbec se mi nelíbí. Některé jsou zvláštní – vytvořte si například vlastní příběh. Celý program se skládá z bezpočtu bloků say '<...>' for 2 seconds. Je vidět, že to vymysleli velmi kreativní jedinci, ale s tímto přístupem se můžete naučit psát klasický indický kód špaget. Od samého začátku mluvím o principech jako DRY.Další sbírky úkolů jsou docela dobré, ale děti rychle pochopí podstatu a začnou je dělat jako ze samopalu. Výsledkem je, že v jedné lekci udělají to, co měli udělat v pěti. A hledání a výběr úkolů zabere hodně osobního času. Obecně Scratch spíše nepřipomíná jazyk, ale IDE, kde si stačí zapamatovat, kam kliknout a kde co hledat. Jakmile jsou studenti více či méně v pohodě, snažím se je přenést do Pythonu. I moje sedmiletá holčička píše jednoduché programy v Pythonu. Jako přínos Scratche vidím to, že obsahuje základní pojmy, které se učí hravou formou. Z nějakého důvodu je pro každého bez výjimky velmi obtížné pochopit myšlenku proměnné. Nejprve jsem rychle přelétl téma a pokračoval, až jsem se setkal s tím, že ani nevěděli, co s tím dělat. Nyní trávím hodně času proměnnými a neustále se k nim vracím. Musíte udělat nějaké hloupé zatloukání. Na obrazovce měním různé proměnné a nechávám je říkat své hodnoty. Scratch má také kontrolní struktury a kontroly hodnot, jako např while, for nebo if v pythonu. Jsou docela snadné, ale existují problémy s vnořenými smyčkami. Snažím se zadávat několik úkolů s vnořenou smyčkou a tak, aby její akce byla jasná. Poté přejdu k funkcím. Ani pro dospělé není pojem funkce samozřejmý a tím spíše pro děti. Dlouho mluvím o tom, co je funkce obecně, mluvím o továrně, která přijímá položky jako vstup a vydává zboží, o kuchaři, který vyrábí jídlo ze surovin. Pak uděláme program „udělej sendvič“ s produkty a pak z toho uděláme funkci, které se produkty předají jako parametry. Dokončuji učení funkcí pomocí Scratch.

Python

S pythonem je vše jednodušší. Existuje dobrá kniha Python pro děti, ze které učím. Všechno je tam standardní - linky, pořadí operací, print(), input() atd. Psáno lehkým jazykem, s humorem, dětem se líbí. Má chybu společnou mnoha knihám o programování. Jako ve známém vtipu - jak nakreslit sovu. Ovál - kruh - sova. Přechod od jednoduchých konceptů k poměrně složitým konceptům je příliš náhlý. Připojení objektu k metodě tečky mi trvá několik relací. Na druhou stranu nikam nespěchám, opakuji to samé různě, dokud se nesejde alespoň nějaký obrázek. Začnu s proměnnými a znovu je zatluču, tentokrát v Pythonu. Proměnné jsou svým způsobem prokletí.

Chytrý student, který před pár měsíci obratně klikal na proměnné na Skratch, vypadá jako beran u nové brány a neumí sečíst X s Y, což je na tabuli jasně napsané o řádek výše. opakujeme! Co má proměnná? Jméno a význam! Co znamená rovnítko? Úkol! Jak kontrolujeme rovnost? Dvojité rovnítko! A toto opakujeme znovu a znovu až do úplného osvícení. Poté přejdeme k funkcím, kde vysvětlení o argumentech trvá nejdéle. Pojmenované argumenty, podle pozice, ve výchozím nastavení a tak dále. V žádné skupině jsme ještě nedosáhli tříd. Kromě Pythonu studujeme oblíbené algoritmy z knihy, o tom později.

Vlastně trénink

Moje lekce je strukturovaná takto: Přednáším půl hodiny teorii, testuji znalosti a upevňuji naučené. Je čas na laboratoře. Často se nechám unést a mluvím až hodinu, pak zbývá půl hodiny na cvičení. Když jsem se učil python, sledoval jsem kurz Algoritmy a datové struktury Khiryanov z MIPT. Moc se mi líbila jeho prezentace a struktura jeho přednášek. Jeho myšlenka je tato: frameworky, syntaxe, knihovny zastarávají. Architektura, týmová práce, systémy pro správu verzí – to je ještě brzy. V důsledku toho zůstávají algoritmy a datové struktury, které jsou známé již dlouhou dobu a vždy budou v podobné podobě. Sám si pamatuji jen celá čísla z institutu pascal. Protože moji studenti jsou většinou mladí, od sedmi do patnácti let, domnívám se, že pro jejich budoucnost je důležitější položit základy, než rychle napsat plošinovku v Pythonu. I když, oni chtějí plošinovku víc a já je chápu. Dávám jim jednoduché algoritmy - bublinu, binární vyhledávání v seřazeném seznamu, reverzní polskou notaci pomocí zásobníku, ale každý z nich analyzujeme velmi podrobně. Ukázalo se, že moderní děti v zásadě nevědí, jak počítač funguje, také vám to řeknu. Na každé přednášce se snažím propojit několik pojmů dohromady. Například počítač - paměť/procenta - paměť tvořená buňkami (nechám tě držet paměťový čip, hádej, kolik je tam buněk) - každá buňka je jako žárovka - jsou dva stavy - pravda/nepravda - a/nebo - binární/desítková - 8bit = 1 bajt - byte = 256 možností - logický datový typ na jednom bitu - celá čísla na jednom bajtu - float na dva bajty - string na jeden bajt - největší číslo na 64 bitech - seznam a n-tice z předchozích typů. Mám výhradu, že ve skutečném počítači je vše poněkud jiné a velikost paměti pro tyto datové typy je různá, ale hlavní je, že my sami v procesu vytváříme složitější datové typy z jednodušších. Datové typy jsou možná nejobtížněji zapamatovatelné. Každou hodinu proto začínám rychlou rozcvičkou – jeden žák pojmenuje datový typ, další uvede dva příklady a tak dále v kroužku. Díky tomu jsem docílil toho, že i ty nejmenší děti vesele křičí – plav! booleovský! sedm, pět! pizza, auto! Při přednášce neustále tahám nejprve jednoho nebo druhého, jinak se rychle začnou dloubat v nose a koukat do stropu. A úroveň znalostí každého je třeba tu a tam zkontrolovat.

Moji studenti mě nikdy nepřestanou udivovat svou hloupostí a nečekanou inteligencí. Naštěstí častěji s inteligencí.

Chtěl jsem napsat víc, ale ukázalo se, že je to jen list. Veškeré dotazy rád zodpovím. Jakoukoli kritiku všemožně vítám, jen vás prosím o větší toleranci k sobě v komentářích. To je dobrý článek.

Zdroj: www.habr.com

Přidat komentář