Hoe leer ik Python aan kinderen?

Hoe leer ik Python aan kinderen?

Mijn belangrijkste werk is gerelateerd aan data en programmeren R, maar in dit artikel wil ik het hebben over mijn hobby, die zelfs wat inkomsten oplevert. Ik ben altijd geïnteresseerd geweest in het vertellen en uitleggen van iets aan vrienden, klasgenoten en klasgenoten. Het was ook altijd gemakkelijk voor mij om een ​​gemeenschappelijke taal te vinden met kinderen, ik weet niet waarom. Over het algemeen geloof ik dat het opvoeden en opvoeden van kinderen een van de belangrijkste activiteiten van allemaal is, en mijn vrouw is lerares. Dus, ongeveer een jaar geleden, adverteerde ik in een lokale Facebook-groep, kreeg een groep en begon eenmaal per week scratch en python les te geven. Nu heb ik vijf groepen, een eigen klas in huis en individuele lessen. Hoe ik tot zo'n leven ben gekomen en hoe ik kinderen precies lesgeef, zal ik in dit artikel vertellen.

Ik woon in Canada, Calgary, Alberta, dus sommige punten zullen verband houden met lokale bijzonderheden.

De kamer

Een plek om te oefenen was vanaf het begin een groot probleem. Ik probeerde kantoren en klassen te zoeken om per uur te huren, maar niet erg succesvol. Onze universiteit en SAIT - het lokale equivalent van MIT - volgen lessen met en zonder computers. De prijzen daar bleken niet erg humaan, maar uiteindelijk bleek dat de universiteit geen minoren toelaat en SAIT over het algemeen alleen aan haar studenten verhuurt. Die optie viel dus af. Er zijn veel kantoorcentra die vergaderruimtes en kantoren per uur verhuren, er zijn hele bedrijven die een heleboel mogelijkheden bieden, van een volwaardige klas tot een kamer voor vier personen. Ik had hoop, aangezien Alberta een olieprovincie is, hebben we sinds 2014 een crisis op laag niveau en veel bedrijfsgebieden staan ​​leeg. Ik hoopte tevergeefs, de prijzen bleken zo hoog dat ik het eerst niet eens geloofde. Het is gemakkelijker voor eigenaren om in lege kantoren te zitten en onkosten te betalen dan te dumpen.

Op dat moment herinnerde ik me dat ik regelmatig belasting betaal, en of onze lieve staat, of liever de stad Calgary, daar iets heeft. Het bleek dat er echt is. De stad heeft arena's voor hockey en ander kunstschaatsen, en in deze arena's zijn er kamers waar stoere ijsstrijders strategieën bespreken voor toekomstige veldslagen. Kortom, elke arena heeft een aantal kamers met tafels, stoelen, een whiteboard en zelfs een wasbak met waterkoker. De prijs is vrij goddelijk - 25 Canadese tugriks per uur. Ik besloot aanvankelijk om anderhalf uur lessen te volgen, dus ik stelde de prijs vast voor een les van $ 35 per neus in een groep van vijf personen om de huur te compenseren, nou ja, om iets in mijn zak te steken. Over het algemeen trainde ik graag in arena's, het loste een van de problemen op - de meeste Russischtaligen wonen in het zuiden en ik woon in het noorden van de stad, dus ik koos de arena ongeveer in het midden. Maar er waren ook ongemakken. De Canadese bureaucratie is goed en vriendelijk, maar kan op zijn zachtst gezegd een beetje traag zijn. Er zijn geen problemen als je aan het ritme went en vooruit plant, maar soms zijn er onaangename momenten. Op de website van de stad kun je bijvoorbeeld handig de tijd en plaats kiezen, een kamer reserveren, maar je kunt op geen enkele manier betalen. Ze bellen en accepteren kaartbetalingen. U kunt naar het kantoor gaan en contant betalen. Er was een grappig maar niet erg prettig moment waarop ik wachtte op hun telefoontje om de tweede les te betalen, ik wachtte niet en op de laatste dag was ik een kwartier te laat op kantoor. Ik moest de bewakers benaderen met een brutale snuit en liegen dat de kamer geboekt was. Wij Canadezen geloven ons op ons woord, ze lieten me rustig binnen en controleerden niets, maar dat zou ik niet doen als mensen niet al onderweg waren naar de les.

Dus ik deed winter en lente, en toen waren er veranderingen die de druppel werden. Eerst was het kantoor gesloten voor bezoekers en werd aangeboden om om de hoek telefonische betalingen te accepteren. Ik heb minstens een half uur in het gangpad gezeten voordat ik door was. Ten tweede, als mijn lieve tante vroeger anderhalf uur van mij aannam, nam nu een meisje de telefoon op en zei dat de betaling maar voor een uur was. Ik had toen een groep van drie, toen twee mensen, en die extra $ 12.5 was helemaal niet overbodig. Natuurlijk ben ik ideologisch, maar als mijn vrouw me op straat schopt, is er niemand om les te geven. Ik was toen nog werkloos.

En ik besloot naar de bibliotheek te gaan. Bibliotheken verhuren gratis mooie kamers, maar er is één ding: je kunt geen commerciële activiteiten ondernemen. Zelfs liefdadigheidsorganisaties mogen daar geen geld inzamelen. Er is mij verteld dat dit niet bijzonder gecontroleerd is, het belangrijkste is om geen geld aan te nemen bij de ingang daar, maar ik hou er echt niet van om de regels te overtreden. Een ander probleem is dat de zalen vaak druk zijn en het moeilijk is om lessen op dezelfde tijd op één plek in te plannen. Ik gaf les in bibliotheken in de zomer en vroege winter, ik moest die kiezen waar plaats was, met als resultaat dat ik vijf of zes bibliotheken veranderde. Toen begon ik twee maanden van tevoren een plaats te reserveren, en toen bleek dat alleen in één kleine bibliotheek te gebeuren, in de rest waren er regelmatig geen plaatsen op het juiste moment. En toen besloot ik om thuis een computerles te maken. Ik hing het bord op, kocht een tweede tafel en een paar oude monitoren op de advertentie. Op het werk kocht het bedrijf een nieuwe, krachtige laptop voor me, omdat de analyse op mijn computer bijna 24 uur duurde. In totaal had ik een nieuwe oude computer, een oude oude computer, een laptop waarvan mijn kleine scherm was verpletterd en een oeroude netbook waarop ik het scherm zelf had verpletterd. Ik heb ze allemaal op monitoren aangesloten en Linux mint overal geïnstalleerd, behalve de netbook, waarop ik een heel lichte distributie heb geïnstalleerd, het lijkt pappy. Ik heb ook een oude nieuwe laptop gekocht voor $ 200, ik heb hem op de tv aangesloten. Wat nog belangrijker is, onze gastheer heeft onlangs de ramen voor ons veranderd en de kamer heeft nu nieuwe witte kozijnen in plaats van de verschrikkelijke ingestorte ellende. De vrouw houdt de woonkamer, keuken en tweede slaapkamer als kleuterschool, dus de hele verdieping bleek puur pedagogisch te zijn. Dus nu is alles in orde met de kamer, laten we direct naar lesgeven gaan.

Kras

Ik begin de basisprincipes van programmeren met de Scratch-taal te geven. Dit is een taal die gebruik maakt van kant-en-klare blokken, destijds uitgevonden bij MIT. De meeste kinderen hebben al op school gekrabd gezien, dus ze wennen er snel aan. Er zijn kant-en-klare programma's en lesplannen, maar die vind ik helemaal niks. Enkele vreemde - maak bijvoorbeeld je eigen verhaal. Het hele programma bestaat uit talloze blokken say '<...>' for 2 seconds. Het is te zien dat zeer creatieve mensen het hebben bedacht, maar met deze aanpak kun je leren hoe je een klassieke Indiase spaghetticode schrijft. Vanaf het allereerste begin heb ik het over principes zoals DROGEN Andere verzamelingen taken zijn redelijk goed, maar de kinderen komen snel ter zake en beginnen ze te maken als een machinegeweer. Daardoor doen ze in één les wat ze in vijf lessen hadden moeten doen. En het kost veel persoonlijke tijd om taken te zoeken en te selecteren. Over het algemeen is scratch meer geen taal, maar een IDE, waarbij je alleen hoeft te onthouden waar je moet klikken en waar je naar iets moet zoeken. Zodra de leerlingen het min of meer onder de knie hebben, probeer ik ze te vertalen naar python. Ik heb zelfs een zevenjarig meisje dat eenvoudige programma's in python schrijft. Wat ik als het voordeel van scratch zie, is dat het zulke basisconcepten heeft die op een speelse manier worden geleerd. Om de een of andere reden is het voor iedereen zonder uitzondering erg moeilijk om het idee van een variabele te begrijpen. In het begin heb ik dit onderwerp snel doorgenomen en verder gegaan totdat ik tegenkwam dat ze helemaal niet wisten wat ze ermee moesten doen. Nu besteed ik veel tijd aan variabelen en kom er constant op terug. Je moet domme swotting doen. Ik verander verschillende variabelen op het scherm en laat ze hun waarde uitspreken. Scratch heeft ook controlestructuren en waardecontroles, zoals while, for of if in python. Ze worden vrij gemakkelijk gegeven, alleen zijn er problemen met geneste lussen. Ik probeer verschillende taken met een geneste lus te geven, zodat de actie visueel is. Daarna ga ik verder met functies. Zelfs voor volwassenen is het begrip functie niet vanzelfsprekend, en zeker voor kinderen. Lange tijd kruisig ik aan wat een functie in het algemeen is, ik heb het over een fabriek die objecten als input ontvangt, maar goederen uitdeelt, over een kok die voedsel maakt van rauwe producten. Dan maken we een programma om “een boterham te maken” met producten, en dan maken we er een functie van, waaraan producten als parameters worden doorgegeven. Over de studie van functies eindig ik met scratch.

python

Met python is het makkelijker. Er is een goed boek genaamd Python for Kids, en ik gebruik het om les te geven. Alles is daar standaard - lijnen, volgorde van bewerkingen, print(), input() enz. Geschreven in makkelijke taal, met humor, kinderen vinden het leuk. Het heeft een fout die in veel programmeerboeken voorkomt. Zoals in een bekende grap - hoe een uil te tekenen. Ovaal - cirkel - uil. Van simpele concepten te abrupte overgang naar vrij complexe concepten. Het kost me verschillende sessies om een ​​object aan de puntmethode te koppelen. Aan de andere kant heb ik geen haast, ik herhaal hetzelfde op verschillende manieren totdat er tenminste een soort beeld ontstaat. Ik begin met variabelen en hamer ze opnieuw, dit keer in python. Variabelen zijn een vloek.

Een gevatte student, die een paar maanden geleden handig op de variabelen op de scratch klikte, ziet eruit als een ram bij een nieuwe poort en kan de X niet optellen bij de Y, die duidelijk op het bord in de regel hierboven staan. We herhalen! Wat heeft een variabele? Naam en betekenis! Wat betekent het gelijkteken? Opdracht! Hoe controleren we gelijkheid? Dubbel gelijkteken! En dus herhalen we het keer op keer, tot volledige verlichting. Dan gaan we verder met functies, waar de uitleg over argumenten het langst duurt. Benoemde argumenten, op positie, standaard, enzovoort. We zijn nog niet bij de les. Naast python bestuderen we populaire algoritmen uit het boek, daarover later meer.

Eigenlijk trainen

Mijn les is zo ingedeeld - een half uur lang geef ik theorie, controleer kennis, consolideer wat ik heb geleerd. Uur - laboratoria. Vaak laat ik me meeslepen en zend ik maximaal een uur uit, dan blijft er respectievelijk een half uur over om te oefenen. Toen ik Python aan het leren was, heb ik de cursus herzien Algoritmen en gegevensstructuren Khiryanova van MIPT. Ik hield echt van zijn presentatie en de structuur van de lezingen. Zijn idee is dat frameworks, syntaxis, bibliotheken overbodig worden. Architectuur, teamwerk, versiebeheersystemen - het is te vroeg. Hierdoor zijn er algoritmen en datastructuren die al lang bekend zijn en altijd in een vergelijkbare vorm zullen zijn. Zelf herinner ik me alleen gehele getallen van het instituut Pascal. Aangezien mijn studenten meestal jong zijn, van zeven tot vijftien jaar oud, geloof ik dat het voor hun toekomst belangrijker is om de basis te leggen dan snel een platformer in python te schrijven. Hoewel ze meer een platformgame willen, en ik begrijp ze. Ik geef ze eenvoudige algoritmen - een bubbel, een binaire zoekopdracht in een gesorteerde lijst, omgekeerde Poolse notatie met behulp van een stapel, maar we analyseren ze allemaal tot in detail. Het bleek dat moderne kinderen in principe niet weten hoe een computer werkt, zeg ik je ook. In elk college probeer ik verschillende concepten aan elkaar te koppelen. Bijvoorbeeld een computer - geheugen / processor - geheugen van cellen (laat me een geheugenplaat vasthouden, raad eens hoeveel cellen hier zijn) - elke cel is als een gloeilamp - er zijn twee toestanden - waar / onwaar - en / of - binair / decimaal - 8bit = 1byte - byte = 256 opties - Booleaans datatype per bit - Integers per byte - float op twee bytes string op één byte - het grootste getal op 64 bits - een lijst en een tuple van de vorige typen. Ik maak een voorbehoud dat in een echte computer alles enigszins anders is en een andere hoeveelheid geheugen voor deze gegevenstypen, maar het belangrijkste is dat we zelf complexere gegevenstypen maken van eenvoudigere in het proces. Gegevenstypen zijn misschien wel het moeilijkste om te onthouden. Daarom begin ik elke les met een snelle warming-up: de ene student noemt het gegevenstype, de volgende geeft twee voorbeelden, enzovoort in een cirkel. Als resultaat heb ik bereikt dat zelfs de jongste kinderen vrolijk roepen - zweef! booleaans! zeven, vijf! pizza, auto! Tijdens de lezing trek ik constant aan de een of de ander, anders beginnen ze snel in hun neus te peuteren en naar het plafond te kijken. Ja, en het kennisniveau van elk moet tussendoor worden gecontroleerd.

Mijn studenten blijven me verbazen, zowel door hun domheid als door hun onverwachte snelle verstand. Vindingrijkheid gelukkig vaker.

Ik wilde meer schrijven, maar toch is het blad gelukt. Ik beantwoord alle vragen met plezier. Ik verwelkom alle kritiek op alle mogelijke manieren, alleen een verzoek - om toleranter te zijn voor elkaar in de commentaren. Dit is een goed artikel.

Bron: www.habr.com

Voeg een reactie