Kako otroke učim Python

Kako otroke učim Python

Moje glavno delo je povezano s podatki in programiranjem v R, vendar v tem članku želim govoriti o svojem hobiju, ki celo prinaša nekaj dohodka. Vedno me je zanimalo pripovedovanje in razlaganje prijateljem, sošolcem in sošolcem. Tudi z otroki mi je bilo vedno lahko najti skupni jezik, ne vem zakaj. Na splošno menim, da je vzgoja in poučevanje otrok ena izmed najpomembnejših dejavnosti, moja žena pa je učiteljica. Tako sem se pred približno enim letom oglasil v lokalni Facebook skupini, ustanovil skupino in začel poučevati Scratch in Python enkrat na teden. Zdaj imam pet skupin, svoj razred doma in individualne ure. Kako sem prišel do tega načina življenja in kako točno učim otroke, vam bom povedal v tem članku.

Živim v Calgaryju v Alberti v Kanadi, zato bodo nekatere stvari lokalne posebnosti.

Soba

Razpoložljivost prostora za vadbo je bila glavna skrb že od začetka. Poskušal sem iskati pisarne in učilnice za najem po urah, vendar nisem imel veliko uspeha. Naša univerza in SAIT, lokalni ekvivalent MIT, ponujata predavanja z in brez računalnikov. Tamkajšnje cene so se izkazale za premalo humane in na koncu se je izkazalo, da univerza ne dovoljuje mladoletnikov, SAIT pa na splošno oddaja le svojim študentom. Tako je bila ta možnost odpravljena. Veliko je pisarniških centrov, ki najemajo sejne sobe in pisarne na uro, obstajajo cela podjetja, ki ponujajo kup možnosti od polne učilnice do sobe za štiri osebe. Imel sem upanje, saj je Alberta naftna provinca, od leta 2014 smo v mirni krizi in veliko poslovnih prostorov je praznih. Ne bi smel upati, cene so se izkazale za tako nezaslišane, da jim sprva sploh nisem verjel. Lažje je lastnikom sedeti v praznih pisarnah in plačevati stroške kot odlagati.

V tistem trenutku sem se spomnil, da redno plačujem davke in ali ima naša draga država oziroma mesto Calgary kaj tam. Izkazalo se je, da res obstaja. Mesto ima prizorišča za hokej in druge športe umetnostnega drsanja, v teh prizoriščih pa so prostori, kjer robustni ledeni bojevniki razpravljajo o strategijah za prihodnje bitke. Skratka, vsaka arena ima par sob z mizami, stoli, belo tablo in celo umivalnikom s kotličkom. Cena je prav božanska - 25 kanadskih tugrikov na uro. Sprva sem se odločil, da bom pouk izvajal uro in pol, zato sem ceno za lekcijo postavil na 35 dolarjev na razred v skupini petih ljudi, kot nadomestilo za najemnino in da dam nekaj v žep. Na splošno mi je bilo všeč delati v arenah, to je rešilo eno od težav - večina rusko govorečih ljudi živi na jugu, jaz pa na severu mesta, zato sem izbral areno približno na sredini. A bile so tudi nevšečnosti. Kanadska birokracija je dobra in prijazna, vendar zna biti, milo rečeno, nekoliko okorna. Ni težav, ko se navadiš na ritem in načrtuješ vnaprej, včasih pa pride do neprijetnih trenutkov. Na spletnem mestu mesta lahko na primer priročno izberete čas in kraj ter rezervirate sobo, vendar nikakor ne morete plačati. Sami telefonirajo in sprejemajo kartična plačila. Lahko greste v pisarno in plačate v gotovini. Bil je smešen, a ne preveč prijeten trenutek, ko sem čakal na njihov klic za plačilo druge ure, ki ga ni prišel, in zadnji dan sem petnajst minut zamudil v pisarno. Moral sem pristopiti k varnostniku z predrznim obrazom in lagati, da je soba rezervirana. Kanadčani mi verjamemo na besedo, mirno so me spustili noter in niso ničesar preverjali, a tega ne bi naredil, če ljudje ne bi bili že na poti v razred.

Tako sem delal zimo in pomlad, potem pa so se zgodile spremembe, ki so bile kaplja čez rob. Najprej je bila pisarna zaprta za obiskovalce in za vogalom so ponudili sprejem plačil po telefonu. Vsaj pol ure sem sedel na hodniku, preden sem prišel skozi. Drugič, če je prej moja draga teta od mene vzela plačilo za uro in pol, se je zdaj na telefon oglasilo neko dekle in povedalo, da je plačilo samo za uro. Takrat je bila moja skupina tri ali dve osebi in dodatnih 12.5$ ni bilo prav nič odveč. Seveda sem ideološki, a če me žena vrže na cesto, potem ne bo nikogar učiti. Takrat sem bil še brezposeln.

In odločil sem se, da grem v knjižnico. Knjižnice oddajajo čudovite prostore popolnoma brezplačno, vendar obstaja en ulov - ne morete izvajati komercialnih dejavnosti. Tudi dobrodelne organizacije tam ne smejo zbirati denarja. Rekli so mi, da to ni posebej nadzorovano, glavna stvar je, da ne vzamete denarja na vhodu, vendar res ne maram kršiti pravil. Težava je tudi v tem, da so prostori pogosto zasedeni in je težko izvajati pouk po urniku naenkrat na enem mestu. Poleti in zgodaj pozimi sem poučevala v knjižnicah, izbirati sem morala tiste s prostorom, na koncu pa zamenjala pet ali šest knjižnic. Nato sem začela rezervirati mesto dva meseca vnaprej, pa še takrat mi je to uspelo le v eni majhni knjižnici, ostale redno niso imele mest za zahtevani čas. In potem sem se odločil, da bom doma naredil računalniški razred. Obesil sem tablo, kupil drugo mizo in par starih monitorjev iz oglasa. V službi mi je podjetje kupilo nov zmogljiv prenosnik, ker je analiza na mojem računalniku trajala skoraj 24 ur. Tako, imel sem nov star računalnik, star star računalnik, prenosnik, na katerem je moj mali zdrobil zaslon, in prastar netbook, na katerem sem sam zdrobil zaslon. Vse sem povezal z monitorji in povsod namestil Linux Mint, razen na netbook, na katerega sem namestil zelo lahek distribucijski komplet, zdi se, Pappy. Še vedno imam star nov prenosnik, kupljen za 200 dolarjev, priključil sem ga na TV. In kar je pomembno, lastnik nam je pred kratkim zamenjal okna in zdaj so namesto strašne, razpadajoče umazanije v sobi novi beli okvirji. Moja žena hrani dnevno sobo, kuhinjo in drugo spalnico za vrtec, tako da se je celotno nadstropje izkazalo za čisto pedagoško. Tako, zdaj je s prostori vse v redu, preidimo na poučevanje.

Praskanje

Začenjam poučevati osnove programiranja z uporabo jezika Scratch. To je jezik, ki uporablja že pripravljene bloke, izumljene naenkrat na MIT. Večina otrok je Scratch že videla v šoli, zato so ga dokaj hitro sprejeli. Obstajajo že pripravljeni programi in učni načrti, vendar mi sploh niso všeč. Nekateri so nenavadni – ustvarite svojo zgodbo, na primer. Celoten program je sestavljen iz neštetih blokov say '<...>' for 2 seconds. Vidi se, da so si ga izmislili zelo kreativni posamezniki, a s tem pristopom se lahko naučite pisati klasično indijsko kodo za špagete. Že od samega začetka govorim o načelih, kot je DRY, druge zbirke nalog so kar dobre, vendar otroci hitro dojamejo bistvo in jih začnejo delati kot iz strojnice. Posledično v eni lekciji naredijo tisto, kar bi morali narediti v petih. In iskanje in izbiranje nalog vzame veliko osebnega časa. Na splošno Scratch bolj spominja ne na jezik, ampak na IDE, kjer se morate samo spomniti, kje klikniti in kje kaj iskati. Takoj, ko se učenci bolj ali manj počutijo udobno, jih poskušam prenesti na Python. Tudi moja sedemletna deklica piše preproste programe v Pythonu. Kar vidim kot prednost Scratch-a je, da vsebuje osnovne koncepte, ki se jih naučimo na igriv način. Iz nekega razloga je vsem, brez izjeme, zelo težko razumeti idejo spremenljivke. Sprva sem na hitro preletel temo in šel naprej, dokler se nisem soočil z dejstvom, da sploh ne vedo, kaj bi glede tega naredili. Zdaj veliko časa posvetim spremenljivkam in se k njim nenehno vračam. Moraš narediti nekaj neumnega zabijanja. Na zaslonu spreminjam različne spremenljivke in jih prisilim, da govorijo svoje vrednosti. Scratch ima tudi nadzorne strukture in preverjanja vrednosti, kot npr while, for ali if v pythonu. So precej enostavni, vendar obstajajo težave z ugnezdenimi zankami. Poskušam dati več nalog z ugnezdeno zanko in tako, da je njeno delovanje jasno. Po tem preidem na funkcije. Tudi za odrasle koncept funkcije ni očiten, še bolj pa za otroke. Dolgo razglabljam o tem, kaj sploh je funkcija, govorim o tovarni, ki sprejema artikle kot vložek in izda blago, o kuharju, ki dela hrano iz surovin. Nato naredimo program “make a sendwich” z izdelki, nato pa iz njega naredimo funkcijo, kateri se izdelki posredujejo kot parametri. Končam učenje funkcij s Scratchom.

Python

S pythonom je vse preprostejše. Obstaja dobra knjiga Python za otroke, iz katere učim. Tam je vse standardno - vrstice, vrstni red operacij, print(), input() itd. Napisano v preprostem jeziku, s humorjem, otrokom je všeč. Ima napako, skupno mnogim knjigam o programiranju. Kot v znani šali - kako narisati sovo. Oval - krog - sova. Prehod od preprostih konceptov k precej zapletenim konceptom je preveč nenaden. Potrebujem več sej, da predmet priložim metodi pike. Po drugi strani pa se mi ne mudi, ponavljam eno in isto na različne načine, dokler se ne sestavi vsaj kakšna slika. Začnem s spremenljivkami in jih znova izdelam, tokrat v Pythonu. Spremenljivke so neke vrste prekletstvo.

Pameten študent, ki je pred nekaj meseci spretno klikal spremenljivke na Skratchu, gleda kot oven na novih vratih in ne zna sešteti X z Y, kar jasno piše na tabli črto zgoraj. Ponavljamo! Kaj ima spremenljivka? Ime in pomen! Kaj pomeni enačaj? Naloga! Kako preverimo enakost? Dvojni znak enačaja! In to vedno znova ponavljamo do popolnega razsvetljenja. Nato preidemo na funkcije, kjer razlaga o argumentih traja najdlje. Poimenovani argumenti, po položaju, privzeto itd. Do pouka še nismo prišli v nobeni skupini. Poleg Pythona preučujemo priljubljene algoritme iz knjige, več o tem kasneje.

Pravzaprav trening

Moj pouk je sestavljen takole: pol ure podajam teorijo, preverjam znanje in utrjujem naučeno. Čas je za laboratorije. Pogosto me zanese in se pogovarjam tudi do ene ure, potem ostane pol ure za vadbo. Ko sem se učil python, sem gledal tečaj Algoritmi in podatkovne strukture Khiryanov iz MIPT. Zelo mi je bila všeč njegova predstavitev in struktura njegovih predavanj. Njegova ideja je naslednja: okviri, sintaksa, knjižnice postajajo zastareli. Arhitektura, timsko delo, sistemi za nadzor različic - še zgodaj je. Posledično ostajajo algoritmi in podatkovne strukture, ki jih poznamo že dolgo in bodo vedno v podobni obliki. Sam se spomnim samo celih števil iz inštituta pascal. Ker so moji učenci večinoma mladi, stari od sedem do petnajst let, menim, da je za njihovo prihodnost pomembneje postaviti temelje kot pa na hitro napisati platformsko igro v Pythonu. Čeprav si bolj želijo platformerja in jih razumem. Dam jim preproste algoritme – oblaček, binarno iskanje na razvrščenem seznamu, obratni poljski zapis z uporabo sklada, vendar vsakega analiziramo zelo podrobno. Izkazalo se je, da sodobni otroci načeloma ne vedo, kako deluje računalnik, vam bom tudi povedal. Na vsakem predavanju poskušam povezati več pojmov. Na primer, računalnik - pomnilnik/odstotek - pomnilnik, sestavljen iz celic (pustil ti bom, da držiš pomnilniški čip, uganeš, koliko celic je) - vsaka celica je kot žarnica - obstajata dve stanji - resnično/napačno - in/ali - binarno/decimalno - 8bit = 1 bajt - bajt = 256 možnosti - logični podatkovni tip na en bit - cela števila na en bajt - float na dveh bajtih - string na en bajt - največje število na 64 bitov - seznam in tuple iz prejšnjih tipov. Pridržim se, da je v pravem računalniku vse nekoliko drugače in je količina pomnilnika za te podatkovne vrste drugačna, a glavna stvar je, da sami v procesu ustvarjamo bolj zapletene podatkovne vrste iz enostavnejših. Vrste podatkov si je morda najtežje zapomniti. Zato vsako lekcijo začnem s hitrim ogrevanjem – en učenec poimenuje vrsto podatkov, naslednji poda dva primera in tako naprej v krogu. Posledično sem dosegel, da tudi najmlajši otroci veselo kričijo - lebdi! logično! sedem, pet! pica, avto! Med predavanjem nenehno vlečem najprej enega ali drugega, sicer hitro začnejo vikati nos in gledati v strop. In vsake toliko časa je treba preveriti raven znanja vseh.

Moji učenci me nikoli ne prenehajo presenečati, tako s svojo neumnostjo kot nepričakovano inteligenco. Na srečo pogosteje z inteligenco.

Želel sem napisati še več, a se je izkazalo, da je le list. Z veseljem vam bom odgovoril na vsa vprašanja. Pozdravljam vsako kritiko na vse možne načine, le prosim vas, da ste v komentarjih bolj strpni drug do drugega. To je dober članek.

Vir: www.habr.com

Dodaj komentar