
Principala mea activitate este legată de date și programare în R, dar în acest articol vreau să vă povestesc despre pasiunea mea, care chiar aduce un venit. Mi-a plăcut întotdeauna să explic și să povestesc ceva prietenilor, colegilor de clasă și universitate. De asemenea, întotdeauna mi-a fost ușor să găsesc un limbaj comun cu copiii, nu știu de ce. În general, consider că educația și instruirea copiilor sunt unele dintre cele mai importante activități, iar soția mea este pedagog. Așadar, cu aproximativ un an în urmă, am pus un anunț în grupul local de pe Facebook, am strâns un grup și am început să predau Scratch și Python o dată pe săptămână. Acum am cinci grupuri, o clasă în casă și sesiuni individuale. Cum am ajuns la această activitate și cum îi învăț pe copii, vă voi povesti în acest articol.
Locuiesc în Canada, în orașul Calgary, provincia Alberta, așa că unele aspecte vor fi legate de specificitatea locală.
Spațiul
Disponibilitatea unui loc pentru cursuri a fost, încă de la început, principala problemă. Am încercat să caut birouri și clase de închiriat pe oră, dar nu cu foarte mare succes. Universitatea noastră și SAIT - echivalentul local al MIT - închiriază săli cu computere și fără. Prețurile s-au dovedit a fi destul de mari, iar în cele din urmă am aflat că universitatea nu permite accesul minorilor, iar SAIT închiriază doar studenților săi. Așadar, această opțiune a fost exclusă. Există multe centre de birouri care închiriază camere pentru ședințe și birouri pe oră, există chiar companii care oferă o mulțime de opțiuni, de la o clasă completă la o cameră pentru patru persoane. Am avut speranțe, deoarece Alberta este o provincie petrolieră și avem, din 2014, o criză lentă; multe spații de afaceri sunt goale. Am sperat degeaba, prețurile s-au dovedit a fi atât de mari încât la început nici nu am crezut. Este mai simplu pentru proprietari să își lase birourile neocupate și să plătească cheltuielile decât să dezvolte o strategie de prețuri mai competitivă.
În acel moment, mi-am amintit că îmi plătesc impozitele la timp și m-am întrebat dacă există ceva pentru statul nostru drag, mai precis pentru orașul Calgary. S-a dovedit că da, există. Orașul are arene pentru hochei și alte sporturi de gheață, iar în aceste arene sunt camere unde războinicii de gheață discută strategii pentru viitoarele bătălii. Pe scurt, lângă fiecare arenă sunt câteva camere cu mese, scaune, tablă și chiar și un chiuvetă cu un ceainic. Prețul este destul de rezonabil – 25 de dolari canadieni pe oră. Am decis să organizez cursuri de o oră și jumătate, așa că am stabilit prețul la 35 de dolari de persoană într-un grup de cinci, pentru a acoperi costul chiriei și, bineînțeles, să-mi pun ceva în buzunar. În general, îmi plăcea să țin cursurile în arene, deoarece rezolva o problemă – majoritatea vorbitorilor de limbă rusă locuiesc în sud, iar eu locuiesc în nordul orașului, așa că am ales o arenă situată cam în centru. Dar erau și inconveniente. Birocrația canadiană este bună și prietenoasă, dar, ca să o spunem blând, adesea poate fi puțin neeficientă. Nu sunt probleme când te obișnuiești cu ritmul și planifici din timp, dar uneori apar momente neplăcute. De exemplu, pe site-ul orașului poți să alegi ușor ora și locul, să rezervi o cameră, dar nu poți plăti, în niciun fel. Ei te sună și acceptă plata cu cardul. Poți merge la birou și plăti în numerar. A fost un moment amuzant, dar nu prea plăcut, când așteptam apelul lor pentru a plăti pentru a doua sesiune, nu am primit apelul, iar la birou am întârziat cu cincisprezece minute în ultima zi. A trebuit să mă apropii de securitate cu o față îndrăzneață și să mint că camera era rezervată. Noi, canadienii, credem pe cuvânt, m-au lăsat să intru fără probleme și nu au verificat nimic, dar nu aș fi procedat așa dacă oamenii nu ar fi fost deja în drum spre sesiune.
Așa că am lucrat iarna și primăvara, iar apoi au avut loc schimbări care au fost picătura care a umplut paharul. În primul rând, biroul a fost închis pentru vizitatori și au propus să acceptă plăți la telefon, la colț. Am stat cel puțin o jumătate de oră pe hol înainte să reușesc să sun. În al doilea rând, dacă înainte o doamnă drăguță îmi lua plata pentru o oră și jumătate, acum a răspuns la telefon o fată și a zis că plata este doar pentru o oră. La acea vreme aveam grupuri de trei sau două persoane, iar cei 12,5 dolari în plus nu erau deloc de neglijat. Desigur, eu sunt dedicat, dar dacă soția mă dă afară, nu va mai fi nimeni să predau. Atunci eram și fără loc de muncă.
Am decis să merg la bibliotecă. Bibliotecile oferă camere minunate complet gratuit, dar există un dar — nu este permisă activitatea comercială. Chiar și organizațiile de caritate nu au voie să strângă bani acolo. Mi s-a spus că acest lucru nu este foarte controlat, atâta timp cât nu iei bani la intrare, dar eu nu îmi place să încalc regulile. O altă problemă este că sălile sunt adesea ocupate și este greu să organizezi cursuri conform programului într-un singur loc. Am predat în biblioteci pe timpul verii și la începutul iernii, a trebuit să aleg acele locuri care aveau disponibilitate, în cele din urmă am schimbat cinci-șase biblioteci. Apoi am început să rezerv locuri cu două luni înainte, și totuși, am reușit să fac asta doar într-o bibliotecă mică, în celelalte nu erau locuri disponibile la ora dorită. Și atunci am decis să fac o sală de calculatoare acasă. Am pus o tablă, am cumpărat un birou second-hand și câteva monitoare vechi. Firma mi-a cumpărat un laptop nou și puternic pentru muncă, pentru că analiza pe computerul meu dura aproape 24 de ore. În total, aveam un computer nou-vechi, un computer vechi, un laptop al cărui ecran a fost strivit de fiul meu și un netbook antic, pe care eu l-am distrus. Le-am conectat pe toate la monitoare și am instalat Linux Mint peste tot, cu excepția netbook-ului, pentru care am pus o distribuție foarte ușoară, cred că Puppy. Mai am un laptop folosit recent, cumpărat cu 200 de dolari, pe care l-am conectat la televizor. De asemenea, este important că proprietarul nostru ne-a schimbat feroneria recent, iar acum, în cameră, avem rame albe noi în locul mizeriei distruse. Camera de zi, bucătăria și a doua dormitor sunt folosite ca grădiniță de soția mea, așa că întreg etajul a devenit unul pur educațional. Așadar, acum că am rezolvat problema spațiului, să trecem la predare.
Scratch
Încep să predau noțiunile de bază ale programării cu Scratch. Este un limbaj care folosește blocuri predefinite, creat la vremea sa la MIT. Cei mai mulți dintre copii au văzut deja Scratch la școală, așa că se adaptează destul de repede. Există programe gata făcute și planuri de lecții, dar mie nu-mi plac deloc. Unele sunt ciudate — de exemplu, „creează-ți povestea ta”. Întreaga programă constă din nenumărate blocuri. say '' for 2 seconds. Se observă că a fost creat de personalități foarte creative, dar cu o astfel de abordare se poate învăța să scrii cod spaghetti clasic indian. Eu, însă, de la bun început povestesc despre principii precum D.R.Y. Alte colecții de exerciții sunt destul de bune, dar copiii înțeleg rapid esența și încep să le rezolve ca din pușcă. În cele din urmă, într-o singură lecție fac ceea ce ar fi trebuit să facă în cinci. Și pentru căutarea și selectarea exercițiilor se pierde mult timp personal. În general, Scratch mai degrabă seamănă cu o IDE, unde trebuie pur și simplu să memorezi unde să dai clic și unde să cauți ceea ce îți trebuie. De îndată ce elevii se descurcă mai bine, încerc să îi trec pe Python. Am chiar o fetiță de șapte ani care scrie programe simple în Python. Ce văd eu ca beneficiu al Scratch-ului este că introduce noțiuni de bază, care sunt asimilate într-o formă ludică. Cumva, tuturor fără excepție le este foarte greu să înțeleagă ideea de variabilă. La început, parcurgeam rapid acest subiect și treceam mai departe, până când mă confruntam cu faptul că ei nu știau deloc ce să facă cu aceasta. Acum dedik mult timp variabilelor și revin constant la ele. Trebuie să mă ocup de o repetare obositoare. Eu schimb diferite variabile pe ecran și îi fac să spună valoarea lor. De asemenea, în Scratch sunt structuri de control și verificări de valori, de tipul while, for sau if în Python. Acestea sunt prezentate destul de ușor, însă cu buclele imbricate apar probleme. Încerc să ofer câteva sarcini cu bucle imbricate, astfel încât acțiunea acestora să fie vizibilă. După aceea, trec la funcții. Chiar și pentru adulți, conceptul de funcție poate fi neclar, iar pentru copii — cu atât mai mult. Vorbesc mult timp despre ce este o funcție, explic idee de fabrică, care primește obiecte ca intrare și dă produse ca ieșire, sau despre bucătarul care transformă ingredientele crude în mâncare. Apoi, realizăm un program „fă un sandviș” cu ingrediente și apoi îl transformăm într-o funcție, căreia ingredientele îi sunt transmise ca parametri. Pe studiul funcțiilor închei cu Scratch.
Python
Cu Python este mai simplu. Există o carte bună, Python for Kids, pe care o folosesc pentru predare. Totul este standard — șiruri, ordinea operațiunilor, print(), input() și așa mai departe. Scris într-un limbaj accesibil, cu umor, îi place copiilor. Are un dezavantaj, specific multor cărți de programare. Ca în cunoscuta glumă — cum să desenezi o bufniță. Oval — cerc — bufniță. De la conceptele simple există o tranziție prea abruptă către concepte destul de complexe. Îmi ia câteva lecții să explic că un obiect se leagă de metodă prin punct. Pe de altă parte, nu mă grăbesc, repet același lucru în diferite moduri până când se conturează măcar o imagine. Încep cu variabilele și continui să le repet, deja în Python. Variabilele sunt o adevărată blestem.
Un student isteț, care cu câteva luni în urmă jongla cu variabilele pe Scratch, se uită ca un miel la porțile noi și nu poate să adune x cu y, care este evident scris mai sus pe tablă. Repetăm! Ce are o variabilă? Nume și valoare! Ce înseamnă semnul egal? Atribuire! Și cum verificăm egalitatea? Semnul egal dublu! Și continuăm să repetăm din nou și din nou, până la iluminare completă. Apoi trecem la funcții, unde expunerea despre argumente durează cel mai mult. Argumente numite, după poziții, cu valori implicite și așa mai departe. Nu am ajuns încă la clase în niciun grup. Pe lângă Python din carte, studiem algoritmi populari, despre asta mai departe.
De fapt, învățarea
Lecția mea este organizată astfel — o jumătate de oră ofer teorie, verific know-how-ul și consolidăm cele învățate. O oră — laboratoare. Adesea mă las în voia inspirației și vorbesc până la o oră, atunci rămâne o jumătate de oră pentru practică, în consecință. Când am învățat Python, am parcurs un curs Algoritmi și Structuri de Date Hiryanova de la MFTI. Mi-a plăcut foarte mult prezentarea și structura lecțiilor sale. Ideea lui este că framework-urile, sintaxa, bibliotecile devin învechite. Arhitectura, munca în echipă, sistemele de control al versiunilor — este încă prea devreme. În final, rămân algoritmii și structurile de date, care sunt bine cunoscute și vor rămâne în formate similare. Eu însumi îmi amintesc doar de intergeri din Pascal-ul instituțional. Deoarece elevii mei sunt în principal tineri, cu vârste cuprinse între șapte și cincisprezece ani, consider că pentru viitorul lor este mai important să le oferim fundamentul, decât să scriem cât mai repede un platformer în Python. Totuși, ei își doresc mai mult un platformer, și îi înțeleg. Le dau algoritmi simpli — sortarea prin bule, căutarea binară într-o listă sortată, notația poloneză inversă folosind o stivă, dar discutăm fiecare în detaliu. A ieșit la iveală că copiii moderni nu știu în principiu cum funcționează un computer, așa că le explic și asta. Mă străduiesc să le corelez concepte diferite în fiecare lecție. De exemplu, computerul — memorie/procesor — memoria formată din celule (le dau să țină un modul de memorie, ghiciți câte celule sunt aici) — fiecare celulă ca o lampă — există două stări — true/false — and/or — binar/decimal — 8 biți = 1 byte — byte = 256 variante — tip de date logic pe un bit — numere întregi pe un byte — float pe două bytes — string pe un byte — cea mai mare număr pe 64 biți — listă și tuple din tipurile anterioare. Menționez că în realitate, în computere, lucrurile sunt oarecum diferite și cantitatea de memorie pentru aceste tipuri de date este diferită, dar principalul este că noi, în proces, creăm tipuri de date mai complexe din cele mai simple. Tipurile de date sunt, probabil, cele mai dificile de reținut. De aceea, încep fiecare lecție cu o scurtă încălzire — un elev numește un tip de dată, următorul oferă două exemple, și așa mai departe, în cerc. În final, am reușit să fac astfel încât chiar și cei mai tineri copii strigă voioși — float! boolean! seven, five! pizza, car! În timpul lecției, îi provoc mereu pe unii și pe alții, altfel încep repede să se scarpine în nas și să se uite în tavan. De asemenea, trebuie să verific nivelul de cunoștințe al fiecăruia din când în când.
Elevii mei mă surprind continuu atât prin lipsa lor de inteligență, cât și prin inteligența lor neașteptată. Din fericire, inteligența este, de cele mai multe ori, mai frecventă.
Aș fi vrut să scriu mai mult, dar așa a ieșit deja un text lung. Voi răspunde cu plăcere la toate întrebările. Accept orice critică, dar vă rog — să fim mai toleranți unii cu alții în comentarii. Este un articol constructiv.
Sursa: habr.com
