Hvordan lærer jeg Python til børn?

Hvordan lærer jeg Python til børn?

Mit primære arbejde er relateret til data og programmering i R, men i denne artikel vil jeg fortælle om min hobby, som endda giver nogle indtægter. Jeg har altid været interesseret i at fortælle og forklare ting til venner, klassekammerater og medstuderende. Det har også altid været nemt for mig at finde et fælles sprog med børn, jeg ved ikke hvorfor. Generelt tror jeg, at opdragelse og undervisning af børn er en af ​​de vigtigste aktiviteter af alle, og min kone er lærer. Så for omkring et år siden annoncerede jeg i en lokal Facebook-gruppe, dannede en gruppe og begyndte at undervise i Scratch og Python en gang om ugen. Nu har jeg fem grupper, min egen klasse derhjemme og individuelle lektioner. Hvordan jeg kom til at leve på denne måde, og præcis hvordan jeg underviser børn, vil jeg fortælle dig i denne artikel.

Jeg bor i Calgary, Alberta, Canada, så nogle ting vil være lokale detaljer.

Værelset

Tilgængeligheden af ​​plads til at øve var en stor bekymring fra begyndelsen. Jeg prøvede at søge efter kontorer og klasseværelser til leje på timebasis, men det lykkedes ikke. Vores universitet og SAIT, den lokale ækvivalent til MIT, tilbyder undervisning med og uden computere. Priserne dér viste sig ikke at være særlig humane, og til sidst viste det sig, at universitetet ikke tillader mindreårige, og SAIT udlejer generelt kun til sine egne studerende. Så denne mulighed blev elimineret. Der er mange kontorcentre, der lejer mødelokaler og kontorer på timebasis, der er hele virksomheder, der tilbyder en masse muligheder fra et fuldt klasseværelse til et lokale til fire personer. Jeg havde forhåbninger, eftersom Alberta er en olieprovins, har vi været i en træg krise siden 2014, og mange forretningsområder står tomme. Jeg skulle ikke have håbet; priserne viste sig at være så uhyrlige, at jeg ikke engang troede på dem i starten. Det er nemmere for ejere at sidde på tomme kontorer og betale omkostninger end at dumpe.

I det øjeblik huskede jeg, at jeg jævnligt betaler min skat, og om vores kære stat, eller rettere, byen Calgary, har noget der. Det viste sig, at der virkelig er. Byen har arenaer for hockey og anden kunstskøjtesport, og i disse arenaer er der lokaler, hvor barske iskrigere diskuterer strategier for fremtidige kampe. Kort sagt har hver arena et par rum med borde, stole, en hvid tavle og endda en vask med elkedel. Prisen er ret guddommelig - 25 canadiske tugriks i timen. Jeg besluttede i første omgang at holde undervisning i halvanden time, så jeg satte prisen for en lektion til $35 pr. klasse i en gruppe på fem personer, for at kompensere for huslejen og for at putte noget i lommen. Generelt kunne jeg godt lide at træne i arenaerne, det løste et af problemerne – de fleste russisktalende bor i syden, og jeg bor i den nordlige del af byen, så jeg valgte en arena cirka i midten. Men der var også gener. Det canadiske bureaukrati er godt og venligt, men kan mildt sagt være noget klodset. Der er ingen problemer, når man vænner sig til rytmen og planlægger på forhånd, men nogle gange opstår der ubehagelige øjeblikke. For eksempel kan du på byens hjemmeside nemt vælge tid og sted og reservere et værelse, men du kan ikke betale på nogen måde. De foretager selv telefonopkaldene og tager imod kortbetalinger. Du kan gå på kontoret og betale kontant. Der var et sjovt, men ikke særlig behageligt øjeblik, da jeg ventede på deres opkald til at betale for den anden lektion, det kom ikke, og den sidste dag var jeg et kvarter for sent på kontoret. Jeg måtte henvende mig til sikkerheden med et uforskammet ansigt og lyve, at værelset var booket. Vi canadiere tager mit ord for det; de lukkede mig roligt ind og tjekkede ikke noget, men det ville jeg ikke gøre, hvis folk ikke allerede var på vej til undervisningen.

Sådan arbejdede jeg vinteren og foråret igennem, og så skete der ændringer, der var dråben. For det første var kontoret lukket for besøgende, og de tilbød at modtage betalinger via telefonen rundt om hjørnet. Jeg sad på gangen i mindst en halv time, før jeg kom igennem. For det andet, hvis min kære tante tidligere tog betaling fra mig for halvanden time, så tog en pige nu telefonen og sagde, at betalingen kun var for en time. På det tidspunkt var min gruppe enten tre eller to personer, og de ekstra $12.5 var slet ikke overflødige. Selvfølgelig er jeg ideologisk, men hvis min kone smider mig ud på gaden, så er der ingen til at undervise. Jeg var stadig arbejdsløs dengang.

Og jeg besluttede at gå på biblioteket. Biblioteker udlejer skønne lokaler helt gratis, men der er én hak - du kan ikke drive kommercielle aktiviteter. Selv velgørende organisationer har ikke lov til at indsamle penge der. Jeg fik at vide, at dette ikke er specielt kontrolleret, det vigtigste er ikke at tage penge ved indgangen, men jeg kan virkelig ikke lide at bryde reglerne. Et andet problem er, at lokalerne ofte er optaget, og det er vanskeligt at gennemføre skemalagte undervisning på én gang på ét sted. Jeg underviste på biblioteker om sommeren og den tidlige vinter, jeg skulle vælge dem med plads, og til sidst skiftede jeg fem-seks biblioteker. Så begyndte jeg at booke en plads to måneder i forvejen, og selv dengang nåede jeg kun at gøre dette på et lille bibliotek; resten havde regelmæssigt ingen plads i den nødvendige tid. Og så besluttede jeg at lave en computertime derhjemme. Jeg lagde tavlen på, købte et andet bord og et par gamle skærme fra annoncen. På arbejdet købte virksomheden mig en ny kraftfuld bærbar, fordi analyse på min computer tog næsten 24 timer. Så jeg havde en ny gammel computer, en gammel gammel computer, en bærbar computer, som min lille knuste skærmen på, og en gammel netbook, som jeg selv knuste skærmen på. Jeg tilsluttede dem alle til skærmene og installerede Linux Mint overalt, undtagen netbook'en, hvorpå jeg installerede et meget let distributionssæt, ser det ud til, Pappy. Jeg har stadig en gammel ny bærbar, købt for $200, jeg sluttede den til tv'et. Hvad der også er vigtigt er, at vores ejer for nylig har skiftet vores vinduer, og i stedet for den frygtelige, smuldrende elendighed i rummet, har vi nu fået nye hvide rammer. Min kone beholder stuen, køkkenet og det andet soveværelse til en børnehave, så hele etagen viste sig at være rent pædagogisk. Så nu er alt i orden med lokalerne, lad os gå videre til undervisningen.

Kradse

Jeg begynder at undervise i det grundlæggende i programmering ved hjælp af Scratch-sproget. Dette er et sprog, der bruger færdige blokke, opfundet på én gang på MIT. De fleste børn har allerede set Scratch i skolen, så de opfanger det ret hurtigt. Der er færdige programmer og lektionsplaner, men jeg kan slet ikke lide dem. Nogle er mærkelige – skab for eksempel din egen historie. Hele programmet består af utallige blokke say '<...>' for 2 seconds. Det kan ses, at det er opfundet af meget kreative individer, men med denne tilgang kan du lære at skrive klassisk indisk spaghettikode. Helt fra begyndelsen taler jeg om principper som DRY.Andre samlinger af opgaver er ganske gode, men børn fatter hurtigt essensen og begynder at gøre dem som et maskingevær. Som følge heraf gør de i én lektion, hvad de skulle have gjort på fem. Og at søge og vælge opgaver tager meget personlig tid. Generelt minder Scratch ikke mere om et sprog, men om en IDE, hvor du blot skal huske, hvor du skal klikke, og hvor du skal lede efter hvad. Så snart eleverne er mere eller mindre komfortable, forsøger jeg at overføre dem til Python. Selv min syv-årige pige skriver simple programmer i Python. Det jeg ser som fordelen ved Scratch er, at det indeholder grundlæggende begreber, som læres på en legende måde. Af en eller anden grund er det meget svært for alle, uden undtagelse, at forstå ideen om en variabel. Først skimmede jeg hurtigt emnet og gik videre, indtil jeg stod over for, at de ikke engang vidste, hvad de skulle gøre ved det. Nu bruger jeg meget tid på variabler og vender hele tiden tilbage til dem. Du er nødt til at hamre noget dumt. Jeg ændrer forskellige variabler på skærmen og får dem til at tale deres værdier. Scratch har også kontrolstrukturer og værditjek, som f.eks while, for eller if i python. De er ret nemme, men der er problemer med indlejrede løkker. Jeg forsøger at give flere opgaver med en indlejret løkke, og så dens handling er klar. Derefter går jeg videre til funktioner. Selv for voksne er begrebet funktion ikke indlysende, og endnu mere for børn. Jeg fortsætter længe om, hvad en funktion generelt er, jeg taler om en fabrik, der modtager varer som input og udsteder varer, om en kok, der laver mad af råvarer. Så laver vi et "lav en sandwich"-program med produkter, og så laver vi en funktion ud af det, som produkterne sendes videre til som parametre. Jeg afslutter indlæring af funktioner med Scratch.

python

Med python er alt enklere. Der er en god bog Python for Kids, som jeg underviser fra. Alt er standard der - linjer, rækkefølge af operationer, print(), input() etc. Skrevet i let sprog, med humor, børn kan lide det. Den har en fejl, der er fælles for mange programmeringsbøger. Som i den berømte vittighed - hvordan man tegner en ugle. Oval - cirkel - ugle. Overgangen fra simple begreber til ret komplekse begreber er for brat. Det tager mig flere sessioner at vedhæfte objektet til prikmetoden. På den anden side har jeg ikke travlt, jeg gentager det samme på forskellige måder, indtil i det mindste et billede kommer sammen. Jeg starter med variabler og hamrer dem ud igen, denne gang i Python. Variabler er en slags forbandelse.

En klog elev, der for et par måneder siden behændigt klikkede på variabler på Skratch, ligner en vædder ved den nye port og kan ikke tilføje X'et med Y'et, som tydeligt er skrevet på tavlen en linje ovenfor. Vi gentager! Hvad har en variabel? Navn og betydning! Hvad betyder lighedstegnet? Opgave! Hvordan kontrollerer vi ligestilling? Dobbelt lighedstegn! Og vi gentager dette igen og igen indtil fuldstændig oplysning. Derefter går vi videre til funktioner, hvor forklaringen om argumenter tager længst tid. Navngivne argumenter, efter position, som standard, og så videre. Vi har endnu ikke nået klasser i nogen gruppe. Udover Python studerer vi populære algoritmer fra bogen, mere om det senere.

Faktisk træning

Min lektion er opbygget sådan: Jeg giver teori i en halv time, tester viden og konsoliderer det lærte. Det er tid til laboratorier. Jeg bliver ofte revet med og snakker i op til en time, så er der en halv time tilbage til træning. Da jeg lærte python, så jeg kurset Algoritmer og datastrukturer Khiryanov fra MIPT. Jeg kunne virkelig godt lide hans præsentation og strukturen af ​​hans forelæsninger. Hans idé er denne: rammer, syntaks, biblioteker er ved at blive forældede. Arkitektur, teamwork, versionskontrolsystemer - det er stadig tidligt. Som følge heraf forbliver algoritmer og datastrukturer, som har været kendt i lang tid og altid vil være i en lignende form. Selv husker jeg kun heltal fra instituttet pascal. Da mine elever for det meste er unge, fra syv til femten år, tror jeg på, at det er vigtigere for deres fremtid at lægge fundamentet end hurtigt at skrive et platformspil i Python. Selvom de vil have en platformer mere, og jeg forstår dem. Jeg giver dem simple algoritmer - en boble, binær søgning i en sorteret liste, omvendt polsk notation ved hjælp af en stak, men vi analyserer hver enkelt i detaljer. Det viste sig, at moderne børn i princippet ikke ved, hvordan en computer fungerer, vil jeg også fortælle dig. Jeg forsøger at binde flere begreber sammen i hvert foredrag. For eksempel en computer - hukommelse/procent - hukommelse bestående af celler (jeg lader dig holde hukommelseschippen, gæt hvor mange celler der er) - hver celle er som en pære - der er to tilstande - sand/falsk - og/eller - binær/decimal - 8bit = 1 byte - byte = 256 muligheder - logisk datatype på én bit - heltal på én byte - float på to bytes - string på én byte - det største antal på 64 bit - en liste og en tupel fra de tidligere typer. Jeg tager forbehold for, at i en rigtig computer er alt noget anderledes, og mængden af ​​hukommelse for disse datatyper er forskellig, men hovedsagen er, at vi selv i processen skaber mere komplekse datatyper ud fra simplere. Datatyper er måske det sværeste at huske. Derfor starter jeg hver lektion med en hurtig opvarmning – en elev navngiver datatypen, den næste giver to eksempler og så videre i en cirkel. Som et resultat opnåede jeg, at selv de mindste børn muntert råber - flyd! boolsk! syv, fem! pizza, bil! Under et foredrag trækker jeg hele tiden først det ene eller det andet, ellers begynder de hurtigt at pille næse og kigge i loftet. Og alles vidensniveau skal tjekkes i ny og næ.

Mine elever holder aldrig op med at forbløffe mig, både med deres dumhed og uventede intelligens. Heldigvis oftere med intelligens.

Jeg ville gerne skrive mere, men det viste sig kun at være et ark. Jeg vil med glæde besvare alle spørgsmål. Jeg hilser enhver kritik velkommen på alle mulige måder, jeg beder jer bare om at være mere tolerante over for hinanden i kommentarerne. Dette er en god artikel.

Kilde: www.habr.com

Tilføj en kommentar