Hoe ik kinderen Python leer.

Hoe ik kinderen Python leer.

Mijn hoofdtaak gaat over gegevens en programmeren in R, maar in dit artikel wil ik praten over mijn hobby, die zelfs wat inkomen oplevert. Ik heb altijd interesse gehad in het vertellen en uitleggen van dingen aan vrienden, klasgenoten en medestudenten. Daarnaast vond ik het altijd gemakkelijk om een gemeenschappelijke taal met kinderen te vinden, ik weet niet waarom. Over het algemeen denk ik dat het opvoeden en onderwijzen van kinderen een van de belangrijkste bezigheden is die er zijn, en mijn vrouw is ook lerares. Ongeveer een jaar geleden plaatste ik een advertentie in een lokale Facebookgroep, verzamelde een groep en begon eenmaal per week Scratch en Python te onderwijzen. Nu heb ik vijf groepen, mijn eigen klas in huis en individuele lessen. Hoe ik tot dit leven ben gekomen en hoe ik precies kinderen onderwijs, zal ik in dit artikel vertellen.

Ik woon in Canada, in de stad Calgary, provincie Alberta, dus sommige momenten zullen verband houden met lokale specificiteit.

Ruimte

Het vinden van een ruimte voor de lessen was vanaf het begin een groot probleem. Ik probeerde uren kantoorruimten en klaslokalen te huren, maar zonder veel succes. Onze universiteit en SAIT — de lokale variant van MIT — verhuren klaslokalen met en zonder computers. De prijzen daar bleken niet bepaald redelijk te zijn, en uiteindelijk bleek dat de universiteit minderjarigen niet toelaat, en SAIT verhuurt alleen aan hun studenten. Dus die optie viel af. Er zijn veel kantoorcentra die vergaderruimtes en kantoren per uur verhuren, en er zijn hele bedrijven die een scala van opties aanbieden, van volledige klassen tot kleine kamers voor vier personen. Ik had hoop, omdat Alberta een olieprovincie is, we hebben sinds 2014 een langdurige crisis, en veel commerciĆ«le ruimtes staan leeg. Ten onrechte had ik hoop, de prijzen bleken zo exorbitant dat ik in het begin zelfs niet kon geloven. Voor de eigenaren is het makkelijker om op lege kantoren te zitten en de kosten te betalen dan om te dumpen.

Op dat moment herinnerde ik me dat ik mijn belastingen op tijd betaal, en of er iets is bij onze dure staat, beter gezegd - bij de stad Calgary. Blijkbaar is dat zeker het geval. De stad heeft arena's voor hockey en andere schaatsactiviteiten, en in deze arena's zijn er kamers waar de strenge ijstrainers strategieƫn voor toekomstige gevechten bespreken. Kortom, bij elke arena zijn er een paar kamers met tafels, stoelen, een whiteboard en zelfs een gootsteen met een waterkoker. De prijs is redelijk - 25 Canadese dollar per uur. Ik besloot aanvankelijk om met anderhalf uur lessen te werken, dus zette ik de prijs op $35 per persoon in een groep van vijf, om de huur te dekken en ook iets voor mezelf te hebben. Over het algemeen vond ik het fijn om in de arena's te trainen, dit 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 een arena ongeveer in het midden. Maar er waren ook ongemakken. De Canadese bureaucratie is goed en vriendelijk, maar om het zachtjes te zeggen, soms wat traag. Er zijn geen problemen als je gewend raakt aan het ritme en van tevoren plant, maar soms ontstaan er vervelende momenten. Bijvoorbeeld, op de website van de stad kun je gemakkelijk tijd en plaats kiezen, een kamer reserveren, maar betalen kan niet, op geen enkele manier. Zij bellen je zelf en nemen de betaling via de telefoon. Je kunt naar het kantoor gaan en contant betalen. Er was een grappig maar niet zo prettig moment toen ik hun telefoontje afwachtte om voor de tweede les te betalen, ik wachtte tevergeefs, en op de laatste dag was ik vijftien minuten te laat bij het kantoor. Ik moest met een brutale uitstraling naar de beveiliging gaan en liegen dat de kamer gereserveerd was. Wij, Canadezen, geloven op hun woord, ze lieten me rustig binnen en controleerden niets, maar ik zou dat niet doen als de mensen al onderweg waren voor de les.

Zo heb ik de winter en de lente doorgebracht, maar daarna gebeurden er veranderingen die de druppel waren. Ten eerste werd het kantoor gesloten voor bezoekers en werd er voorgesteld om betalingen telefonisch te accepteren om de hoek. Ik heb minstens een half uur in de gang gezeten voordat ik verbinding kon maken. Ten tweede, als vroeger een aardige dame mijn betaling voor anderhalf uur aannam, nam er nu een of ander meisje de telefoon op en beweerde dat betaling alleen per uur mogelijk was. Op dat moment had ik een groep van drie of twee mensen, en die extra $12,50 waren absoluut geen overbodige luxe. Natuurlijk ben ik idealistisch, maar als mijn vrouw me de straat opstuurt, is er niemand meer om les te geven. Ik was toen ook werkloos.

Ik besloot naar de bibliotheek te gaan. Bibliotheken verhuren prachtige ruimtes helemaal gratis, maar er is één nadeel - je mag er geen commerciële activiteiten ontplooien. Zelfs goede doelen hebben niet het recht om daar geld in te zamelen. Mij werd verteld dat dit niet echt gecontroleerd wordt, als je maar geen geld bij de ingang vraagt, maar ik hou er niet van om regels te overtreden. Een ander probleem is dat de ruimtes vaak bezet zijn en het moeilijk is om lessen volgens het rooster op dezelfde tijd en op één plek te geven. Ik heb in de bibliotheken in de zomer en begin van de winter lesgegeven, het was nodig om te kiezen voor diegene waar er plaats was, uiteindelijk heb ik vijf tot zes bibliotheken gewisseld. Daarna begon ik twee maanden van tevoren een plek te reserveren, en zelfs dan lukte het maar in één klein bibliotheekje, in de andere waren er regelmatig geen beschikbare plekken op het juiste tijdstip. Toen besloot ik een computerklas thuis te maken. Ik hing een bord op, kocht via een advertentie een tweede bureau en een paar oude monitoren. Voor mijn werk kocht het bedrijf me een nieuwe krachtige laptop, omdat mijn computer bijna 24 uur nodig had voor de analyses. Kortom, ik had een nieuwe oude computer, een oude oude computer, een laptop waarvan mijn kleinste het scherm had gebroken en een oeroude netbook waarvan ik zelf het scherm had gebroken. Ik heb ze allemaal op de monitoren aangesloten en overal Linux Mint geïnstalleerd, behalve op de netbook, waar ik een heel lichte distributie heb gezet, geloof ik Puppy. Ik heb ook nog een oude nieuwe laptop, gekocht voor $200, ik heb deze op de televisie aangesloten. Ook is het belangrijk dat onze verhuurder onlangs de ramen heeft vervangen, en nu zijn er in de kamer nieuwe witte kozijnen in plaats van die verschrikkelijke afgebroken troep. De woonkamer, keuken en de tweede slaapkamer houdt mijn vrouw als kinderdagverblijf, zodat de hele verdieping puur pedagogisch is. Dus, nu is alles met de ruimte goed, laten we direct over het lesgeven gaan.

Scratch

Ik begin met het geven van de basis van programmeren met de programmeertaal Scratch. Dit is een taal die gebruik maakt van kant-en-klare blokken, bedacht op MIT. De meeste kinderen hebben Scratch al op school gezien, dus het is vrij snel te leren. Er zijn kant-en-klare programma's en lesplannen, maar die bevallen me totaal niet. Sommige zijn vreemd - maak je eigen verhaal, bijvoorbeeld. Het hele programma bestaat uit talloze blokken. zeg '<...>' gedurende 2 secondenHet is duidelijk dat het door zeer creatieve mensen is bedacht, maar met zo'n benadering kun je leren schrijven in klassieke Indiase spaghetti-code. Ik begin vanaf het begin met het uitleggen van principes zoals D.R.Y. Andere verzamelingen van opdrachten zijn ook goed, maar de kinderen begrijpen de essentie snel en beginnen ze als een machine te maken. Uiteindelijk maken ze in één les wat ze in vijf zouden moeten maken. En het kost veel persoonlijke tijd om opdrachten te zoeken en te selecteren. Over het algemeen lijkt Scratch meer op een IDE dan op een programmeertaal, waar je gewoon moet onthouden waar je moet klikken en wat je moet zoeken. Zodra de leerlingen zich een beetje hebben aangepast, probeer ik ze over te zetten naar Python. Zelfs een zevenjarig meisje schrijft eenvoudige programma's in Python. Waarin ik het nut van Scratch zie, zijn de basisconcepten die op een speelse manier worden opgedaan. Om de één of andere reden is het voor iedereen zonder uitzondering erg moeilijk om het idee van een variabele te begrijpen. In het begin ging ik snel door dit onderwerp en ging verder, totdat ik tegenkwam dat ze helemaal niet wisten wat ze hiermee moesten doen. Nu besteed ik veel tijd aan variabelen en keer ik er constant op terug. Ik moet me bezighouden met stompzinnig porren. Ik verander verschillende variabelen op het scherm en laat ze hun waarde zeggen. Scratch heeft ook controle structuren en waardecontroles, zoals while, voor of als in Python. Ze komen vrij gemakkelijk, alleen zijn er problemen met geneste lussen. Ik probeer meerdere taken met een geneste lus te geven, waarbij de werking duidelijk is. Daarna ga ik verder met functies. Zelfs voor volwassenen is het concept functie soms niet evident, en voor kinderen al helemaal niet. Ik leg lang uit wat een functie überhaupt is, vertel over een fabriek die voorwerpen ontvangt en producten levert, over een kok die van rauwe ingrediënten maalt. Daarna maken we een programma 'maak een sandwich' met ingrediënten, en vervolgens maken we daar een functie van waarbij de ingrediënten als parameters worden doorgegeven. Bij het bestuderen van functies eindig ik met Scratch.

Python

Met Python is alles eenvoudiger. Er is een goed boek genaamd Python for Kids, waarmee ik lesgeef. Het is allemaal standaard — strings, volgorde van bewerkingen, print(), input() en zelfs meer. Het is geschreven in eenvoudige taal, met humor, kinderen vinden het leuk. Het heeft een tekortkoming die veel boeken over programmeren hebben. Zoals in de bekende grap — hoe teken je een uil? Een ovaal — een cirkel — een uil. Van eenvoudige concepten is er een te abrupte overgang naar vrij complexe ideeĆ«n. Het kost me enkele sessies om te begrijpen dat een object met een punt aan een methode wordt gekoppeld. Aan de andere kant, ik haast me niet, herhaal hetzelfde op verschillende manieren totdat er een soort beeld ontstaat. Ik begin met variabelen en blijf ze opnieuw onder de loep nemen, al met al met Python. Variabelen zijn een soort vloek.

Een slimme student die een paar maanden geleden handig met variabelen knipperde, kijkt nu als een ram naar nieuwe poorten en kan niet x en y optellen, die duidelijk op het bord bovenaan zijn geschreven. We herhalen! Wat heeft een variabele? Een naam en een waarde! Wat betekent het gelijkteken? Toewijzing! En hoe controleren we gelijkheid? Dubbel gelijkteken! En zo herhalen we opnieuw en opnieuw, tot totale verlichting. Daarna gaan we verder met functies; hier duurt het het langst om argumenten uit te leggen. Genaamd argumenten, posities, standaard argumenten, enzovoorts. Tot nu toe zijn we in geen enkele groep bij klassen aangekomen. Behalve dat we met het boek Python ook populaire algoritmen bestuderen, hierover later meer.

Eigenlijk, het onderwijs

Mijn les is zo ingericht — een half uur geef ik theorie, controleer ik kennis en bevestig ik wat geleerd is. Een uur — praktische oefeningen. Vaak raak ik zo betrokken dat ik tot een uur praat, dus blijft er slechts een half uur voor de praktijk. Toen ik Python leerde, volgde ik een cursus. Algoritmen en Gegevensstructuren Khiryavanov van MIPT. Ik vond zijn presentatie en de structuur van de lezingen zeer goed. Zijn idee is dat frameworks, syntaxis en bibliotheken verouderen. Architectuur, teamwork, versiebeheersystemen - daar zijn we nog niet aan toe. Uiteindelijk blijven de algoritmes en gegevensstructuren over, die al lang bekend zijn en altijd in een soortgelijke vorm zullen bestaan. Ikzelf herinner me van de universitaire Pascal alleen de integers. Aangezien mijn leerlingen voornamelijk jongeren zijn, van zeven tot vijftien jaar, geloof ik dat het belangrijker is om de basis te leggen dan om zo snel mogelijk een platformgame in Python te schrijven. Hoewel, zij willen vooral een platformgame en ik begrijp ze. Ik geef ze eenvoudige algoritmes - bubblesort, binaire zoekopdracht in een gesorteerde lijst, omgekeerde Poolse notatie met behulp van een stack, maar we analyseren elk onderwerp zeer zorgvuldig. Het blijkt dat moderne kinderen in principe niet weten hoe een computer werkt, dat leg ik ook uit. Ik probeer in elke les verschillende concepten met elkaar te verbinden. Bijvoorbeeld, een computer - geheugen/proces - geheugen uit cellen (ik laat een geheugenchip vasthouden, raad eens hoeveel cellen hier zijn) - elke cel als een lampje - heeft twee toestanden - true/false - and/or - binair/decentraal - 8 bits = 1 byte - byte = 256 mogelijkheden - logisch datatype op ƩƩn bit - gehele getallen op ƩƩn byte - float op twee bytes - string op ƩƩn byte - het grootste getal op 64 bits - een lijst en tuple van de voorgaande types. Ik verduidelijk dat het in een echte computer iets anders is en een andere hoeveelheid geheugen voor deze datatypes, maar het belangrijkste is dat we in het proces complexere datatypes uit eenvoudigere creĆ«ren. Datatypes zijn waarschijnlijk het moeilijkste om te onthouden. Daarom begin ik elke les met een snelle opwarming - ƩƩn leerling noemt een datatype, de volgende geeft twee voorbeelden, en zo verder in de kring. Uiteindelijk heb ik bereikt dat zelfs de jongste kinderen enthousiast schreeuwen - float! boolean! zeven, vijf! pizza, auto! Tijdens de les trek ik constant aan de ene of de andere, anders beginnen ze snel in hun neus te peuteren en naar het plafond te staren. En ook moet je af en toe het kennisniveau van iederen nagaan.

Mijn leerlingen blijven me verbazen met zowel hun domheid als onverwachte slimheid. Gelukkig is het meestal de slimheid.

Ik wilde meer schrijven, maar het is al een heel stuk geworden. Ik beantwoord graag alle vragen. Ik verwelkom kritiek, maar laten we alstublieft begripvol zijn naar elkaar in de reacties. Dit is een vriendelijk artikel.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster