Kuidas õpetada lastele Pythonit?

Kuidas õpetada lastele Pythonit?

Minu põhitöö on seotud andmete ja programmeerimisega R, kuid selles artiklis tahan rääkida oma hobist, mis toob isegi sissetulekut. Mind on alati huvitanud sõpradele, klassikaaslastele ja kaasõpilastele asjade rääkimine ja selgitamine. Samuti on mul alati olnud lihtne lastega ühist keelt leida, ma ei tea, miks. Üldiselt usun, et laste kasvatamine ja õpetamine on üks tähtsamaid tegevusi üldse ja minu naine on õpetaja. Nii tegin umbes aasta tagasi reklaami kohalikus Facebooki grupis, moodustasin grupi ja hakkasin kord nädalas Scratchi ja Pythonit õpetama. Nüüd on mul viis rühma, oma klass kodus ja individuaaltunnid. Sellest, kuidas ma niimoodi elama hakkasin ja kuidas ma lapsi täpselt õpetan, räägin teile selles artiklis.

Ma elan Kanadas Albertas Calgarys, nii et mõned asjad on kohalikud.

Tuba

Praktikaruumi olemasolu oli algusest peale suur probleem. Üritasin otsida tunde järgi üüritavaid kontoreid ja klassiruume, kuid see ei õnnestunud. Meie ülikool ja SAIT, MIT-i kohalik vaste, pakuvad tunde nii arvutiga kui ka ilma. Sealsed hinnad osutusid mitte just väga inimlikeks ja lõpuks selgus, et ülikool alaealisi ei luba ja SAIT rendib üldjuhul ainult oma tudengitele. Niisiis, see valik jäeti välja. On palju kontorikeskusi, mis rendivad koosolekuruume ja büroosid tundide kaupa, on terveid ettevõtteid, mis pakuvad hunnikut valikuvõimalusi täisklassist kuni neljakohalise ruumini. Mul oli lootus, kuna Alberta on naftaprovints, oleme alates 2014. aastast olnud loidus kriisis ja paljud äripinnad on tühjad. Ma poleks tohtinud loota, hinnad osutusid nii jõledateks, et ma ei uskunud neid alguses isegi. Omanikel on lihtsam tühjades kontorites istuda ja kulusid maksta, kui prügi maha visata.

Sel hetkel meenus, et maksan regulaarselt makse ja kas meie kallil osariigil või õigemini Calgary linnal seal midagi on. Selgus, et tõesti on. Linnas on hoki ja muude iluuisutamisspordialade areenid ning nendel areenidel on ruumid, kus karmid jääsõdalased arutavad tulevaste lahingute strateegiaid. Ühesõnaga, igal areenil on paar tuba, kus on lauad, toolid, valge tahvel ja isegi kraanikauss koos veekeetjaga. Hind on päris jumalik - 25 Kanada tugrikut tunnis. Otsustasin algselt teha tunde poolteist tundi, mistõttu määrasin viieliikmelises rühmas tunni hinnaks 35 dollarit klassi kohta, et kompenseerida üüri ja midagi tasku pista. Üldiselt meeldis mulle areenidel treenimine, see lahendas ühe probleemi - enamik vene keelt kõnelevaid inimesi elab lõunas ja mina elan linna põhjaosas, nii et valisin areeni umbes keskel. Kuid oli ka ebameeldivusi. Kanada bürokraatia on hea ja sõbralik, kuid võib pehmelt öeldes olla mõnevõrra kohmakas. Rütmiga harjudes ja ette planeerides probleeme ei teki, kuid vahel tuleb ette ebameeldivaid hetki. Näiteks saab linna kodulehel mugavalt valida aja ja koha ning reserveerida toa, aga maksta ei saa mingilgi moel. Nad helistavad ise ja võtavad vastu kaardimakseid. Võite minna kontorisse ja maksta sularahas. Oli naljakas, kuid mitte eriti meeldiv hetk, kui ootasin nende kõnet, et maksta teise tunni eest, seda ei tulnud ja viimasel päeval jäin kontorisse viisteist minutit hiljaks. Pidin jultunud näoga turvameestele lähenema ja valetama, et tuba on broneeritud. Meie, kanadalased, usume mu sõna, nad lasid mind rahulikult sisse ega kontrollinud midagi, aga ma ei teeks seda, kui inimesed poleks juba teel tundi.

Nii töötasin läbi talve ja kevade ning siis toimusid muutused, mis olid viimane piisk karikasse. Esiteks suleti kontor külastajatele ja nurga taga pakuti telefoni teel maksete vastuvõtmist. Istusin vahekäigul vähemalt pool tundi, enne kui läbi sain. Teiseks, kui varem võttis mu kallis tädi minu käest makse poolteist tundi, siis nüüd võttis telefonile mõni neiu ja ütles, et maksmine on ainult tunni eest. Sel ajal oli minu grupp kas kolme- või kaheliikmeline ja lisatasu 12.5 dollarit polnud sugugi üleliigne. Muidugi olen ma ideoloogiline, aga kui mu naine mind tänavale viskab, siis pole enam kedagi õpetada. Olin siis veel töötu.

Ja ma otsustasin raamatukokku minna. Raamatukogud rendivad imelisi ruume täiesti tasuta välja, kuid on üks konks – äritegevust läbi viia ei saa. Isegi heategevusorganisatsioonid ei tohi seal raha koguda. Mulle öeldi, et seda eriti ei kontrollita, peaasi, et sissepääsu juures raha ei võtaks, aga mulle tõesti ei meeldi reeglite rikkumine. Probleemiks on ka see, et ruumid on sageli hõivatud ja ühes kohas on keeruline graafikujärgseid tunde korraga läbi viia. Suvel ja talve alguses õpetasin raamatukogudes, pidin valima need, kus on ruumi, ja lõpuks vahetasin viis-kuus raamatukogu. Hakkasin siis kaks kuud ette kohti broneerima ja isegi siis õnnestus mul seda teha vaid ühes väikeses raamatukogus, ülejäänutel polnud regulaarselt nõutud ajaks kohti. Ja siis otsustasin teha kodus arvutiklassi. Panin tahvli üles, ostsin kuulutusest teise laua ja paar vana monitori. Tööl ostis firma mulle uue võimsa sülearvuti, kuna arvutis analüüsimiseks kulus ligi 24 tundi. Niisiis, mul oli uus vana arvuti, vana vana arvuti, sülearvuti, millel mu pisike ekraani purustas, ja iidne netbook, millel ma ise purustasin ekraani. Ühendasin need kõik monitoridega ja installisin Linux Mint kõikjale, välja arvatud netbook, millele paigaldasin väga kerge jaotuskomplekti, tundub, Pappy. Mul on alles vana uus sülearvuti, ostetud 200 dollari eest, ühendasin selle teleriga. Samuti, mis oluline, meie omanik vahetas hiljuti meie aknad ja nüüd on kohutava laguneva räpasuse asemel toas uued valged raamid. Minu naine hoiab elutuba, kööki ja teist magamistuba lasteaia jaoks, nii et kogu korrus osutus puhtalt pedagoogikaks. Nii, nüüd on ruumidega kõik korras, liigume edasi õppetööga.

Kriimustada

Hakkan õpetama Scratch keele abil programmeerimise põhitõdesid. See on keel, mis kasutab valmisplokke, mis leiutati korraga MIT-is. Enamik lapsi on Scratchi juba koolis näinud, nii et nad võtavad selle üsna kiiresti kätte. On olemas valmisprogrammid ja tunniplaanid, aga need ei meeldi mulle üldse. Mõned on kummalised – loo näiteks oma lugu. Kogu programm koosneb lugematutest plokkidest say '<...>' for 2 seconds. On näha, et selle leiutasid väga loomingulised isikud, kuid selle lähenemisviisi abil saate õpetada, kuidas kirjutada klassikalist India spagetikoodi. Kohe algusest peale räägin põhimõtetest nagu KUIV.Teised ülesannete kogud on päris head, aga lapsed saavad olemusest kiiresti aru ja hakkavad neid täitma nagu kuulipilduja. Selle tulemusena teevad nad ühes tunnis seda, mida nad oleks pidanud tegema viies. Ja ülesannete otsimine ja valimine võtab palju isiklikku aega. Üldiselt meenutab Scratch pigem mitte keelt, vaid IDE-d, kus tuleb lihtsalt meeles pidada, kus klõpsata ja kust mida otsida. Niipea, kui õpilastel on enam-vähem mugav, proovin nad Pythoni üle kanda. Isegi mu seitsmeaastane tüdruk kirjutab Pythonis lihtsaid programme. Pean Scratchi eeliseks seda, et see sisaldab põhimõisteid, mida õpitakse mänguliselt. Millegipärast on kõigil eranditult väga raske muutuja ideest aru saada. Algul uurisin teemat kiiresti ja liikusin edasi, kuni nägin tõsiasja, et nad isegi ei teadnud, mida sellega peale hakata. Nüüd kulutan muutujatele palju aega ja pöördun nende juurde pidevalt tagasi. Sa pead tegema lolli haamriga. Muudan ekraanil erinevaid muutujaid ja panen need oma väärtusi rääkima. Scratchil on ka juhtimisstruktuurid ja väärtuste kontrollid, nt while, for või if pythonis. Need on üsna lihtsad, kuid pesastatud silmustega on probleeme. Püüan anda mitu ülesannet pesastatud tsükliga ja nii, et selle tegevus oleks selge. Pärast seda liigun funktsioonide juurde. Isegi täiskasvanute jaoks pole funktsiooni mõiste ilmne, ja seda enam lastele. Ma räägin pikalt, mis on funktsioon üldiselt, räägin tehasest, mis võtab esemeid vastu ja väljastab kaupa, kokast, kes teeb toitu toorainest. Seejärel teeme toodetega “teeme võileiva” programmi ja siis sellest funktsiooni, millele tooted parameetritena edasi antakse. Funktsioonide õppimise lõpetan Scratchiga.

Püthon

Pythoniga on kõik lihtsam. Seal on hea raamat Python for Kids, millest ma õpetan. Seal on kõik standardne - read, toimingute järjekord, print(), input() jne. Lihtsas keeles, huumoriga kirjutatud, lastele meeldib. Sellel on paljudele programmeerimisraamatutele omane viga. Nagu kuulsas naljas - kuidas öökulli joonistada. Ovaal - ring - öökull. Üleminek lihtsatelt mõistetelt üsna keerukatele mõistetele on liiga järsk. Objekti punktmeetodi külge kinnitamiseks kulub mul mitu seanssi. Teisest küljest ma ei kiirusta, kordan sama asja erineval viisil, kuni vähemalt mingi pilt kokku tuleb. Alustan muutujatest ja löön need uuesti välja, seekord Pythonis. Muutujad on omamoodi needus.

Nutikas tudeng, kes paar kuud tagasi Skratchil osavalt muutujaid klõpsis, näeb uuel väraval välja nagu jäär ega oska X-i lisada Y-ga, mis on tahvlil selgelt kirjas rea võrra kõrgemal. Kordame! Mis on muutujal? Nimi ja tähendus! Mida tähendab võrdusmärk? Ülesanne! Kuidas me võrdsust kontrollime? Kahekordne võrdusmärk! Ja me kordame seda ikka ja jälle kuni täieliku valgustumiseni. Seejärel liigume funktsioonide juurde, kus argumentide selgitamine võtab kõige kauem aega. Nimega argumendid, positsiooni järgi, vaikimisi jne. Me pole veel üheski rühmas tundidesse jõudnud. Lisaks Pythonile uurime raamatust populaarseid algoritme, sellest hiljem.

Tegelikult koolitus

Minu tund on üles ehitatud nii: annan pool tundi teooriat, kontrollin teadmisi ja kinnistan õpitut. On aeg laboriteks. Tihti löön kaasa ja räägin kuni tund aega, siis jääb pool tundi harjutamiseks. Kui ma pythonit õppisin, vaatasin kursust Algoritmid ja andmestruktuurid Khiryanov MIPT-st. Mulle väga meeldis tema esitlus ja loengute ülesehitus. Tema idee on järgmine: raamistikud, süntaks, raamatukogud on aegumas. Arhitektuur, meeskonnatöö, versioonikontrollisüsteemid – see on veel vara. Selle tulemusena jäävad algoritmid ja andmestruktuurid, mis on tuntud juba pikka aega ja on alati sarnasel kujul. Ise mäletan instituudi pascalist ainult täisarve. Kuna minu õpilased on valdavalt noored, seitsme- kuni viieteistkümneaastased, siis usun, et nende tuleviku jaoks on olulisem aluse panemine kui Pythonis platvormmängu kiire kirjutamine. Kuigi nad tahavad rohkem platformerit ja ma mõistan neid. Ma annan neile lihtsad algoritmid - mull, binaarne otsing sorteeritud loendis, vastupidine poola märge, kasutades virna, kuid me analüüsime igaühte väga üksikasjalikult. Selgus, et tänapäeva lapsed ei tea põhimõtteliselt, kuidas arvuti töötab, ma ütlen teile ka. Püüan igas loengus mitu mõistet kokku siduda. Näiteks arvuti - mälu/protsent - rakkudest koosnev mälu (ma lasen sul hoida mälukiipi, arvake ära mitu rakku seal on) - iga rakk on nagu lambipirn - on kaks olekut - tõene/vale - ja/või - binaarne/kümnendsüsteem - 8bit = 1 bait - bait = 256 valikut - loogiline andmetüüp ühel bitil - täisarvud ühel baidil - float kahel baidil - string ühel baidil - suurim arv 64 bitil - loend ja korteis eelmistest tüüpidest. Ma teen reservatsiooni, et päris arvutis on kõik mõnevõrra erinev ja mälumaht nende andmetüüpide jaoks on erinev, kuid peamine on see, et me ise selle käigus loome lihtsamatest andmetüüpidest keerukamaid. Andmetüüpe on ehk kõige raskem meeles pidada. Seetõttu alustan igat tundi kiire soojendusega – üks õpilane nimetab andmetüübi, järgmine toob kaks näidet ja nii ringikujuliselt. Tulemusena saavutasin selle, et ka kõige pisemad lapsed hüüavad rõõmsalt – hõlju! tõepärane! seitse, viis! pitsa, auto! Loengul tõmban pidevalt esimesena üht-teist, muidu hakkavad kiiresti nina nokima ja lakke vaatama. Ja iga inimese teadmiste taset tuleb aeg-ajalt kontrollida.

Minu õpilased ei lakka mind hämmastamast nii oma rumaluse kui ootamatu intelligentsusega. Õnneks sagedamini intelligentsusega.

Tahtsin veel kirjutada, aga see osutus lihtsalt lehekeseks. Vastan hea meelega kõikidele küsimustele. Tervitan igasugust kriitikat igal võimalikul viisil, lihtsalt palun olla kommentaarides üksteise suhtes tolerantsemad. See on hea artikkel.

Allikas: www.habr.com

Lisa kommentaar