Ako učím deti Pythone

Ako učím deti Pythone

Moja hlavná práca sa zaoberá dátami a programovaním na R, ale v tomto článku chcem hovoriť o svojom koníčku, ktorý dokonca prináša istý príjem. Vždy ma zaujímalo rozprávať a vysvetľovať niečo priateľom, spolužiakom a kolegom. Takisto mi vždy bolo ľahké nájsť spoločnú reč s deťmi, neviem prečo. Vôbec, považujem výchovu a vzdelávanie detí za jednu z najdôležitejších činností zo všetkých, a aj moja žena je pedagóg. Cca pred rokom som dal inzerát v miestnej skupine na Facebooku, vytvoril som skupinu a začal som učiť Scratch a Python raz týždenne. Teraz mám päť skupín, svoju triedu v dome a individuálne hodiny. Ako som sa dostal k tejto činnosti a ako presne učím deti, vám poviem v tomto článku.

Žijem v Kanade, v meste Calgary, provincia Alberta, takže niektoré momenty budú spojené s miestnou špecifikou.

Priestor

Availability of space for classes was from the very beginning the main problem. I tried to look for offices and classrooms for rent by the hour, but not very successfully. Our university and SAIT — the local equivalent of MIT — rent classrooms with and without computers. The prices there turned out to be not very humane, and in the end, it turned out that the university does not allow minors, and SAIT rents only to its students. So this option was ruled out. There are many office centers that rent meeting rooms and offices by the hour, and there are whole companies that offer a ton of options from a full classroom to a small room for four people. I had hopes since Alberta is an oil province, we have had a sluggish crisis since 2014, and many business spaces are vacant. I hoped in vain; the prices turned out to be so outrageous that I couldn’t even believe it at first. It's easier for the owners to sit on empty offices and pay costs than to lower prices.

V tom momente som si spomenul, že pravidelne platím dane, a či nemá naše drahé štát, presnejšie — mesto Calgary, nejaké výhody. Ukázalo sa, že má. Mesto disponuje arénami na hokej a iné športy, a v týchto arénach sú miestnosti, kde tvrdí ľadoví bojovníci diskutujú o stratégiách budúcich súžení. Skrátka, pri každej aréne je pár miestností so stolmi, stoličkami, bielou tabuľou a dokonca aj umývadlom s kanvicou. Cena je celkom rozumná — 25 kanadských dolárov za hodinu. Pôvodne som sa rozhodol robiť hodiny po hodina a pol, takže som určil cenu za hodinu na 35 dolárov na osobu v skupine s piatimi členmi, aby som pokryl nájom a aj niečo zarobil. Celkovo sa mi páčilo trénovať v arénach, riešilo to jeden z problémov — väčšina rusky hovoriacich žije na juhu, zatiaľ čo ja bývam na severe mesta, takže som vybral arénu približne v strede. Ale boli aj nepríjemnosti. Kanadská byrokracia je dobrá a priateľská, ale aby som to povedal jemnejšie, občas býva trochu neobratná. Nie sú problémy, keď sa človek prispôsobí rytmu a plánuje dopredu, ale niekedy nastanú nepríjemné situácie. Napríklad, na stránke mesta je pohodlné vybrať si čas a miesto, rezervovať miestnosť, ale zaplatiť sa nedá, nijak. Oni sami volajú a prijímajú platby kartou. Mohol by som ísť do kancelárie a zaplatiť hotovosťou. Bol vtipný, ale nie veľmi príjemný moment, keď som čakal na ich telefonát, aby som zaplatil za druhú hodinu, nedočkal som sa, a v kancelárii som meškal pätnásť minút na poslednú chvíľu. Musel som prísť k strážnikovi s drzým výrazom a klamať, že miestnosť je rezervovaná. My, Kanaďania, veríme na slovo, pustili ma dnu bez otázok, ale ja by som to tak nerobil, keby ľudia už nešli na tréning.

Tak som pracoval zimu a jar, a potom prišli zmeny, ktoré boli poslednou kvapkou. Po prvé, kancelária bola uzavretá pre návštevníkov a navrhli, aby som platil po telefóne za rohom. Čakal som najmenej pol hodiny na chodbe, kým som sa dovolal. Po druhé, ak mi predtým milá pani brala platbu za hodinu a pol, teraz zdvihla telefón nejaká dievčina a oznámila, že platba je len za hodinu. V tom čase som mal skupinu buď tri, alebo dve osoby, a navyše $12.5 bolo naozaj potrebných. Som samozrejme nadšený, ale ak ma žena vyhodí na ulicu, nebude koho učiť. Vtedy som bol ešte bez práce.

Rozhodol som sa ísť do knižnice. Knižnice ponúkajú nádherné miestnosti úplne zadarmo, ale je tu jedno ale — nie je dovolené vykonávať komerčnú činnosť. Ani charitatívne organizácie nemajú právo tam zbierať peniaze. Hovorili mi, že to nie je veľmi kontrolované, dôležité je nebrať peniaze na vstupe, ale veľmi nemám rád porušovanie pravidiel. Ešte jeden problém — miestnosti sú často obsadené a ťažko sa plánujú hodiny v rovnakom čase na jednom mieste. Učil som v knižniciach v lete a na začiatku zimy, musel som si vyberať tie, kde je voľno, nakoniec som vymenil päť-šesť knižníc. Potom som začal rezervovať miesto na dva mesiace dopredu, a to sa mi podarilo len v jednej malej knižnici, v ostatných pravidelne neboli voľné miesta na potrebný čas. A tak som sa rozhodol zariadiť si počítačovú triedu doma. Zavesil som tabuľu, kúpil som cez inzerát druhý stôl a pár starých monitorov. Na prácu mi firma kúpila nový výkonný notebook, pretože môj počítač potreboval na analýzu takmer 24 hodín. Takže som mal nový starý počítač, starý starý počítač, laptop, ktorého obrazovku rozbil môj malý syn, a starodávny netbook, na ktorom som sám rozbil obrazovku. Všetky som pripojil k monitorom a všade som nainštaloval Linux Mint, okrem netbooku, na ktorý som dal veľmi ľahkú distribúciu, myslím, Puppy. Mám tiež starý nový laptop, kúpený za 200 dolárov, ktorý som pripojil k televízoru. Dôležité je, že náš majiteľ nedávno vymenil okná a v miestnosti sú teraz namiesto hrozného rozpadávajúceho sa úbohosti nové biele rámy. Obývačku, kuchyňu a druhú spálňu manželka zadržiava ako detský kút, takže celé poschodie bolo čisto pedagogické. Takže, teraz je s priestorom všetko v poriadku, prejdime priamo k vyučovaniu.

Scratch

Začínam učiť základy programovania s jazykom Scratch. Je to jazyk, ktorý používa hotové bloky, vymyslený kedysi na MIT. Väčšina detí už videla Scratch v škole, preto sa pomerne rýchlo osvojuje. Existujú hotové programy a plány vyučovania, ale tie sa mi vôbec nepáčia. Niektoré sú čudné — napríklad vytvor svoju vlastnú rozprávku. Celý program pozostáva z nespočetných blokov. say '' for 2 secondsJe zrejmé, že to vymysleli veľmi kreatívni jednotlivci, ale s takýmto prístupom môžeme naučiť písať klasický indický spagetti kód. Ja však od začiatku vysvetľujem princípy ako D.R.Y. Iné zbierky úloh sú dosť dobré, ale deti rýchlo prenikajú do podstaty a začínajú ich robiť ako na bežiacom páse. Nakoniec za jednu lekciu urobia to, čo mali urobiť za päť. Hľadanie a výber úloh zaberá veľa osobného času. Všeobecne, Scratch viac pripomína nie jazyk, ale IDE, kde je treba len zapamätať si, kde kliknúť a kde čo hľadať. Akonáhle sa žiaci aspoň trocha osvoja, snažím sa ich preladiť na Python. Mám dokonca sedemročné dievča, ktoré píše jednoduché programy v Pythone. V čom vidím prínos Scratchu — sú tam základné pojmy, ktoré sa osvojujú formou hry. Z nejakého dôvodu je pre všetkých bez výnimky veľmi ťažké pochopiť myšlienku premennej. Najprv som túto tému rýchlo prebehol a išiel ďalej, kým som sa nestretol s tým, že vôbec nevedia, čo s tým robiť. Teraz venujem premenným veľa času a neustále sa k nim vraciam. Musím sa venovať hlúpemu bifľovaniu. Na obrazovke mením rôzne premenné a nútim ich hovoriť ich hodnotu. V Scratchi sú tiež kontrolné štruktúry a overovanie hodnôt, ako napr. while, for alebo ak v Pythone. Tieto sa poskytujú pomerne ľahko, len s vnorenými cyklami sú problémy. Snažím sa dávať niekoľko úloh s vnoreným cyklom, aby bolo jeho pôsobenie zrejmé. Po tom prechádzam k funkciám. Aj pre dospelých je pojem funkcie niekedy nejasný, a pre deti ešte viac. Dlho vysvetľujem, čo to vlastne funkcia je, rozprávam o továrni, ktorá prijíma predmety a vydáva výrobky, o kuchárke, ktorá z surových produktov pripravuje jedlo. Potom robíme program "urob sendvič" s ingredienciami a potom z neho robíme funkciu, ktorej sa ingrediencie predávajú ako parametre. Na štúdiu funkcií končím so Scratchom.

Python

S Pythonom je to jednoduchšie. Existuje dobrá kniha Python for Kids, podľa nej aj učím. Všetko je tam štandardne — reťazce, poradie operácií, print(), input() a tak ďalej. Napísaná jednoduchým jazykom, s humorom, deťom sa páči. Má však nedostatok, ktorý je vlastný mnohým knihám o programovaní. Ako v známej vtipe — ako nakresliť sovu. Ovál — kruh — sova. Z príliš jednoduchých pojmov príliš prudký prechod k dosť zložitým konceptom. Mne trvá pár lekcií, kým spojím objekt s metódou bodkou. Na druhej strane, neponáhľam sa, opakujem to isté rôznymi spôsobmi, pokiaľ sa neobjaví aspoň aký-taký obraz. Začínam s premennými a znovu ich umocňujem, už na Pythone. Premenné sú akýsi prekliatie.

Bystrý študent, ktorý pred pár mesiacmi zručne manipuloval s premennými na skratke, teraz hľadí ako baran na nové brány a nemôže spočítať x s y, ktoré sú jasne napísané vyššie na tabuľke. Opakujeme! Čo má premenná? Meno a hodnotu! Čo znamená znamienko rovnosti? Priradenie! A ako skontrolujeme rovnosť? Dvojité znamienko rovnosti! A tak to opakujeme stále a stále, až do úplného osvietenia. Potom prechádzame k funkciám, kde najviac času zabera vysvetlenie argumentov. Pomenované argumenty, podľa pozícií, predvolené a tak ďalej. K triedam sme ešte v žiadnej skupine nedošli. Okrem Pythona podľa knihy sa učíme populárne algoritmy, o tom neskôr.

Vlastne, vyučovanie

Moja hodina je usporiadaná takto — pol hodiny dávam teóriu, preverujem vedomosti, upevňujem prebrané. Hodinu — laboratória. Často ma to zaujme a hovorím do hodiny, potom na praktickú časť zostane pol hodiny. Keď som sa učil Python, prešiel som kurz Algoritmy a dátové štruktúry Chiryanov from MIPT. I really liked his presentation and the structure of his lectures. His idea is that frameworks, syntax, and libraries become outdated. Architecture, teamwork, and version control systems are still premature. Ultimately, what remains are algorithms and data structures that are well known and will always exist in a similar form. I myself remember only integers from institutional Pascal. Since my students are mostly young, aged seven to fifteen, I believe it’s more important for their future to lay the foundations than to rush into writing a platformer in Python. Although, they are more eager for a platformer, and I understand them. I give them simple algorithms — bubble sort, binary search in a sorted list, reverse Polish notation using a stack, but we analyze each one very thoroughly. It turned out that modern children generally don't know how a computer works, so I explain that too. I try to connect several concepts in each lecture. For example, the computer — memory/process — memory made up of cells (I let them hold a memory stick, can you guess how many cells are here) — each cell like a light bulb — it has two states — true/false — and/or — binary/decimal — 8 bits = 1 byte — byte = 256 variations — logical data type on one bit — integers on one byte — float on two bytes — string on one byte — the largest number on 64 bits — a list and a tuple of the previous types. I clarify that in a real computer, everything is somewhat different and there is another amount of memory for these data types, but the main thing is that we ourselves create more complex data types from simpler ones in the process. Data types are perhaps the most complicated thing to remember. Therefore, I start each class with a quick warm-up — one student names a data type, the next provides two examples, and so on in a circle. As a result, I’ve managed to get even the youngest kids to cheerfully shout — float! boolean! seven, five! pizza, car! During the lecture, I constantly pick on one or another student; otherwise, they quickly start picking their noses and looking at the ceiling. Plus, I need to check everyone’s knowledge in between.

My students never cease to amaze me with both their stupidity and unexpected cleverness. Fortunately, cleverness occurs more often.

Chcel som napísať viac, ale aj tak to vyšlo na dlhšie. Rád odpoviem na všetky otázky. Každú kritiku vítam, len prosím — buďme si navzájom tolerantní v komentároch. Je to pekný článok.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster