Hogyan tanítom a gyerekeket Pythonnal

Hogyan tanítom a gyerekeket Pythonnal

A fő munkám az adatokkal és a programozással kapcsolatos R, de ebben a cikkben szeretném bemutatni a szenvedélyemet, ami még jövedelmet is hoz. Mindig is érdekelt, hogy elmagyarázzak valamit a barátaimnak, osztálytársaimnak és egyetemi csoporttársaimnak. Mindig könnyen találtam közös nyelvet a gyerekekkel, nem tudom, miért. Általában úgy gondolom, hogy a gyerekek nevelése és oktatása az egyik legfontosabb tevékenység, és a feleségem pedagógus. Körülbelül egy évvel ezelőtt hirdetést adtam fel a helyi Facebook-csoportban, összehoztam egy csoportot, és elkezdtem hetente tanítani a Scratch-t és a Pythont. Jelenleg öt csoportom van, saját osztályom a házamban és egyéni óráim. Hogy jutottam el idáig és hogyan tanítom pontosan a gyerekeket, azt ebben a cikkben mesélem el.

Kanadában, Calgary városában élek, Alberta tartományban, így néhány pillanat a helyi sajátosságokkal lesz kapcsolatos.

Terem

A tanórák lebonyolításához szükséges hely már az elején alapvető problémát jelentett. Irodákat és tantermeket kerestem óránkénti bérlésre, de nem voltam túl sikeres. Egyetemünk és a SAIT — a helyi MIT megfelelője — számítógépes és számítógép nélküli termeket ad bérbe. Az árak ott nem voltak túl emberiek, és végül kiderült, hogy az egyetem nem engedi be a kiskorúakat, a SAIT pedig csak a saját hallgatóinak ad bérbe. Így ez a lehetőség kiesett. Számos iroda központ létezik, amelyek óránkénti bérbe adják a tárgyalókat és irodákat, vannak egész cégek, amelyek számos lehetőséget kínálnak, a teljes tanteremtől kezdve a négy fős kicsi szobákig. Reménykedtem, mivel Alberta olajtermelő tartomány, nálunk 2014 óta lassú válság van, és sok üzleti terület üres. Hiába reménykedtem, az árak annyira őrültek voltak, hogy kezdetben el sem hittem. Az ingatlanpiac tulajdonosainak könnyebb az üres irodákban ülni és viselni a költségeket, mint árversenyt folytatni.

Ekkor eszembe jutott, hogy rendszeresen adózom, és vajon nincs-e valami a drága államunknál, pontosabban Calgary városánál. Kiderült, hogy van. A városnak vannak arénái hoki és egyéb korcsolyázási sportok számára, és ezekben az arénákban vannak szobák, ahol a kemény jégharcosok a jövőbeli csaták stratégiáit vitatják meg. Röviden: minden aréna mellett van pár szoba asztalokkal, székekkel, táblával és még mosogatóval is. Az ár egészen türelmes — 25 kanadai dollár egy óráért. Eredetileg másfél órás foglalkozásokat terveztem, ezért 35 dollárért árultam a csoportos órát öt főre, hogy fedezzem az bérleti díjat, és tegyek valamit a zsebembe is. Összességében tetszett az arénákban tartani a foglalkozásokat, ez megoldotta az egyik problémát — a legtöbb orosz anyanyelvű a város déli részén él, míg én északon lakom, így egy körülbelül középső arénát választottam. De voltak kényelmetlenségek is. A kanadai bürokrácia jó és barátságos, de hogy finoman szóljak, néha kicsit nehézkes. Nincsenek problémák, ha hozzászoksz a ritmushoz és előre tervezel, de néha kellemetlen pillanatok adódhatnak. Például a város honlapján kényelmesen ki lehet választani az időpontot és a helyet, szobát foglalni, de kifizetni nem lehet, sehogy. Ők maguk hívtak telefonon, és kártyával fogadták el a fizetést. Lehet menni az irodájukba is, és készpénzben kifizetni. Volt egy vicces, de nem túl kellemes pillanat, amikor vártam a hívásukat, hogy kifizethessem a második órát, de nem érkezett meg a hívás, és az irodához az utolsó nap tizenöt perc késéssel érkeztem. Kényszeren kellett a biztonsági őrhöz mennem, és hazudnom, hogy a szoba le van foglalva. Mi, kanadai emberek, hiszünk a szónak, nyugodtan beengedték, és nem ellenőriztek semmit, de én nem tettem volna ilyet, ha az emberek már nem kocsikáztak volna a foglalkozásra.

Így töltöttem a telet és a tavaszt, aztán jöttek a változások, amelyek utolsó cseppként hatottak. Először is, az irodát bezárták a látogatók előtt, és telefonon kínálták a fizetést a sarkon. Legalább félórát ültem a folyosón, mire végre eljutottam a telefonhoz. Másodszor, ha korábban a kedves néni másfél órás fizetést fogadott el tőlem, most valami lány vette fel a telefont, és azt mondta, hogy a fizetés csak egy órára vonatkozik. Abban az időben a csoportom három, majd két főből állt, és a plusz 12.5 dollár cseppet sem volt felesleges. Persze, elkötelezett vagyok, de ha a feleségem az utcára dob, akkor senki sem fog tanítani. Akkor még munkanélküli voltam.

És úgy döntöttem, hogy elmegyek a könyvtárba. A könyvtárak csodás helyiségeket kínálnak teljesen ingyen, de van egy kis bökkenő – nem lehet kereskedelmi tevékenységet folytatni. Még a jótékonysági szervezeteknek sem szabad ott pénzt gyűjteniük. Azt mondták nekem, hogy ezt nem igazán ellenőrzik, a lényeg, hogy ne pénzt szedj be a bejáratnál, de én nagyon nem szeretem megsérteni a szabályokat. Egy másik probléma, hogy a helyiségek gyakran foglaltak, és nehéz az órákat egyszerre, egy helyen tartani. Nyáron és a tél elején könyvtárakban tanítottam, és választanom kellett azokat, ahol van szabad hely, végül öt-hat könyvtárat váltottam. Aztán elkezdtem két hónappal előre foglalni, és csak egy apró könyvtárban sikerült helyet találni, a többi helyen általában nem volt szabad kapacitás a megfelelő időre. És akkor úgy döntöttem, hogy otthon számítástechnikai osztályt alakítok ki. Felszereltem egy táblát, vettem egy második asztalt és néhány régi monitort hirdetés alapján. A munkámhoz a cég vásárolt nekem egy új, erős laptopot, mert az én számítógépemen az analízis majdnem 24 óráig tartott. Így hát volt egy új régi számítógépem, egy régi régi számítógépem, egy laptopom, aminek a képernyőjét a gyermekem összezúzta, és egy régi netbookom, aminek a képernyőjét én magam törtem el. Mindet csatlakoztattam a monitorokhoz, és mindenhol Linux Mint-et telepítettem, kivéve a netbookot, amire egy nagyon könnyű disztribúciót telepítettem, úgy hiszem, Puppyt. Van még egy régi új laptopom, amit 200 dollárért vásároltam, azt a tévéhez csatlakoztattam. Ezen kívül, ami nem elhanyagolható, a főbérlőnk nemrégiben kicserélte az ablakainkat, és a szobánk most új, fehér keretekkel rendelkezik a borzalmas, tönkrement cucc helyett. A nappalit, a konyhát és a második hálószobát a feleségem gyerekmegőrzőnek használja, így az egész emelet pedagógiai jellegű lett. Tehát most a helyiséggel minden rendben van, térjünk át a tanításra.

Scratch

A programozás alapjait Scratch nyelven kezdem el tanítani. Ez egy olyan nyelv, amely már készen álló blokkokat használ, és az MIT-ben találták ki. A legtöbb gyerek már látta a Scratch-t az iskolában, ezért viszonylag gyorsan elsajátítják. Vannak kész programok és óratervek, de nekem ezek egyáltalán nem tetszenek. Néhány furcsa – például, hogy hozz létre egy történetet. Az egész program sok-sok blokkból áll. say '' for 2 secondsLátszik, hogy nagyon kreatív személyek találhatták ki, de ezzel a megközelítéssel klasszikus indiai spaghetti kódot lehet tanítani. Én már az elejétől kezdve a D.R.Y. típusú elvekről beszélek. Más feladatgyűjtemények teljesen jók, de a gyerekek gyorsan belerázódnak, és elkezdik csinálni őket, mint egy géppuska. Végül egy óra alatt elvégzik azt, amit öt óra alatt kellett volna. A feladatok keresésére és kiválasztására rengeteg személyes időm megy el. Alapvetően a Scratch inkább IDE-re hasonlít, ahol csak meg kell tanulni, hova kell kattintani és hol kell keresni. Ahogy a tanulók már megértik a dolgot, próbálom őket Pythonra áttéríteni. Még egy hét éves kislány is ír egyszerű programokat Pythonban. A Scratch előnyét abban látom, hogy vannak benne olyan alapvető fogalmak, amiket játékos formában sajátítanak el. Valamiért mindenki, kivétel nélkül, nagyon nehezen érti meg a változó fogalmát. Eleinte gyorsan átugrottam ezt a témát és mentem tovább, amíg nem szembesültem azzal, hogy valójában fogalmuk sincs, mit csináljanak ezzel. Most sok időt szentelek a változóknak, és állandóan visszatérek hozzájuk. Muszáj unalmas ismétlésekkel foglalkozni. A képernyőn váltogatom a különböző változókat, és megmutatom, mit jelentenek. while, for vagy if Pythonban. Ezeket elég könnyen megtanulják, csak a beágyazott ciklusokkal szoktak problémák lenni. Több feladatot próbálok adni beágyazott ciklussal, és úgy, hogy a működése szemléletes legyen. Ezután a függvényekre lépek. Még a felnőtteknek is nem mindig egyértelmű a függvény fogalma, a gyerekeknek pedig főleg nem. Hosszan magyarázom, mi a függvény, mesélek egy gyárkém, ami tárgyakat kap bemenetként, és árukat ad ki, egy szakácsról, aki nyers hozzávalókból készít ételt. Aztán készítünk egy "készíts szendvicset" programot hozzávalókkal, majd csinálunk belőle egy függvényt, amelyhez a hozzávalókat paraméterként adjuk át. A függvények tanulmányozásával fejezem be a Scratch-t.

Python

Pythonnal minden könnyebb. Van egy jó könyv, a Python for Kids, ebből tanítok. Minden standard — változók, műveleti sorrend, print(), input() és így tovább. Könnyed nyelvezettel, humorral íródott, a gyerekeknek tetszik. Van egy hátránya, ami sok programozásról szóló könyv sajátja. Mint a híres vicc — hogyan rajzoljunk baglyot. Ovális — kör — bagoly. A nagyon egyszerű fogalmakról túl hirtelen átmegyünk a viszonylag bonyolult koncepciókra. Az, hogy az objektum hogyan kapcsolódik a metódushoz ponttal, több órát vesz igénybe. Másrészt nem sietek, ismétlem az egyre különbözőbb módokon, amíg nem alakul ki valami kép. Kezdek a változókkal, és újra és újra foglalkozom velük, már Pythonban. A változók egyfajta átok.

Az eszes diák, aki pár hónappal ezelőtt ügyesen tekergette a változókat a Scratche-en, most úgy néz ki, mint egy birka az új kapura, és nem tudja összeadni az x-et és az y-t, amit az egy sorral feljebb nyilvánvalóan kiírtok a táblára. Ismételjük! Mi a változónak a lényege? Név és érték! Mit jelent a párhuzamos jel? Hozzárendelés! És hogyan ellenőrizzük az egyenlőséget? Kettős egyenlőségjel! És így ismételjük újra és újra, amíg meg nem világosodik. Aztán áttérünk a funkciókra, ahol a leghosszabb a magyarázat az argumentumokról. Nevezett argumentumok, pozíció szerint, alapértelmezett és így tovább. Még egyetlen csoportban sem értünk el a class-okhoz. A Pythonon kívül népszerű algoritmusokat is tanulmányozunk, erről később.

Valójában a tanulás

Az órám úgy van beállítva, hogy fél órát elméletet adok, ellenőrzöm a tudást, megerősítem a tanultakat. Egy óra — laborok. Gyakran túlságosan belemerülök és egy órán át beszélek, így a gyakorlatra csak fél óra marad. Amikor tanultam a Python-t, megnéztem egy kurzust Algoritmusok és Adatszerkezetek Hirjanova a MFTI-től. Nagyon tetszett az előadásmódja és az előadások felépítése. Az ő ötlete az, hogy a keretrendszerek, szintaxisok, könyvtárak elavultak. Az architektúra, a csapatmunka és a verziókezelő rendszerek még koraiak. Végső soron azok az algoritmusok és adattípusok maradnak, amelyek már régóta ismertek, és amelyek mindig hasonló formában léteznek. Én magam az intézeti Pascalból csak az egészeket emlékszem. Mivel a diákjaim javarészt fiatalok, hét és tizenöt év között, úgy gondolom, hogy a jövőjük szempontjából fontosabb az alapok lerakása, mint hogy minél hamarabb írjanak egy platformert Pythonban. Bár ők főleg platformert akarnak, és megértem őket. Az algoritmusokat egyszerűen tanítom nekik: buborék, bináris keresés rendezett listában, fordított lengyel notáció verem segítségével, de mindent nagyon részletesen kivesézünk. Kiderült, hogy a mai gyerekek alapvetően nem tudják, hogyan működik egy számítógép, ezt is elmondom. Minden előadásomban próbálom összekapcsolni a különböző fogalmakat. Például, a számítógép — memória/proc — a memória cellákból áll (meg fogják fogni a memória modulját, találják ki, hány cella van itt) — minden cella úgy működik, mint egy lámpa — két állapota van — true/false — and/or — bináris/dekálish — 8 bit = 1 byte — byte = 256 variáció — logikai adattípus egy biten — egész számok egy bájton. lebegőpontos két byte-on — string egy byte-on — a legnagyobb szám 64 biten — lista és tuple az előző típusokból. Megjegyzem, hogy a valódi számítógépekben minden kicsit másmilyen, és más mennyiségű memória van ezekhez a típusokhoz, de a legfontosabb, hogy a folyamat során mi magunk hozunk létre bonyolultabb adattípusokat az egyszerűbbekből. Az adattípusok talán a legnehezebb dolog, amit meg kell jegyezni. Ezért minden órát egy gyors bemelegítéssel kezdek — egy tanuló megnevez egy adattípust, a következő kettő példát hoz, és így körbe. Végül arra törekedtem, hogy még a legfiatalabb gyerekek is lelkesen kiabálják — float! boolean! hét, öt! pizza, autó! Az előadás során folyamatosan váltogatom az egyiket a másikkal, különben gyorsan elkezdenek orrukat piszkálni és a plafont nézni. De az egyes diákok tudásának szintjét is ellenőrizni kell közben.

A diákjaim folyamatosan meglepnek, akár butaságukkal, akár váratlan gyors felfogásukkal. Szerencsére a gyors felfogásuk a gyakoribb.

Több mindent szerettem volna írni, de így is hosszú lett. Szívesen válaszolok minden kérdésre. Minden kritikát szívesen fogadok, csak egy kérésem van — legyünk türelmesebbek egymással a kommentekben. Ez egy kedves cikk.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster