Kako učim djecu Python

Kako učim djecu Python

Moj glavni posao vezan je za podatke i programiranje u R, ali u ovom članku želim govoriti o svom hobiju, koji čak donosi i neke prihode. Uvijek me zanimalo pričati i objašnjavati stvari prijateljima, kolegama i kolegama studentima. Također mi je uvijek bilo lako naći zajednički jezik s djecom, ne znam zašto. Općenito, smatram da je odgoj i podučavanje djece jedna od najvažnijih aktivnosti, a moja supruga je učiteljica. Tako sam se prije otprilike godinu dana oglasio u lokalnoj Facebook grupi, osnovao grupu i počeo učiti Scratch i Python jednom tjedno. Sada imam pet grupa, svoj razred kod kuće i individualne sate. Kako sam ja tako živio i kako točno učim djecu, reći ću vam u ovom članku.

Živim u Calgaryju, Alberta, Kanada, pa će neke stvari biti lokalne specifičnosti.

soba

Dostupnost prostora za vježbanje bila je glavna briga od početka. Pokušao sam tražiti urede i učionice za najam po satu, ali nisam imao puno uspjeha. Naše sveučilište i SAIT, lokalni ekvivalent MIT-a, nude nastavu sa i bez računala. Pokazalo se da cijene tamo nisu baš humane, a na kraju se pokazalo da sveučilište ne prima maloljetne osobe, a SAIT uglavnom iznajmljuje samo svojim studentima. Dakle, ova opcija je eliminirana. Postoje mnogi uredski centri koji iznajmljuju sobe za sastanke i urede po satu, postoje cijele tvrtke koje nude hrpu opcija od pune učionice do sobe za četiri osobe. Imao sam nade, budući da je Alberta naftna pokrajina, mi smo u laganoj krizi od 2014., a mnogi poslovni prostori zjape prazni. Nisam se smio nadati; cijene su se pokazale toliko nečuvene da isprva nisam ni povjerovao. Lakše je vlasnicima sjediti u praznim uredima i plaćati troškove nego odlagati.

U tom trenutku sam se sjetio da uredno plaćam poreze i da li naša draga država, odnosno grad Calgary ima tu što. Pokazalo se da doista postoji. Grad ima arene za hokej i druge sportove umjetničkog klizanja, au tim arenama postoje sobe u kojima surovi ratnici na ledu raspravljaju o strategijama za buduće bitke. Ukratko, svaka arena ima par soba sa stolovima, stolicama, bijelom pločom pa čak i sudoperom s kuhalom za vodu. Cijena je baš božanstvena - 25 kanadskih tugrika po satu. U početku sam odlučio održavati nastavu u trajanju od sat i pol, pa sam odredio cijenu lekcije na 35 dolara po satu u grupi od pet ljudi, kako bih kompenzirao stanarinu i stavio nešto u džep. Općenito, svidjelo mi se vježbanje u arenama, riješilo je jedan od problema - većina ljudi koji govore ruski žive na jugu, a ja živim na sjeveru grada, pa sam izabrao arenu otprilike u sredini. Ali bilo je i neugodnosti. Kanadska birokracija je dobra i susretljiva, ali, blago rečeno, zna biti pomalo nespretna. Nema problema kada se naviknete na ritam i planirate unaprijed, ali ponekad se pojave neugodni trenuci. Na primjer, na web stranici grada možete povoljno odabrati vrijeme i mjesto i rezervirati sobu, ali ne možete platiti, ni na koji način. Sami telefoniraju i prihvaćaju plaćanje karticama. Možete otići u ured i platiti u gotovini. Postojao je smiješan, ali ne baš ugodan trenutak kada sam čekao njihov poziv da platim drugi sat, nije stigao, a zadnji dan sam kasnio petnaest minuta u ured. Morao sam prići osiguranju s drskom facom i lagati da je soba rezervirana. Mi Kanađani mi vjerujemo na riječ; pustili su me mirno unutra i nisu ništa provjeravali, ali ja to ne bih učinio da ljudi već nisu na putu za nastavu.

Tako sam radio zimu i proljeće, a onda su se dogodile promjene koje su prelile čašu. Prvo, ured je bio zatvoren za posjetitelje i nudili su primanje plaćanja telefonom iza ugla. Sjedio sam na prolazu najmanje pola sata prije nego sam prošao. Drugo, ako je ranije moja draga teta od mene uzimala uplatu za sat i pol, sada se neka cura javila na telefon i rekla da je uplata samo za sat vremena. Tada je moja grupa bila troje ili dvoje ljudi, a dodatnih 12.5$ nije bilo nimalo suvišno. Naravno da sam ideološki nastrojen, ali ako me žena izbaci na ulicu, onda neće imati tko podučavati. Tada sam još bio nezaposlen.

I odlučio sam otići u knjižnicu. Knjižnice iznajmljuju prekrasne prostorije potpuno besplatno, ali postoji jedna kvaka - ne možete obavljati komercijalne aktivnosti. Čak ni dobrotvornim organizacijama nije dopušteno skupljati novac tamo. Rečeno mi je da to nije posebno kontrolirano, glavna stvar je ne uzimati novac na ulazu, ali stvarno ne volim kršiti pravila. Drugi problem je što su sobe često zauzete i teško je održavati nastavu po rasporedu u isto vrijeme na jednom mjestu. Predavala sam u knjižnicama preko ljeta i početkom zime, morala sam birati one s prostorom, a na kraju sam promijenila pet-šest knjižnica. Tada sam počeo rezervirati mjesto dva mjeseca unaprijed, a i tada sam to uspio samo u jednoj maloj knjižnici, ostale redovito nisu imale mjesta za traženo vrijeme. A onda sam odlučio kod kuće napraviti informatički razred. Objesio sam ploču, kupio drugi stol i par starih monitora iz oglasa. Na poslu mi je tvrtka kupila novi snažni laptop jer je analiza na računalu trajala gotovo 24 sata. Dakle, imao sam novo staro računalo, staro staro računalo, laptop na kojem je moj mali zgnječio ekran i prastari netbook na kojem sam sam zgnječio ekran. Sve sam ih spojio na monitore i posvuda instalirao Linux Mint, osim na netbook, na koji sam instalirao vrlo laganu distribuciju, čini se, Pappy. Još uvijek imam stari novi laptop, kupljen za 200 dolara, spojio sam ga na TV. Ono što je također važno je da nam je naš vlasnik nedavno promijenio prozore i umjesto užasne, raspadajuće bijede u sobi sada imamo nove bijele okvire. Moja supruga drži dnevni boravak, kuhinju i drugu spavaću sobu za vrtić, tako da je cijeli kat ispao čisto pedagoški. Dakle, sada je sve u redu s prostorima, idemo na nastavu.

Ogrepsti

Počinjem podučavati osnove programiranja koristeći Scratch jezik. Ovo je jezik koji koristi gotove blokove, izumljene svojedobno na MIT-u. Većina djece je već vidjela Scratch u školi, pa su ga prilično brzo prihvatili. Postoje gotovi programi i planovi lekcija, ali mi se uopće ne sviđaju. Neki su čudni – stvorite vlastitu priču, na primjer. Cijeli program sastoji se od bezbroj blokova say '<...>' for 2 seconds. Vidi se da su ga izmislili vrlo kreativni pojedinci, ali ovim pristupom možete naučiti kako napisati klasični indijski špageti kod. Od samog početka govorim o principima poput DRY.Ostale zbirke zadataka su dosta dobre, ali djeca brzo shvate bit i počnu ih raditi kao mitraljez. Kao rezultat toga, u jednoj lekciji rade ono što su trebali napraviti u pet. A traženje i odabir zadataka oduzima puno osobnog vremena. Općenito, Scratch više podsjeća ne na jezik, već na IDE, gdje se samo trebate sjetiti gdje kliknuti i gdje što tražiti. Čim se učenicima koliko-toliko bude udobno, pokušavam ih prebaciti na Python. Čak i moja sedmogodišnja djevojčica piše jednostavne programe u Pythonu. Ono što ja vidim kao prednost Scratch-a je to što sadrži osnovne koncepte koji se uče u igri. Iz nekog razloga, svima je vrlo teško, bez iznimke, razumjeti ideju varijable. Isprva sam brzo preletio temu i krenuo dalje dok se nisam suočio s činjenicom da oni uopće ne znaju što bi u vezi s tim. Sada puno vremena provodim na varijablama i stalno im se vraćam. Moraš malo glupo udarati čekićem. Mijenjam različite varijable na ekranu i tjeram ih da govore svoje vrijednosti. Scratch također ima kontrolne strukture i provjere vrijednosti, kao što su while, for ili if u pythonu. Prilično su jednostavni, ali postoje problemi s ugniježđenim petljama. Pokušavam dati nekoliko zadataka s ugniježđenom petljom, tako da je njezino djelovanje jasno. Nakon toga prelazim na funkcije. Čak i odraslima pojam funkcije nije očit, a još više djeci. Dugo pričam o tome što je uopće funkcija, pričam o tvornici koja prima artikle kao input i izdaje robu, o kuharu koji pravi hranu od sirovina. Zatim napravimo program “napravi sendvič” s proizvodima, a zatim od njega napravimo funkciju kojoj se proizvodi prosljeđuju kao parametri. Završavam učenje funkcija sa Scratchom.

piton

S pythonom je sve jednostavnije. Postoji dobra knjiga Python za djecu iz koje predajem. Tamo je sve standardno - linije, redoslijed operacija, print(), input() itd. Napisano lakim jezikom, s humorom, sviđa se djeci. Ima nedostatak koji je uobičajen za mnoge knjige o programiranju. Kao u poznatom vicu - kako nacrtati sovu. Oval - krug - sova. Prijelaz s jednostavnih pojmova na prilično složene pojmove previše je nagao. Treba mi nekoliko sesija da priložim objekt metodi točke. S druge strane, ja ne žurim, ponavljam isto na različite načine dok se barem neka slika ne spoji. Započinjem s varijablama i ponovno ih razrađujem, ovaj put u Pythonu. Varijable su neka vrsta prokletstva.

Pametan student, koji je prije par mjeseci spretno klikao varijable na Skratchu, izgleda kao ovan na novim vratima i ne zna zbrojiti X s Y, što jasno piše na ploči redak iznad. Ponavljamo! Što ima varijabla? Ime i značenje! Što znači znak jednakosti? Zadatak! Kako provjeravamo jednakost? Dvostruki znak jednako! I to ponavljamo uvijek iznova do potpunog prosvjetljenja. Zatim prelazimo na funkcije, gdje objašnjenje o argumentima traje najdulje. Imenovani argumenti, po položaju, prema zadanim postavkama i tako dalje. Još nismo stigli do nastave ni u jednoj grupi. Osim Pythona, proučavamo popularne algoritme iz knjige, više o tome kasnije.

Zapravo, trening

Moj sat je strukturiran ovako: pola sata dajem teoriju, provjeravam znanje i učvršćujem naučeno. Vrijeme je za laboratorije. Često se zanesem i pričam i do sat vremena, onda ostane pola sata za vježbu. Kad sam učio python, gledao sam tečaj Algoritmi i strukture podataka Khiryanov iz MIPT-a. Jako mi se svidjelo njegovo izlaganje i struktura njegovih predavanja. Njegova ideja je sljedeća: okviri, sintaksa, biblioteke postaju zastarjeli. Arhitektura, timski rad, sustavi kontrole verzija - još je rano. Kao rezultat toga ostaju algoritmi i strukture podataka koji su odavno poznati i uvijek će biti u sličnom obliku. Ja se osobno sjećam samo cijelih brojeva iz institutskog paskala. Budući da su moji učenici većinom mladi, od sedam do petnaest godina, smatram da je za njihovu budućnost važnije postaviti temelje nego brzo napisati platformsku igru ​​u Pythonu. Iako, oni više žele platformer, i ja ih razumijem. Dajem im jednostavne algoritme - oblačić, binarno pretraživanje u sortiranom popisu, obrnuti poljski zapis pomoću hrpe, ali analiziramo svaki od njih vrlo detaljno. Pokazalo se da moderna djeca u principu ne znaju kako računalo radi, također ću vam reći. Na svakom predavanju pokušavam povezati nekoliko pojmova. Na primjer, računalo - memorija/postotak - memorija sastavljena od ćelija (dopustit ću ti da držiš memorijski čip, pogodi koliko ćelija ima) - svaka ćelija je poput žarulje - postoje dva stanja - točno/netočno - i/ili - binarni/decimalni - 8bit = 1 bajt - bajt = 256 opcija - logički tip podataka na jednom bitu - cijeli brojevi na jednom bajtu - float na dva bajta - string na jedan bajt - najveći broj na 64 bita - lista i tuple iz prethodnih tipova. Napominjem da je u stvarnom računalu sve nešto drugačije i količina memorije za ove vrste podataka je drugačija, ali glavna stvar je da mi sami u procesu stvaramo složenije vrste podataka od jednostavnijih. Vrste podataka možda je najteže zapamtiti. Zato svaku lekciju započinjem brzim zagrijavanjem – jedan učenik imenuje vrstu podataka, drugi daje dva primjera i tako u krug. Time sam postigla da i najmlađa djeca veselo viču – lebdi! Boolean! sedam, pet! pizza, auto! Na predavanju stalno povlačim prvo jednog ili drugog, inače brzo počnu čačkati nos i gledati u strop. I svačiju razinu znanja potrebno je povremeno provjeriti.

Moji me učenici ne prestaju oduševljavati, kako svojom glupošću, tako i neočekivanom inteligencijom. Srećom, češće s inteligencijom.

Htio sam napisati još, ali ispalo je samo list. Rado ću odgovoriti na sva pitanja. Pozdravljam svaku kritiku na svaki mogući način, samo vas molim da budete tolerantniji jedni prema drugima u komentarima. Ovo je dobar članak.

Izvor: www.habr.com

Dodajte komentar