
Mans galvenais darbs saistīts ar datiem un programmēšanu par R, bet šajā rakstā es gribu pastāstīt par savu aizraušanos, kas pat patiesībā nes nelielus ienākumus. Man vienmēr ir patikuši stāstīt un skaidrot kaut ko draugiem, klasesbiedriem un kursa biedriem. Vēl man vienmēr ir bijis viegli atrast kopīgu valodu ar bērniem, nezinu, kāpēc. Vispār es uzskatu, ka bērnu audzināšana un mācīšana ir viens no vissvarīgākajiem uzdevumiem, un manai sievai ir izglītības nozare. Tātad, aptuveni pirms gada es ievietoju sludinājumu vietējā grupā Facebook, izveidoju grupu un sāku mācīt Scratch un Python reizi nedēļā. Tagad man ir piecas grupas, sava klase mājās un individuālas nodarbības. Kā es nonācu līdz šādam posmam un kā es tieši mācu bērnus, es pastāstīšu šajā rakstā.
Es dzīvoju Kanādā, Calgary pilsētā, Alberta provincē, tāpēc daži brīži būs saistīti ar vietējo specifiku.
Telpa
Telpas trūkums nodarbībām bija sākumā galvenā problēma. Es mēģināju meklēt birojus un klases nomāt pa stundām, bet ne pārāk veiksmīgi. Mūsu universitāte un SAIT — vietējais MIT analogs — iznomā klases ar datoriem un bez tiem. Cenas izrādījās diezgan augstas, un beigās izrādījās, ka universitāte neizlaiž nepilngadīgos, bet SAIT vispār iznomā tikai saviem studentiem. Tātad, šī opcija atkrita. Ir daudz biroju centri, kas iznomā sanāksmju telpas un birojus pa stundām, ir veselas uzņēmuma, kas piedāvā daudz variantu no pilnvērtīgas klases līdz mazu istabiņām četrām personām. Man bija cerības, jo Alberta ir naftas province, mums kopš 2014. gada ir ilgstoša krīze, un daudzas biznesa telpas ir tukšas. Veltīgi es cerēju, cenas izrādījās tik nenormālas, ka es pat sākumā neticēju. Īpašniekiem ir vieglāk sēdēt uz tukšiem birojiem un maksāt izdevumus, nekā samazināt cenas.
Šajā brīdī es atcerējos, ka regulāri maksāju nodokļus, un vai nav kaut kas pie mūsu dārgā valsts, precīzāk — pie Calgary pilsētas. Izrādījās, ka ir. Pilsētai ir arēnas hokejam un citiem slidošanas veidiem, un šajās arēnās ir istabas, kur nopietni ledus kari diskutē par nākotnes cīņu stratēģijām. Īsumā, pie katras arēnas ir pāris telpu ar galdiem, krēsliem, balto tāfeli un pat izlietni ar čāpu. Cena ir pavisam pieņemama — 25 Kanādas dolāri stundā. Es sākumā nolēmu rīkot nodarbības pusotru stundu, tāpēc noteicu cenu par nodarbību $35 no cilvēka grupā uz pieciem, lai segtu nomas maksu un nedaudz arī sev atliktu. Kopumā man patika nodarbības arēnās, tas atrisināja vienu no problēmām — lielākā daļa krievvalodīgo dzīvo dienvidu daļā, bet es dzīvoju pilsētas ziemeļos, tāpēc izvēlējos arēnu aptuveni pa vidu. Bet bija arī neērtības. Kanādas birokrātija ir laba un draudzīga, bet, maigi sakot, reizēm var būt nedaudz lēna. Nav problēmu, kad pierodies pie ritma un plāno iepriekš, bet dažreiz rodas nepatīkamas situācijas. Piemēram, pilsētas mājaslapā ir ērti izvēlēties laiku un vietu, rezervēt telpu, bet samaksāt nevar, nekādi. Viņi paši zvana pa telefonu un pieņem maksājumus ar karti. Varu aizbraukt uz ofisu un samaksāt skaidrā naudā. Bija smieklīga, bet ne ļoti patīkama situācija, kad es gaidīju viņu zvanu, lai samaksātu par otro nodarbību, nenogaidīju un ofisā pēdējā dienā ieraudzīju piecpadsmit minūtes par vēlu. Man bija jāiet pie apsardzes un jāizdomā stāsts, ka telpa ir rezervēta. Mēs, kanādieši, ticam uz vārda, mani mierīgi ielaida un neko nepārbaudīja, bet es tā neizdarītu, ja cilvēki jau būtu devušies uz nodarbību.
Tā es strādāju ziemā un pavasarī, bet pēc tam notika izmaiņas, kas bija pēdējā piliena. Pirmkārt, birojs tika slēgts apmeklētājiem, un piedāvāja veikt maksājumus pa tālruni ap stūri. Es vismaz pusstundu pavadīju gaidot, līdz piezvanīju. Otrkārt, ja iepriekš jaukā tante pieņēma no manis maksājumu par pusotru stundu, tad tagad pieņēma zvanu kāda meitene un paziņoja, ka maksājums ir tikai par stundu. Man tajā brīdī grupa bija trīs vai divi cilvēki, un liekie $12.5 nebija nemaz lieki. Es, protams, esmu idejiskais, bet, ja sieva mani izdzīs uz ielas, tad mācīt vairs nebūs kam. Tajā laikā man vēl bija bezdarbs.
Un es nolēmu doties uz bibliotēku. Bibliotēkās ir iespējams izmantot brīnišķīgas telpas bez maksas, taču ir viens 'bet' — nedrīkst veikt komercdarbību. Pat labdarības organizācijām nav atļauts tur vākt naudu. Man teica, ka to īpaši nekontrolē, galvenais ir nepārkāpt noteikumus un pie ieejas nepieņemt naudu, taču es ļoti nepatīk pārkāpt noteikumus. Vēl viena problēma — telpas bieži ir aizņemtas, un ir grūti organizēt nodarbības pēc grafika vienā un tajā pašā vietā. Es pasniedzu bibliotēkās vasarā un ziemas sākumā, nācās izvēlēties tās, kur ir vietas, beigu beigās mainīju piecas-sešas bibliotēkas. Pēc tam sāku rezervēt vietu divus mēnešus iepriekš, un tas izdevās tikai kādā mazā bibliotēkā, citur regulāri nebija vietu vajadzīgajā laikā. Un tad es nolēmu iekārtot datoru klasi mājās. Es uzlikšu tāfeli, nopirku pa sludinājumam otro galdu un pāris vecus monitorus. Manai firma nopirka jauno jaudīgo portatīvo datoru, jo manā datorā analīze ilga gandrīz 24 stundas. Kopumā man bija jauns vecs dators, vecs vecs dators, klēpjdators, kura ekrānu iznīcināja mans mazais, un seni netbooks, kura ekrānu iznīcināju es pats. Es visus pieslēdzu monitoriem un uzstādīju visur Linux Mint, izņemot netbook, kur uzstādīju pavisam vieglu izplatījumu, šķiet, Puppe. Man vēl ir vecs jauns klēpjdators, kurš tika nopirkts par $200, es to pieslēdzu pie televizora. Vēl, kas nav mazsvarīgi, mūsu saimnieks nesen nomainīja logus, un istabā tagad ir jauni balti rāmji. Viesistabu, virtuvi un otro guļamistabu sieva tur kā bērnudārzu, tāpēc viss stāvs iznāk tīri pedagoģisks. Tātad, tagad ar telpu viss ir kārtībā, pāriesim pie mācīšanas.
Scratch
Es sākšu sniegt programmēšanas pamatus ar Scratch valodu. Šī ir valoda, kas izmanto gatavas blokas un tika izstrādāta MIT. Lielākā daļa bērnu jau ir redzējuši Scratch skolā, tāpēc to pietiekami ātri apgūst. Ir gatavas programmas un nodarbību plāni, taču man tie vispār nepatīk. Daži ir dīvaini — izveido savu stāstu, piemēram. Visa programma sastāv no neskaitāmiem blokiem. saka '<...>' 2 sekundes. Ir redzams, ka to izdomājusi ļoti radoša personība, taču ar šādu pieeju var iemācīt rakstīt klasisku indiešu spaghetti kodu. Es no paša sākuma mācu par D.R.Y. principiem. Citi uzdevumu krājumi ir diezgan labi, bet bērni ātri saprot būtību un sāk tos pildīt kā no ložmetēja. Rezultātā vienā stundā izpilda to, ko būtu jāizpilda piecās. Un uzdevumu meklēšanai un atlasīšanai aiziet daudz personīgā laika. Kopumā Scratch vairāk atgādina nevis valodu, bet IDE, kur vienkārši jāatceras, kur jānoklikšķina un kur kas jāmeklē. Kad skolēni vairāk vai mazāk apgūst pamatus, es cenšos viņus pārcelt uz Python. Man pat septiņgadīga meitene raksta vienkāršas programmas Pythonā. Es redzu Scratch ieguvumu tajā, ka tajā ir tādi galvenie jēdzieni, kurus apgūst spēles veidā. Kāpēc visiem bez izņēmuma ir ļoti grūti saprast mainīgā jēdzienu? Es sākumā ātri pārgāju šo tēmu un devos tālāk, kamēr nesaskāros ar to, ka viņi vispār nezina, ko ar to darīt. Tagad es veltu mainīgajiem daudz laika un pastāvīgi pie tiem atgriežos. Ir jānodarbojas ar muļķīgu atkārtošanu. Es ekrānā mainu dažādus mainīgos un lieku viņiem pateikt to vērtību. Tāpat Scratch ir kontroles struktūras un vērtību pārbaudes, piemēram kamēr, for vai if Pythonā. Tos ir viegli apgūt, vienīgi ar iedziļinātām cilpām ir problēmas. Es cenšos piedāvāt dažus uzdevumus ar iedziļinātu cilpu, un lai darbība būtu vizuāli skaidra. Pēc tam es pāriešu pie funkcijām. Pat pieaugušajiem funkcijas jēdziens dažkārt ir neskaidrs, bet bērniem - jo īpaši. Es ilgi stāstu, kas ir funkcija kopumā, runāju par fabrika, kas saņem izejmateriālus un izsniedz produktus, par šefpavāru, kurš no izejmateriāliem gatavo ēdienu. Pēc tam mēs veidojam programmu „sagatavot sviestmaizi” ar produktiem, un tad no tās veidojam funkciju, kurai produkti tiek nodoti kā parametri. Ar funkciju apguvi es pabeidzot Scratch.
Python
Ar Python viss ir vienkāršāk. Ir laba grāmata Python for Kids, pēc tās es mācu. Tur viss ir standarta - virknes, darbību secība, print(), input() utt. Rakstīts vieglā valodā ar humoru, bērniem patīk. Tai ir trūkums, kas raksturīgs daudziem programmēšanas grāmatām. Kā populārā joks — kā uzzīmēt pūci. Ovals — aplis — pūce. No vienkāršiem jēdzieniem ir pārāk strauja pāreja uz diezgan sarežģītām koncepcijām. Man par to, ka objekts ir saistīts ar metodi ar punktu, aizņem vairākas nodarbības. No otras puses, es nesteidzos, atkārtoju to pašu dažādās variācijās, līdz izveidojas vismaz kāda aina. Es sāku ar mainīgajiem un vēlreiz iespringstu uz tiem, jau uz Python. Mainīgie ir kāds lāsts.
Vērīgs students, kurš pirms pāris mēnešiem veikli nospieda mainīgos uz skripta, skatās kā jērs uz jaunajiem vārtiem un nespēj salikt x ar y, kas noteikti ir uzrakstīts uz tāfeles virs. Atkārtojam! Ko piedāvā mainīgais? Vārds un vērtība! Ko nozīmē vienādības zīme? Piešķiršana! Un kā mēs pārbaudīsim vienlīdzību? Divreiz vienādā zīme! Un tā atkārtojam vēl un vēl, līdz pilnīgai apgaismošanai. Tad pārejam pie funkcijām, tur visvairāk laika aizņem skaidrojums par argumentiem. Nosaukti argumenti, pēc pozīcijām, pēc noklusējuma un tā tālāk. Pie klasēm mēs vēl nevienā grupā neesam nonākuši. Papildus Python mēs studējam populārus algoritmus, par to vēlāk.
Faktiski apmācība
Manā stundā ir tā — pusstunda, ko es sniedzu teorijā, pārbaudu zināšanas, nostiprināju, ko esmu apguvis. Stunda — laboratorijas darbi. Bieži es ievelku un runāju līdz stundai, tad praktikai atstāju pusstundu attiecīgi. Kad es mācījos Python, es apskatīju kursu Algoritmi un dati struktūras Hiryanova no MFTI. Man ļoti patika viņa izklāsts un lekciju struktūra. Viņa ideja ir tāda — ietvari, sintakse, bibliotēkas — noveco. Arhitektūra, komandas darbs, versiju kontroles sistēmas — vēl ir pāragri. Rezultātā paliek algoritmi un datu struktūras, kas ir sen zināmas un vienmēr paliks līdzīgā veidā. Es pats no institūta Pascala atceros tikai veselos skaitļus. Tāpēc, ka man ir skolēni, galvenokārt jaunieši, no septiņiem līdz piecpadsmit gadiem, es uzskatu, ka viņu nākotnei ir svarīgāk ielikt pamatus, nevis steidzoties uzrakstīt platformeri Python valodā. Lai gan viņiem vairāk gribas platformeri, un es viņus saprotu. Es viņiem dodu vienkāršus algoritmus — burbuļošanu, bināro meklēšanu sakārtotā sarakstā, apgriezto Polijas pierakstu ar kaudzi, bet mēs katru analizējam ļoti detalizēti. Izrādījās, ka mūsdienu bērni vispār nezina, kā darbojas dators, to arī stāstu. Es cenšos katrā lekcijā sasaistīt vairākus jēdzienus kopā. Piemēram, dators — atmiņa/procesors — atmiņa no šūnām (dod iespēju turēt atmiņas bloku, uzmini, cik šeit ir šūnu) — katra šūna kā lampiņa — ir divi stāvokļi — true/false — and/or — binārs/decimāls — 8 biti = 1 bytes — bytes = 256 varianti — loģiskā datu tips vienā bitā — veseli skaitļi vienā bytes — float uz diviem baitiem — string uz vienu baitu — lielākais skaitlis 64 bitos — saraksts un tuplis no iepriekšējiem tipiem. Es norādu, ka reālajā datorā viss ir nedaudz savādāk un cits atmiņas skaits šiem datu tipiem, bet galvenais, ka mēs pašā procesā veidojam sarežģītākus datu tipus no vienkāršiem. Datu tipi, iespējams, ir visgrūtākā lieta, ko jāatceras. Tāpēc es katru nodarbību sāku ar ātru iesildīšanos — viens skolēns nosauc datu tipu, nākamais piedāvā divus piemērus, un tā pa apli. Rezultātā esmu panācis to, ka pat visjaunākie bērni ar prieku sauc — float! boolean! septiņi, pieci! pica, auto! Lekcijas laikā es pastāvīgi uzdodu jautājumus vienam, tad otram, citādi viņi ātri sāk rokoties degunā un skatīties griestos. Jā, un katra zināšanu līmenis ir jāpārbauda starp citu.
Mani skolēni nepārstāj mani pārsteigt gan ar savu stulbumu, gan ar negaidītu asredzību. Par laimi, asredzība notiek biežāk.
Gribēju uzrakstīt vairāk, bet tāpat sanāca garš teksts. Ar prieku atbildēšu uz visiem jautājumiem. Jebkāda kritika ir laipni gaidīta, tikai lūdzu — esiet tolerantāki cits pret citu komentāros. Tā ir laba raksts.
Avots: habr.com
