Hur jag lär barn Python

Hur jag lär barn Python

Mitt huvudsakliga arbete är relaterat till data och programmering i R, men i den här artikeln vill jag prata om min hobby, som till och med ger en viss inkomst. Jag har alltid varit intresserad av att berätta och förklara saker för vänner, klasskamrater och studiekamrater. Det har också alltid varit lätt för mig att hitta ett gemensamt språk med barn, jag vet inte varför. Generellt sett tror jag att uppfostran och undervisning av barn är en av de viktigaste aktiviteterna av alla, och min fru är lärare. Så för ungefär ett år sedan annonserade jag i en lokal Facebook-grupp, bildade en grupp och började lära ut Scratch och Python en gång i veckan. Nu har jag fem grupper, egen klass hemma och individuella lektioner. Hur jag kom att leva på det här sättet och exakt hur jag undervisar barn kommer jag att berätta i den här artikeln.

Jag bor i Calgary, Alberta, Kanada, så vissa saker kommer att vara lokala detaljer.

Rum

Tillgången på utrymme för att träna var ett stort problem från början. Jag försökte leta efter kontor och klassrum för uthyrning per timme, men hade ingen större framgång. Vårt universitet och SAIT, den lokala motsvarigheten till MIT, erbjuder klasser med och utan datorer. Priserna där visade sig inte vara särskilt humana och till slut visade det sig att universitetet inte tillåter minderåriga, och SAIT hyr i allmänhet bara ut till sina egna studenter. Så det här alternativet togs bort. Det finns många kontorscenter som hyr mötesrum och kontor per timme, det finns hela företag som erbjuder ett gäng alternativ från ett fullt klassrum till ett rum för fyra personer. Jag hade förhoppningar, eftersom Alberta är en oljeprovins har vi varit i en trög kris sedan 2014, och många affärsutrymmen står tomma. Jag borde inte ha hoppats; priserna visade sig vara så upprörande att jag inte ens trodde på dem först. Det är lättare för ägare att sitta på tomma kontor och betala kostnader än att dumpa.

I det ögonblicket kom jag ihåg att jag regelbundet betalar mina skatter, och om vår kära stat, eller snarare staden Calgary, har något där. Det visade sig att det verkligen finns. Staden har arenor för hockey och andra konståkningssporter, och på dessa arenor finns rum där robusta iskrigare diskuterar strategier för framtida strider. Kort sagt, varje arena har ett par rum med bord, stolar, en vit tavla och till och med ett handfat med vattenkokare. Priset är ganska gudomligt - 25 kanadensiska tugriks per timme. Jag bestämde mig först för att hålla kurser i en och en halv timme, så jag satte priset för en lektion till 35 USD per klass i en grupp på fem personer, för att kompensera för hyran och för att stoppa något i fickan. I allmänhet gillade jag att träna på arenorna, det löste ett av problemen - de flesta rysktalande bor i söder, och jag bor i norra delen av staden, så jag valde en arena ungefär mitt i. Men det fanns också olägenheter. Den kanadensiska byråkratin är god och vänlig, men kan milt uttryckt vara något klumpig. Det är inga problem när man vänjer sig vid rytmen och planerar i förväg, men ibland uppstår obehagliga stunder. På stadens hemsida kan du till exempel enkelt välja tid och plats och boka ett rum, men du kan inte betala på något sätt. De ringer själva och tar emot kortbetalningar. Du kan gå till kontoret och betala kontant. Det var en rolig men inte särskilt trevlig stund när jag väntade på deras samtal för att betala för den andra lektionen, den kom inte, och den sista dagen var jag femton minuter sen till kontoret. Jag var tvungen att närma mig säkerheten med ett oförskämt ansikte och ljuga om att rummet var bokat. Vi kanadensare tar mitt ord för det; de släppte in mig lugnt och kollade ingenting, men jag skulle inte göra det om folk inte redan var på väg till lektionen.

Så här jobbade jag mig igenom vintern och våren, och sedan inträffade förändringar som var droppen. För det första var kontoret stängt för besökare och de erbjöd sig att ta emot betalningar per telefon runt hörnet. Jag satt på gången i minst en halvtimme innan jag kom igenom. För det andra, om min kära moster tidigare tog betalt av mig för en och en halv timme, nu svarade någon tjej i telefonen och sa att betalningen bara var för en timme. På den tiden var min grupp antingen tre eller två personer, och de extra $12.5 var inte alls överflödiga. Visst är jag ideologisk, men om min fru slänger ut mig på gatan, då finns det ingen som undervisar. Jag var fortfarande arbetslös då.

Och jag bestämde mig för att gå till biblioteket. Biblioteken hyr ut underbara lokaler helt gratis, men det finns en hake - du kan inte bedriva kommersiell verksamhet. Inte ens välgörenhetsorganisationer får samla in pengar där. Jag fick höra att detta inte är särskilt kontrollerat, det viktigaste är att inte ta pengar vid ingången, men jag gillar verkligen inte att bryta mot reglerna. Ett annat problem är att lokalerna ofta är upptagna och det är svårt att genomföra schemalagda lektioner på en gång på ett ställe. Jag undervisade på bibliotek under sommaren och förvintern, jag var tvungen att välja de med plats och till slut bytte jag fem-sex bibliotek. Sedan började jag boka plats två månader i förväg, och även då lyckades jag bara göra detta på ett litet bibliotek, resten hade regelbundet inga platser under den tid som krävdes. Och så bestämde jag mig för att göra en datorlektion hemma. Jag hängde på tavlan, köpte ett andra bord och ett par gamla bildskärmar från annonsen. På jobbet köpte företaget en ny kraftfull bärbar dator till mig eftersom analysen på min dator tog nästan 24 timmar. Så, jag hade en ny gammal dator, en gammal gammal dator, en bärbar dator som min lille krossade skärmen på och en uråldrig netbook som jag själv krossade skärmen på. Jag kopplade dem alla till bildskärmarna och installerade Linux Mint överallt, förutom netbooken, på vilken jag installerade ett väldigt lätt distributionskit, verkar det som, Pappy. Jag har fortfarande en gammal ny bärbar dator, köpt för $200, jag kopplade den till TV:n. Vad som också är viktigt är att vår ägare nyligen bytte våra fönster, och istället för det fruktansvärda, sönderfallande eländet i rummet har vi nu nya vita ramar. Min fru behåller vardagsrum, kök och andra sovrummet för ett dagis, så hela våningen visade sig vara rent pedagogisk. Så, nu är allt bra med lokalerna, låt oss gå vidare till undervisningen.

Repa

Jag börjar lära ut grunderna i programmering med hjälp av språket Scratch. Detta är ett språk som använder färdiga block, som uppfanns vid en tidpunkt vid MIT. De flesta barn har redan sett Scratch i skolan, så de plockar upp det ganska snabbt. Det finns färdiga program och lektionsplaner, men jag gillar dem inte alls. Vissa är konstiga – skapa din egen berättelse till exempel. Hela programmet består av otaliga block say '<...>' for 2 seconds. Det kan ses att det uppfanns av väldigt kreativa individer, men med detta tillvägagångssätt kan du lära dig hur man skriver klassisk indisk spagettikod. Redan från början pratar jag om principer som DRY Andra samlingar av uppgifter är ganska bra, men barn förstår snabbt essensen och börjar göra dem som ett maskingevär. Som ett resultat gör de på en lektion vad de borde ha gjort på fem. Och att söka och välja uppgifter tar mycket personlig tid. Generellt sett påminner Scratch inte mer om ett språk, utan om en IDE, där du bara behöver komma ihåg var du ska klicka och var du ska leta efter vad. Så fort eleverna är mer eller mindre bekväma försöker jag överföra dem till Python. Till och med min sjuåriga tjej skriver enkla program i Python. Det jag ser som fördelen med Scratch är att den innehåller grundläggande begrepp som lärs in på ett lekfullt sätt. Av någon anledning är det väldigt svårt för alla, utan undantag, att förstå idén med en variabel. Först skummade jag snabbt över ämnet och gick vidare tills jag stod inför det faktum att de inte ens visste vad de skulle göra åt det. Nu lägger jag mycket tid på variabler och återkommer hela tiden till dem. Du måste göra några dumma hamrar. Jag ändrar olika variabler på skärmen och får dem att tala om sina värden. Scratch har även kontrollstrukturer och värdekontroller, som t.ex while, for eller if i python. De är ganska lätta, men det finns problem med kapslade slingor. Jag försöker ge flera uppgifter med en kapslad loop, och så att dess handling är tydlig. Efter det går jag vidare till funktioner. Inte ens för vuxna är begreppet funktion självklart, och ännu mer för barn. Jag pratar länge om vad en funktion är generellt, jag pratar om en fabrik som tar emot varor som insats och ger ut varor, om en kock som gör mat av råvaror. Sedan gör vi ett "gör en smörgås"-program med produkter, och sedan gör vi en funktion av det, som produkterna skickas till som parametrar. Jag lär mig färdiga funktioner med Scratch.

python

Med python är allt enklare. Det finns en bra bok Python for Kids, som jag lär ut från. Allt är standard där - linjer, operationsordning, print(), input() etc. Skrivet på ett lättsamt språk, med humor, barn gillar det. Den har ett fel som är gemensamt för många programmeringsböcker. Som i det berömda skämtet - hur man ritar en uggla. Oval - cirkel - uggla. Övergången från enkla begrepp till ganska komplexa begrepp är för abrupt. Det tar mig flera sessioner att fästa objektet till punktmetoden. Å andra sidan, jag har inte bråttom, jag upprepar samma sak på olika sätt tills åtminstone någon bild kommer ihop. Jag börjar med variabler och hamrar ut dem igen, den här gången i Python. Variabler är en slags förbannelse.

En smart student, som för ett par månader sedan skickligt klickade på variabler på Skratch, ser ut som en bagge vid den nya grinden och kan inte lägga till X:et med Y:et, vilket tydligt står skrivet på tavlan en rad ovanför. Vi upprepar! Vad har en variabel? Namn och betydelse! Vad betyder likhetstecknet? Uppdrag! Hur kontrollerar vi jämställdhet? Dubbla likhetstecken! Och vi upprepar detta om och om igen tills fullständig upplysning. Sedan går vi vidare till funktioner, där förklaringen om argument tar längst tid. Namngivna argument, efter position, som standard, och så vidare. Vi har ännu inte nått klasser i någon grupp. Förutom Python studerar vi populära algoritmer från boken, mer om det senare.

Egentligen träning

Min lektion är uppbyggd så här: Jag ger teori under en halvtimme, testar kunskaper och konsoliderar det som har lärts. Det är dags för laborationer. Jag rycker ofta och pratar i upp till en timme, sedan är det en halvtimme kvar till träning. När jag lärde mig python tittade jag på kursen Algoritmer och datastrukturer Khiryanov från MIPT. Jag gillade verkligen hans presentation och strukturen på hans föreläsningar. Hans idé är denna: ramverk, syntax, bibliotek blir föråldrade. Arkitektur, lagarbete, versionskontrollsystem - det är fortfarande tidigt. Som ett resultat kvarstår algoritmer och datastrukturer som har varit kända länge och alltid kommer att vara i liknande form. Själv minns jag bara heltal från institutet pascal. Eftersom mina elever mestadels är unga, från sju till femton år gamla, tror jag att det är viktigare för deras framtid att lägga grunden än att snabbt skriva ett plattformsspel i Python. Fast de vill ha ett plattformsspel mer, och jag förstår dem. Jag ger dem enkla algoritmer - en bubbla, binär sökning i en sorterad lista, omvänd polsk notation med en stack, men vi analyserar var och en i detalj. Det visade sig att moderna barn i princip inte vet hur en dator fungerar, det ska jag också berätta. Jag försöker knyta ihop flera begrepp i varje föreläsning. Till exempel, en dator - minne/procent - minne som består av celler (jag låter dig hålla minneschippet, gissa hur många celler det finns) - varje cell är som en glödlampa - det finns två tillstånd - sant/falskt - och/eller - binär/decimal - 8bit = 1 byte - byte = 256 alternativ - logisk datatyp på en bit - heltal på en byte - float på två byte - string på en byte - det största antalet på 64 bitar - en lista och en tupel från de tidigare typerna. Jag reserverar mig för att i en riktig dator är allt något annorlunda och mängden minne för dessa datatyper är olika, men huvudsaken är att vi själva i processen skapar mer komplexa datatyper av enklare. Datatyper är kanske det svåraste att komma ihåg. Det är därför jag börjar varje lektion med en snabb uppvärmning – en elev namnger datatypen, nästa ger två exempel och så vidare i en cirkel. Som ett resultat uppnådde jag att även de yngsta barnen glatt ropar - flyt! booleskt! sju, fem! pizza, bil! Under en föreläsning drar jag hela tiden först det ena och det andra, annars börjar de snabbt knacka på näsan och titta i taket. Och allas kunskapsnivå måste kontrolleras då och då.

Mina elever slutar aldrig att förvåna mig, både med sin dumhet och sin oväntade intelligens. Lyckligtvis oftare med intelligens.

Jag ville skriva mer, men det visade sig bara vara ett blad. Jag svarar gärna på alla frågor. Jag välkomnar all kritik på alla möjliga sätt, jag ber er bara att vara mer toleranta mot varandra i kommentarerna. Det här är en bra artikel.

Källa: will.com

Lägg en kommentar