Kaip aš mokau vaikus Python

Kaip aš mokau vaikus Python

Mano pagrindinis darbas susijęs su duomenimis ir programavimu R, tačiau šiame straipsnyje noriu pakalbėti apie savo hobį, kuris netgi atneša tam tikrų pajamų. Man visada buvo įdomu pasakoti ir paaiškinti dalykus draugams, klasės draugams ir bendramoksliams. Taip pat man visada buvo lengva rasti bendrą kalbą su vaikais, nežinau kodėl. Apskritai manau, kad vaikų auginimas ir mokymas yra viena iš svarbiausių veiklų, o mano žmona yra mokytoja. Taigi maždaug prieš metus paskelbiau reklamą vietinėje Facebook grupėje, sukūriau grupę ir kartą per savaitę pradėjau mokyti Scratch ir Python. Dabar turiu penkias grupes, savo klasę namuose ir individualias pamokas. Kaip aš pradėjau taip gyventi ir kaip tiksliai mokau vaikus, papasakosiu šiame straipsnyje.

Aš gyvenu Kalgaryje, Albertoje, Kanadoje, todėl kai kurie dalykai bus susiję su vietine specifika.

Kambarys

Nuo pat pradžių didelį susirūpinimą kėlė vietos praktikai. Bandžiau ieškoti nuomojamų biurų ir klasių valandomis, bet nelabai sekėsi. Mūsų universitetas ir SAIT, vietinis MIT atitikmuo, siūlo pamokas su kompiuteriais ir be jų. Kainos ten pasirodė nelabai humaniškos, o galiausiai paaiškėjo, kad universitetas nepilnamečių neįleidžia, o SAIT apskritai nuomoja tik savo studentams. Taigi ši galimybė buvo pašalinta. Yra daug biurų centrų, kurie nuomoja posėdžių sales ir biurus valandomis, yra ištisos įmonės, kurios siūlo daugybę variantų nuo pilnos klasės iki keturių žmonių kambario. Turėjau vilčių, kadangi Alberta yra naftos provincija, nuo 2014 metų išgyvename vangią krizę, o daugelis verslo erdvių yra tuščios. Neturėjau tikėtis, kad kainos pasirodė tokios siaubingos, kad iš pradžių net netikėjau. Savininkams lengviau sėdėti tuščiuose biuruose ir mokėti išlaidas, nei išmesti.

Tą akimirką prisiminiau, kad reguliariai moku mokesčius ir ar mūsų brangioji valstija, tiksliau, Kalgario miestas, turi ką nors ten. Paaiškėjo, kad tikrai yra. Mieste yra ledo ritulio ir kitų dailiojo čiuožimo sporto šakų arenos, o šiose arenose yra patalpų, kuriose tvirti ledo kariai aptaria ateities kovų strategijas. Trumpai tariant, kiekvienoje arenoje yra pora kambarių su stalais, kėdėmis, balta lenta ir net kriauklė su virduliu. Kaina visai dieviška – 25 kanadietiški tugrikai už valandą. Iš pradžių nusprendžiau daryti pamokas pusantros valandos, todėl penkių žmonių grupėje nustačiau pamokos kainą – 35 USD už klasę, kompensuodama nuomą ir ką nors įsidėti į kišenę. Apskritai man patiko mankštintis arenose, tai išsprendė vieną iš problemų – dauguma rusakalbių gyvena pietuose, o aš gyvenu miesto šiaurėje, todėl areną pasirinkau maždaug per vidurį. Tačiau buvo ir nemalonumų. Kanados biurokratija gera ir draugiška, bet, švelniai tariant, gali būti kiek nerangi. Pripratus prie ritmo ir planuojant iš anksto problemų nekyla, tačiau kartais pasitaiko nemalonių akimirkų. Pavyzdžiui, miesto svetainėje galite patogiai pasirinkti laiką ir vietą bei rezervuoti kambarį, tačiau jokiu būdu negalite mokėti. Jie patys skambina ir priima atsiskaitymus kortelėmis. Galite eiti į biurą ir sumokėti grynaisiais. Buvo juokinga, bet ne itin maloni akimirka, kai laukiau jų skambučio susimokėti už antrą pamoką, ji neatėjo, o paskutinę dieną pavėlavau į biurą penkiolika minučių. Teko įžūliu veidu prieiti prie apsaugos ir pameluoti, kad kambarys rezervuotas. Mes, kanadiečiai, mano žodį, jie mane ramiai įleido ir nieko netikrino, bet aš to nedaryčiau, jei žmonės jau nebūtų pakeliui į pamokas.

Taip dirbau žiemą ir pavasarį, o paskui įvyko pokyčiai, kurie buvo paskutinis lašas. Pirma, biuras buvo uždarytas lankytojams ir jie pasiūlė atsiskaityti telefonu už kampo. Sėdėjau ant praėjimo mažiausiai pusvalandį, kol įėjau. Antra, jei anksčiau brangioji teta iš manęs mokėjo už pusantros valandos, tai dabar telefonu atsiliepė kažkokia mergina ir pasakė, kad mokėjimas tik už valandą. Tuo metu mano grupėje buvo trys arba du žmonės, o papildomi 12.5 USD nebuvo pertekliniai. Žinoma, aš esu idėjinis, bet jei žmona mane išmes į gatvę, tada nebus kam mokyti. Tada dar buvau bedarbis.

Ir nusprendžiau nueiti į biblioteką. Bibliotekos nuostabius kambarius išnuomoja visiškai nemokamai, tačiau yra vienas dalykas - jūs negalite vykdyti komercinės veiklos. Net labdaros organizacijoms ten neleidžiama rinkti pinigų. Man buvo pasakyta, kad tai nėra ypač kontroliuojama, svarbiausia neimti pinigų prie įėjimo, bet aš tikrai nemėgstu laužyti taisyklių. Kita bėda – patalpos dažnai būna užimtos ir sunku vienu metu vesti suplanuotus užsiėmimus vienoje vietoje. Vasarą ir žiemos pradžioje dėsčiau bibliotekose, turėjau rinktis tas, kuriose yra vietos, ir galiausiai pakeičiau penkias šešias bibliotekas. Tada pradėjau rezervuoti vietą prieš du mėnesius, o ir tada tai pavykdavo padaryti tik vienoje mažoje bibliotekoje, likusieji nuolat neturėjo vietų reikiamam laikui. Ir tada nusprendžiau namuose padaryti kompiuterių klasę. Pakabinau lentą, nusipirkau antrą stalą ir porą senų monitorių iš skelbimo. Darbe įmonė man nupirko naują galingą nešiojamąjį kompiuterį, nes analizė mano kompiuteryje truko beveik 24 valandas. Taigi, aš turėjau naują seną kompiuterį, seną seną kompiuterį, nešiojamąjį kompiuterį, kuriame mano mažasis sutraiškė ekraną, ir senovinį internetinį kompiuterį, kuriame aš pats sutraiškiau ekraną. Visus prijungiau prie monitorių ir visur įdiegiau Linux Mint, išskyrus netbooką, kuriame įdiegiau labai lengvą paskirstymo rinkinį, atrodo, Pappy. Dar turiu seną naują nešiojamąjį kompiuterį, pirkau už 200$, prijungiau prie televizoriaus. Be to, kas svarbu, mūsų šeimininkas neseniai pakeitė langus, o dabar vietoje baisaus, aptrupėjusio niūrumo kambaryje – nauji balti rėmai. Mano žmona pasilieka svetainę, virtuvę ir antrą miegamąjį darželiui, todėl visas aukštas pasirodė grynai pedagoginis. Taigi, dabar su patalpomis viskas gerai, pereikime prie mokymo.

Nubrėžti

Pradedu dėstyti programavimo pagrindus naudojant „Scratch“ kalbą. Tai kalba, kurioje naudojami paruošti blokai, vienu metu išrasta MIT. Daugelis vaikų jau yra matę „Scratch“ mokykloje, todėl gana greitai jį pasiima. Yra paruoštų programų ir pamokų planų, bet jie man visiškai nepatinka. Kai kurios keistos – pavyzdžiui, sukurkite savo istoriją. Visa programa susideda iš daugybės blokų say '<...>' for 2 seconds. Galima pastebėti, kad jį išrado labai kūrybingi asmenys, tačiau tokiu būdu galite išmokyti rašyti klasikinį Indijos spagečių kodą. Nuo pat pradžių kalbu apie tokius principus kaip DRY Kiti užduočių rinkiniai yra gana geri, tačiau vaikai greitai suvokia esmę ir pradeda jas atlikti kaip kulkosvaidis. Dėl to jie per vieną pamoką daro tai, ką turėjo padaryti per penkias. O užduočių paieška ir parinkimas atima daug asmeninio laiko. Apskritai Scratch labiau primena ne kalbą, o IDE, kur tereikia prisiminti, kur paspausti ir kur ko ieškoti. Kai tik studentams daugiau ar mažiau patogu, stengiuosi juos perkelti į Python. Net mano septynerių metų mergaitė rašo paprastas programas Python kalba. Manau, kad „Scratch“ pranašumas yra tas, kad jame yra pagrindinės sąvokos, kurių išmokstama žaismingu būdu. Dėl tam tikrų priežasčių visiems be išimties labai sunku suprasti kintamojo idėją. Iš pradžių greitai perbraukiau temą ir ėjau toliau, kol susidūriau su tuo, kad jie net nežino, ką su tuo daryti. Dabar daug laiko skiriu kintamiesiems ir nuolat prie jų grįžtu. Jūs turite padaryti kokį kvailą plaktuką. Keičiu skirtingus kintamuosius ekrane ir priverčiu juos pasakyti savo reikšmes. „Scratch“ taip pat turi valdymo struktūras ir vertės patikrinimus, pvz while, for arba if python'e. Jie yra gana paprasti, tačiau yra problemų su įdėtomis kilpomis. Stengiuosi pateikti keletą užduočių su įdėta kilpa ir taip, kad jos veiksmas būtų aiškus. Po to pereinu prie funkcijų. Net ir suaugusiems funkcijos samprata nėra akivaizdi, o vaikams tuo labiau. Ilgai pasakoju apie tai, kas apskritai yra funkcija, kalbu apie gamyklą, kuri gauna prekes kaip įvestis ir išduoda prekes, apie virėją, gaminantį maistą iš žaliavų. Tada su produktais darome programą „padaryti sumuštinį“, o tada iš jos darome funkciją, kuriai produktai perduodami kaip parametrai. Mokytis funkcijas baigiu su Scratch.

Python

Su python viskas paprasčiau. Yra gera knyga Python for Kids, iš kurios aš ir mokau. Ten viskas standartiškai – linijos, operacijų tvarka, print(), input() ir tt Parašyta lengva kalba, su humoru, vaikams patinka. Jis turi trūkumą, būdingą daugeliui programavimo knygų. Kaip ir garsiame pokšte – kaip nupiešti pelėdą. Ovalas – apskritimas – pelėda. Perėjimas nuo paprastų prie gana sudėtingų sąvokų yra per staigus. Man prireikia kelių seansų, kad prisegčiau objektą prie taško metodo. Kita vertus, neskubu, tą patį kartoju įvairiais būdais, kol bent koks vaizdas susidėlioja. Pradedu nuo kintamųjų ir vėl juos ištraukiu, šį kartą Python. Kintamieji yra savotiškas prakeiksmas.

Protingas studentas, kuris prieš porą mėnesių mikliai spustelėjo kintamuosius ant Skratch, atrodo kaip avinas prie naujų vartų ir negali pridėti X su Y, kuris aiškiai parašyta lentoje eilute aukščiau. Mes kartojame! Ką turi kintamasis? Vardas ir prasmė! Ką reiškia lygybės ženklas? Užduotis! Kaip mes patikriname lygybę? Dvigubas lygybės ženklas! Ir tai kartojame vėl ir vėl iki visiško nušvitimo. Tada pereiname prie funkcijų, kur argumentų paaiškinimas užtrunka ilgiausiai. Vardiniai argumentai, pagal poziciją, pagal numatytuosius nustatymus ir pan. Dar nepasiekėme pamokų nei vienoje grupėje. Be Python, mes studijuojame populiarius algoritmus iš knygos, daugiau apie tai vėliau.

Tiesą sakant, treniruotės

Mano pamoka sudaryta taip: pusvalandį dėstau teoriją, pasitikrinu žinias ir įtvirtinu tai, kas išmokta. Atėjo laikas laboratorijoms. Dažnai užsiimu ir kalbu iki valandos, tada lieka pusvalandis praktikai. Kai mokiausi pitono, žiūrėjau kursą Algoritmai ir duomenų struktūros Khiryanovas iš MIPT. Man labai patiko jo pristatymas ir paskaitų struktūra. Jo idėja tokia: karkasai, sintaksė, bibliotekos pasensta. Architektūra, komandinis darbas, versijų valdymo sistemos – dar anksti. Dėl to išlieka algoritmai ir duomenų struktūros, kurios buvo žinomos ilgą laiką ir visada bus panašios formos. Aš pats prisimenu tik sveikuosius skaičius iš instituto pascal. Kadangi mano mokiniai dažniausiai jauni, nuo septynerių iki penkiolikos metų, manau, kad jų ateičiai svarbiau padėti pamatus nei greitai parašyti platformos žaidimą Python. Nors jie labiau nori platformingo, ir aš juos suprantu. Pateikiu jiems paprastus algoritmus – burbulas, dvejetainė paieška surūšiuotame sąraše, atvirkštinis lenkiškas žymėjimas naudojant krūvą, bet kiekvieną analizuojame labai detaliai. Paaiškėjo, kad šiuolaikiniai vaikai iš principo nežino, kaip veikia kompiuteris, aš taip pat jums pasakysiu. Kiekvienoje paskaitoje stengiuosi susieti kelias sąvokas. Pavyzdžiui, kompiuteris - atmintis/procentai - atmintis, sudaryta iš ląstelių (leisiu laikyti atminties lustą, atspėkite, kiek ten ląstelių) - kiekviena ląstelė yra kaip lemputė - yra dvi būsenos - tiesa / klaidinga - ir (arba) - dvejetainis / dešimtainis - 8 bitai = 1 baitas - baitas = 256 parinktys - loginis duomenų tipas viename bite - sveikieji skaičiai viename baite - float ant dviejų baitų - string viename baite – didžiausias 64 bitų skaičius – sąrašas ir eilė iš ankstesnių tipų. Darau išlygą, kad tikrame kompiuteryje viskas yra kiek kitaip ir šių duomenų tipų atminties kiekis yra skirtingas, tačiau svarbiausia, kad mes patys proceso metu kuriame sudėtingesnius duomenų tipus iš paprastesnių. Duomenų tipus turbūt sunkiausia atsiminti. Todėl kiekvieną pamoką pradedu nuo greito apšilimo – vienas mokinys įvardija duomenų tipą, kitas pateikia du pavyzdžius ir taip ratu. Dėl to pasiekiau, kad net mažiausieji vaikai linksmai šaukia – plūduriuok! logiška! septyni, penki! pica, mašina! Per paskaitą nuolat traukiu pirmas vieną ar kitą, antraip greitai pradeda krapštyti nosį ir žiūrėti į lubas. Ir kiekvieno žinių lygį reikia retkarčiais patikrinti.

Mano mokiniai nenustoja stebinti tiek savo kvailumu, tiek netikėtu sumanumu. Laimei, dažniau su intelektu.

Norėjau parašyti daugiau, bet pasirodė, kad tai tik lapas. Mielai atsakysiu į visus klausimus. Priimu bet kokią kritiką visaip, tik prašau būti tolerantiškesniems vienas kitam komentaruose. Tai geras straipsnis.

Šaltinis: www.habr.com

Добавить комментарий