Come insegno Python ai bambini?

Come insegno Python ai bambini?

Il mio lavoro principale è legato ai dati e alla programmazione R, ma in questo articolo voglio parlare del mio hobby, che mi porta anche qualche guadagno. Mi ha sempre interessato raccontare e spiegare le cose ad amici, compagni di classe e compagni di studi. Inoltre è sempre stato facile per me trovare un linguaggio comune con i bambini, non so perché. In generale, credo che allevare e insegnare ai figli sia una delle attività più importanti in assoluto, e mia moglie è un'insegnante. Quindi, circa un anno fa, ho fatto pubblicità in un gruppo Facebook locale, ho formato un gruppo e ho iniziato a insegnare Scratch e Python una volta alla settimana. Ora ho cinque gruppi, la mia classe a casa e lezioni individuali. Come sono arrivato a vivere in questo modo ed esattamente come insegno ai bambini, te lo dirò in questo articolo.

Vivo a Calgary, Alberta, Canada, quindi alcune cose saranno specifiche locali.

La stanza

La disponibilità di spazio per esercitarsi è stata una delle principali preoccupazioni fin dall'inizio. Ho provato a cercare uffici e aule in affitto a ore, ma non ho avuto molto successo. La nostra università e SAIT, l'equivalente locale del MIT, offrono lezioni con e senza computer. I prezzi si sono rivelati poco umani e alla fine si è scoperto che l'università non ammette minori e SAIT generalmente affitta solo ai propri studenti. Quindi, questa opzione è stata eliminata. Ci sono molti centri direzionali che affittano sale riunioni e uffici a ore, ci sono intere aziende che offrono un sacco di opzioni da un'aula piena a una stanza per quattro persone. Avevo speranze, poiché l’Alberta è una provincia petrolifera, siamo in una crisi lenta dal 2014 e molti spazi commerciali sono vuoti. Non avrei dovuto sperarlo; i prezzi si sono rivelati così scandalosi che all’inizio non ci credevo nemmeno. È più facile per i proprietari sedersi negli uffici vuoti e pagare i costi piuttosto che scaricarli.

In quel momento mi sono ricordato che pago regolarmente le tasse e se il nostro caro stato, o meglio, la città di Calgary, ha qualcosa lì. Si è scoperto che esiste davvero. La città ha arene per l'hockey e altri sport di pattinaggio artistico, e in queste arene ci sono stanze dove robusti guerrieri del ghiaccio discutono le strategie per le battaglie future. Insomma, ogni arena ha un paio di stanze con tavoli, sedie, una lavagna e perfino un lavandino con un bollitore. Il prezzo è davvero divino: 25 rimorchiatori canadesi all'ora. Inizialmente avevo deciso di fare lezione di un'ora e mezza, quindi ho fissato il prezzo di una lezione a 35 dollari a lezione in un gruppo di cinque persone, per compensare l'affitto e per mettere qualcosa in tasca. In generale, mi piaceva allenarmi nelle arene, questo ha risolto uno dei problemi: la maggior parte delle persone di lingua russa vive nel sud e io vivo nel nord della città, quindi ho scelto un'arena approssimativamente al centro. Ma non sono mancati anche gli inconvenienti. La burocrazia canadese è buona e amichevole, ma, per usare un eufemismo, può essere un po’ goffa. Non ci sono problemi quando ci si abitua al ritmo e si pianifica in anticipo, ma a volte sorgono momenti spiacevoli. Ad esempio, sul sito della città puoi selezionare comodamente un orario e un luogo e prenotare una stanza, ma non puoi pagare in alcun modo. Fanno le telefonate da soli e accettano pagamenti con carta. Puoi andare in ufficio e pagare in contanti. C'è stato un momento divertente ma non molto piacevole in cui stavo aspettando la loro chiamata per pagare la seconda lezione, non è arrivata e l'ultimo giorno sono arrivato in ufficio con quindici minuti di ritardo. Ho dovuto avvicinarmi alla sicurezza con una faccia sfacciata e mentire dicendo che la stanza era prenotata. Noi canadesi ci crediamo sulla parola, mi hanno fatto entrare con calma e non hanno controllato nulla, ma non lo farei se la gente non fosse già andata a lezione.

È così che ho lavorato durante l'inverno e la primavera, e poi si sono verificati dei cambiamenti che sono stati l'ultima goccia. Innanzitutto l'ufficio era chiuso ai visitatori e loro si sono offerti di accettare pagamenti telefonicamente dietro l'angolo. Rimasi seduto nel corridoio per almeno mezz'ora prima di passare. In secondo luogo, se prima la mia cara zia prendeva il pagamento da me per un'ora e mezza, ora una ragazza ha risposto al telefono e ha detto che il pagamento era solo per un'ora. A quel tempo, il mio gruppo era composto da tre o due persone e i $ 12.5 extra non erano affatto superflui. Certo, sono ideologico, ma se mia moglie mi butta in strada, non ci sarà nessuno a cui insegnare. Allora ero ancora disoccupato.

E ho deciso di andare in biblioteca. Le biblioteche affittano stanze meravigliose in modo completamente gratuito, ma c'è un problema: non è possibile svolgere attività commerciali. Anche gli enti di beneficenza non sono autorizzati a raccogliere denaro lì. Mi è stato detto che questo non è particolarmente controllato, l'importante è non prendere soldi all'ingresso, ma non mi piace proprio infrangere le regole. Un altro problema è che le aule sono spesso occupate ed è difficile tenere le lezioni programmate contemporaneamente e nello stesso posto. Ho insegnato nelle biblioteche durante l'estate e l'inizio dell'inverno, dovevo scegliere quelle con spazio, e alla fine ho cambiato cinque o sei biblioteche. Poi ho iniziato a prenotare un posto con due mesi di anticipo, e anche allora sono riuscito a farlo solo in una piccola biblioteca; il resto regolarmente non aveva posti per il tempo richiesto. E poi ho deciso di tenere un corso di informatica a casa. Ho riattaccato la lavagna, ho comprato un secondo tavolo e un paio di vecchi monitor dall'annuncio. Al lavoro, l'azienda mi ha acquistato un nuovo potente laptop perché l'analisi sul mio computer ha richiesto quasi 24 ore. Quindi, avevo un nuovo vecchio computer, un vecchio vecchio computer, un laptop su cui il mio piccolo ha schiacciato lo schermo e un vecchio netbook su cui ho schiacciato io stesso lo schermo. Li ho collegati tutti ai monitor e ho installato Linux Mint ovunque, tranne che sul netbook, sul quale ho installato un kit di distribuzione molto leggero, a quanto pare, Pappy. Ho ancora un vecchio portatile nuovo, comprato per $ 200, l'ho collegato alla TV. Ciò che è anche importante è che il nostro proprietario ha recentemente cambiato le nostre finestre e, invece del terribile e fatiscente squallore della stanza, ora abbiamo nuovi telai bianchi. Mia moglie tiene il soggiorno, la cucina e la seconda camera da letto per un asilo nido, quindi l'intero piano si è rivelato puramente pedagogico. Quindi, ora che sono tutte a posto con le premesse, passiamo alla didattica.

Graffio

Sto iniziando ad insegnare le basi della programmazione utilizzando il linguaggio Scratch. Questo è un linguaggio che utilizza blocchi già pronti, inventati una volta al MIT. La maggior parte dei bambini ha già visto Scratch a scuola, quindi lo imparano abbastanza rapidamente. Ci sono programmi e programmi di lezioni già pronti, ma non mi piacciono affatto. Alcuni sono strani: crea la tua storia, ad esempio. L'intero programma è composto da innumerevoli blocchi say '<...>' for 2 seconds. Si può vedere che è stato inventato da individui molto creativi, ma con questo approccio puoi insegnare a scrivere il classico codice degli spaghetti indiani. Fin dall'inizio parlo di principi come DRY. Altre raccolte di compiti sono abbastanza buone, ma i bambini ne colgono rapidamente l'essenza e iniziano a eseguirli come una mitragliatrice. Di conseguenza, in una lezione fanno quello che avrebbero dovuto fare in cinque. E la ricerca e la selezione delle attività richiedono molto tempo personale. In generale, Scratch ricorda più non un linguaggio, ma un IDE, in cui devi solo ricordare dove fare clic e dove cercare cosa. Non appena gli studenti si sentono più o meno a loro agio, provo a trasferirli su Python. Anche la mia bambina di sette anni scrive semplici programmi in Python. Quello che considero il vantaggio di Scratch è che contiene concetti di base che vengono appresi in modo giocoso. Per qualche motivo è molto difficile per tutti, nessuno escluso, comprendere il concetto di variabile. All’inizio ho dato una rapida occhiata a questo argomento e sono andato avanti finché non mi sono trovato di fronte al fatto che non sapevano cosa fare al riguardo. Ora dedico molto tempo alle variabili e ci torno costantemente. Devi fare qualche stupido martellamento. Cambio diverse variabili sullo schermo e faccio loro esprimere i loro valori. Scratch dispone anche di strutture di controllo e controlli di valore, come ad esempio while, for o if in pitone. Sono abbastanza semplici, ma ci sono problemi con i cicli annidati. Cerco di assegnare diversi compiti con un ciclo annidato e in modo che la sua azione sia chiara. Dopodiché passo alle funzioni. Anche per gli adulti il ​​concetto di funzione non è ovvio, e ancor di più per i bambini. Mi dilungo a lungo su cosa sia una funzione in generale, parlo di una fabbrica che riceve oggetti in input ed emette merci, di un cuoco che prepara il cibo partendo da materie prime. Quindi creiamo un programma "crea un sandwich" con i prodotti, e poi ne creiamo una funzione, alla quale i prodotti vengono passati come parametri. Finisco di apprendere le funzioni con Scratch.

pitone

Con Python è tutto più semplice. C'è un buon libro Python for Kids, da cui insegno. Lì tutto è standard: linee, ordine delle operazioni, print(), input() eccetera. Scritto in un linguaggio semplice, con umorismo, piace ai bambini. Ha un difetto comune a molti libri di programmazione. Come nella famosa battuta: come disegnare un gufo. Ovale - cerchio - gufo. Il passaggio da concetti semplici a concetti piuttosto complessi è troppo brusco. Mi ci vogliono diverse sessioni per allegare l'oggetto al metodo punto. D’altronde non ho fretta, ripeto la stessa cosa in modi diversi finché almeno qualche immagine non si unisce. Inizio con le variabili e le elaboro di nuovo, questa volta in Python. Le variabili sono una specie di maledizione.

Uno studente intelligente, che un paio di mesi fa ha abilmente cliccato sulle variabili su Skratch, sembra un ariete al nuovo cancello e non riesce ad aggiungere la X con la Y, che è chiaramente scritta sulla lavagna una riga sopra. Noi ripetiamo! Cosa ha una variabile? Nome e significato! Cosa significa il segno uguale? Incarico! Come controlliamo l’uguaglianza? Doppio segno di uguale! E lo ripetiamo ancora e ancora fino alla completa illuminazione. Passiamo poi alle funzioni, dove la spiegazione degli argomenti richiede più tempo. Argomenti denominati, per posizione, per impostazione predefinita e così via. Non abbiamo ancora raggiunto le lezioni in nessun gruppo. Oltre a Python, studiamo gli algoritmi più diffusi dal libro, ne parleremo più avanti.

Anzi, formazione

La mia lezione è strutturata in questo modo: espongo la teoria per mezz'ora, metto alla prova le conoscenze e consolido quanto appreso. È tempo di laboratori. Spesso mi lascio trasportare e parlo fino a un'ora, poi rimane mezz'ora per esercitarmi. Quando stavo imparando Python, ho guardato il corso Algoritmi e strutture dati Kiryanov del MIPT. Mi è piaciuta molto la sua presentazione e la struttura delle sue lezioni. La sua idea è questa: i framework, la sintassi, le librerie stanno diventando obsoleti. Architettura, lavoro di squadra, sistemi di controllo delle versioni: è ancora presto. Di conseguenza, rimangono algoritmi e strutture dati noti da molto tempo e che saranno sempre in una forma simile. Io stesso ricordo solo numeri interi dell'istituto pascal. Dato che i miei studenti sono per lo più giovani, dai sette ai quindici anni, credo che per il loro futuro sia più importante gettare le basi che scrivere velocemente un gioco platform in Python. Tuttavia, vogliono di più un platform e li capisco. Fornisco loro semplici algoritmi: una bolla, una ricerca binaria in un elenco ordinato, la notazione polacca inversa utilizzando uno stack, ma li analizziamo ciascuno in grande dettaglio. Si è scoperto che i bambini moderni non sanno in linea di principio come funziona un computer, te lo dirò anche. Cerco di collegare insieme diversi concetti in ogni lezione. Ad esempio, un computer - memoria/percentuale - memoria composta da celle (ti lascio tenere il chip di memoria, indovina quante celle ci sono) - ogni cella è come una lampadina - ci sono due stati - vero/falso - e/o - binario/decimale - 8 bit = 1 byte - byte = 256 opzioni - tipo di dati logico su un bit - numeri interi su un byte - float su due byte - string su un byte - il numero più grande su 64 bit - una lista e una tupla dei tipi precedenti. Faccio una prenotazione sul fatto che in un computer reale tutto è leggermente diverso e la quantità di memoria per questi tipi di dati è diversa, ma la cosa principale è che noi stessi nel processo creiamo tipi di dati più complessi da quelli più semplici. I tipi di dati sono forse la cosa più difficile da ricordare. Ecco perché inizio ogni lezione con un rapido riscaldamento: uno studente nomina il tipo di dati, il successivo fornisce due esempi e così via in cerchio. Di conseguenza, sono riuscito a far sì che anche i bambini più piccoli gridino allegramente: galleggia! booleano! sette, cinque! pizza, macchina! Durante una conferenza, tiro costantemente prima l'uno o l'altro, altrimenti iniziano rapidamente a stuzzicarsi il naso e a guardare il soffitto. E il livello di conoscenza di tutti deve essere verificato di tanto in tanto.

I miei studenti non smettono mai di stupirmi, sia per la loro stupidità che per la loro intelligenza inaspettata. Fortunatamente, più spesso con intelligenza.

Volevo scrivere di più, ma si è rivelato essere solo un foglio. Sarò felice di rispondere a tutte le domande. Accolgo con favore qualsiasi critica in ogni modo possibile, vi chiedo solo di essere più tolleranti gli uni con gli altri nei commenti. Questo è un buon articolo.

Fonte: habr.com

Aggiungi un commento