Come insegno ai bambini Python

Come insegno ai bambini Python

Il mio lavoro principale è legato ai dati e alla programmazione in R, ma in questo articolo voglio parlare della mia passione, che porta anche un certo guadagno. Mi è sempre piaciuto raccontare e spiegare qualcosa a amici, compagni di classe e studenti. Inoltre, ho sempre trovato facile comunicare con i bambini, non so perché. In generale, credo che educare e insegnare ai bambini sia una delle attività più importanti di tutte, e mia moglie è un'insegnante. Circa un anno fa, ho pubblicato un annuncio in un gruppo locale su Facebook, ho formato un gruppo e ho iniziato a insegnare Scratch e Python una volta a settimana. Ora ho cinque gruppi, una mia classe a casa e lezioni individuali. In questo articolo racconterò come sono arrivato a vivere così e come insegno ai bambini.

Vivo in Canada, nella città di Calgary, provincia dell'Alberta, quindi alcuni aspetti saranno legati alla specificità locale.

Stanza

La disponibilità di spazi per le lezioni è stata fin dall'inizio un problema principale. Ho cercato di affittare uffici e aule a ore, ma non con grande successo. La nostra università e il SAIT — l'equivalente locale del MIT — affittano aule con e senza computer. I prezzi si sono rivelati troppo elevati e alla fine ho scoperto che l'università non permette l'accesso ai minorenni, mentre il SAIT affitta solo ai propri studenti. Quindi, questa opzione è caduta. Ci sono molti centri uffici che affittano sale riunioni e uffici a ore; ci sono intere aziende che offrono un sacco di opzioni, da aule complete a stanze per quattro persone. Avevo delle speranze, poiché l'Alberta è una provincia petrolifera e da 2014 viviamo una crisi lenta, con molti spazi commerciali vuoti. Ho sperato invano, i prezzi erano così esorbitanti che all'inizio non ci credevo. Ai proprietari è più semplice mantenere uffici vuoti e pagare le spese piuttosto che fare dumping.

In quel momento, mi sono ricordato che pago le tasse puntualmente e mi sono chiesto se ci fosse qualcosa da parte del nostro caro stato, anzi del comune di Calgary. Si è rivelato che sì, c'era. La città ha arene per giocare a hockey e per il pattinaggio artistico, e all'interno di queste arene ci sono stanze dove i duri guerrieri del ghiaccio discutono le strategie per le battaglie future. In breve, ad ogni arena ci sono un paio di stanze con tavoli, sedie, una lavagna e persino un lavello con un bollitore. Il prezzo è abbastanza ragionevole: 25 dollari canadesi all'ora. Ho deciso inizialmente di fare le lezioni di un'ora e mezza, quindi ho fissato il prezzo per ogni lezione a $35 a testa in un gruppo di cinque persone, per coprire l'affitto e mettere qualcosa in tasca. In generale, mi piaceva fare lezione nelle arene, perché risolveva uno dei problemi: la maggior parte dei russofoni vive a sud, mentre io abito a nord della città, quindi ho scelto un'arena circa a metà strada. Tuttavia, c'erano alcuni inconvenienti. La burocrazia canadese è buona e amichevole, ma, per dirla in modo morbido, a volte può essere un po' lenta. Non ci sono problemi quando ti abitui al ritmo e pianifichi in anticipo, ma a volte ci sono momenti spiacevoli. Ad esempio, sul sito della città puoi facilmente scegliere il tempo e il luogo, riservare una stanza, ma non puoi pagare, in alcun modo. Devono chiamarti al telefono e accettano il pagamento con carta. Puoi anche andare in ufficio e pagare in contante. C'è stato un momento divertente ma non molto piacevole, quando aspettavo la loro chiamata per pagare la seconda lezione, non mi hanno chiamato e in ufficio sono arrivato in ritardo di quindici minuti nell'ultimo giorno. Ho dovuto avvicinarmi con aria spavalda alla sicurezza e mentire dicendo che la stanza era stata riservata. Noi canadesi crediamo alla parola, quindi mi hanno fatto entrare senza controllare, ma non avrei fatto così se le persone non fossero già venute alla lezione.

Così, mi sono dedicato all'inverno e alla primavera, ma poi ci sono stati dei cambiamenti che sono stati la goccia che ha fatto traboccare il vaso. Innanzitutto, l'ufficio è stato chiuso ai visitatori e hanno proposto di accettare i pagamenti per telefono all'angolo. Sono rimasto seduto per almeno mezz'ora nel corridoio prima di riuscire a chiamare. In secondo luogo, se prima una gentile signora prendeva il pagamento per un'ora e mezza, adesso ha risposto una ragazza che ha dichiarato che il pagamento era solo per un'ora. In quel momento avevo un gruppo di tre o due persone, e quei $12.5 extra non erano affatto superflui. Certo, ho delle convinzioni, ma se mia moglie mi buttasse in strada, non ci sarebbe più nessuno a insegnare. All'epoca ero ancora disoccupato.

E ho deciso di andare in biblioteca. Le biblioteche offrono ottime stanze completamente gratis, ma c'è un caveat: non si può svolgere attività commerciale. Anche le organizzazioni benefiche non possono raccogliere fondi lì. Mi hanno detto che non è particolarmente controllato, basta non chiedere soldi all'ingresso, ma io non mi piace violare le regole. Un altro problema è che le stanze sono spesso occupate e diventa difficile tenere le lezioni secondo il programma in un unico luogo. Ho insegnato nelle biblioteche durante l'estate e l'inizio dell'inverno, dovevo scegliere quelle con disponibilità, alla fine ho cambiato cinque-sei biblioteche. Poi ho cominciato a prenotare due mesi in anticipo, eppure sono riuscito a farlo solo in una piccola biblioteca, mentre nelle altre mancavano regolarmente posti all'orario desiderato. Così ho deciso di creare una classe di computer a casa. Ho appeso una lavagna, comprato un secondo tavolo e un paio di vecchi monitor. Per lavoro, l'azienda mi ha comprato un nuovo potente laptop, perché sul mio computer l'analisi richiedeva quasi 24 ore. In totale, avevo un nuovo vecchio computer, un vecchio vecchio computer, un laptop il cui schermo è stato schiacciato dal mio piccolo e un netbook antico, il cui schermo ho schiacciato io stesso. Li ho tutti collegati ai monitor e ho installato Linux Mint ovunque, tranne che sul netbook, sul quale ho messo una distribuzione molto leggera, sembra Puppy. Ho anche un vecchio nuovo laptop, comprato per $200, che ho collegato alla televisione. Inoltre, cosa importante, il nostro padrone di casa ha recentemente cambiato le finestre, quindi ora nella stanza ci sono nuove cornici bianche invece di un orrendo vecchio scempio. Il soggiorno, la cucina e la seconda camera sono state trasformate in un asilo nido dalla moglie, quindi l'intero piano è risultato puramente pedagogico. Dunque, ora che lo spazio è a posto, passiamo direttamente all'insegnamento.

Scratch

Inizio a insegnare le basi della programmazione con il linguaggio Scratch. È un linguaggio che utilizza blocchi predefiniti, inventato tempo fa al MIT. La maggior parte dei bambini ha già visto Scratch a scuola, quindi si impara piuttosto rapidamente. Ci sono programmi e piani di lezione pronti, ma a me non piacciono affatto. Alcuni sono strani, come 'crea la tua storia', per esempio. L'intero programma è composto da innumerevoli blocchi. say '' for 2 seconds. È evidente che è stata creata da persone molto creative, ma con questo approccio si può insegnare a scrivere il classico codice spaghetti indiano. Fin dall'inizio parlo dei principi come D.R.Y. Altri raccolte di esercizi sono piuttosto buone, ma i bambini si immergono rapidamente e iniziano a completarli come da una mitragliatrice. Alla fine, in una lezione fanno ciò che avrebbero dovuto completare in cinque. E ci vuole molto tempo personale per cercare e selezionare gli esercizi. In realtà, Scratch assomiglia di più a un IDE, dove bisogna semplicemente ricordare dove cliccare e dove cercare. Non appena gli studenti si ambientano, cerco di passarli a Python. Ho persino una ragazzina di sette anni che scrive semplici programmi in Python. Vedo un valore in Scratch perché contiene concetti fondamentali che vengono assimilati in modo ludico. Per qualche motivo, è molto difficile per tutti comprendere l'idea di variabile. Inizialmente, passavo rapidamente su questo argomento e procedevamo, finché non mi sono reso conto che non sapevano affatto come gestirlo. Ora dedico molto tempo alle variabili e torno su di esse costantemente. È necessario dedicarsi a un apprendimento ripetitivo. Sullo schermo cambio diverse variabili e li costringo a dire il loro valore. Inoltre, in Scratch ci sono strutture di controllo e controlli dei valori, come while, per o in etcdhelper, che non modificherà il servizio kube-dns. in Python. Vengono forniti piuttosto facilmente, solo che ci sono problemi con i cicli annidati. Cerco di dare diversi esercizi con cicli annidati affinché l'azione sia chiara. Dopo di che passo alle funzioni. Anche per gli adulti il concetto di funzione può essere poco chiaro, figuriamoci per i bambini. Mi dilungo a spiegare cosa sia una funzione, parlo di una fabbrica che riceve materiali e restituisce prodotti, del cuoco che trasforma ingredienti crudi in cibo. Poi facciamo un programma "prepara un panino" con gli ingredienti e successivamente lo trasformiamo in una funzione, a cui passiamo gli ingredienti come parametri. Con lo studio delle funzioni concludo con Scratch.

Python

Con Python è tutto più semplice. C'è un buon libro, Python for Kids, e lo utilizzo per insegnare. Tutto è standard: stringhe, ordine delle operazioni, print(), input() e così via. Scritto in modo semplice e con umorismo, piace ai bambini. Ha un difetto comune a molti libri di programmazione. Come nella famosa barzelletta — come disegnare un gufo. Ovale — cerchio — gufo. Il passaggio da concetti semplici a concetti piuttosto complessi è troppo brusco. Ci metto diverse lezioni a capire che un oggetto si collega a un metodo con un punto. D'altro canto, non ho fretta, ripeto la stessa cosa in modi diversi finché non emerge un qualche tipo di quadro. Inizio dalle variabili e ci ritorno, già in Python. Le variabili sono una sorta di maledizione.

Uno studente brillante, che qualche mese fa digitava agilmente variabili su Scratch, guarda come un agnello davanti a nuove porte, incapace di mettere insieme l'X e lo Y che sono chiaramente scritti sulla lavagna sopra. Ripetiamo! Cosa ha una variabile? Nome e valore! Cosa significa il segno di uguaglianza? Assegnazione! E come verifichiamo l'uguaglianza? Doppio segno di uguaglianza! E così ripetiamo ancora e ancora, fino a completa illuminazione. Poi passiamo alle funzioni, dove impiega più tempo spiegare gli argomenti. Argomenti nominati, in base alla posizione, di default e così via. Non siamo ancora arrivati alle classi in nessun gruppo. Oltre a Python dal libro, studiamo algoritmi popolari, di questo parleremo dopo.

Fondamentalmente, l'apprendimento

La mia lezione è organizzata in questo modo: per mezz'ora do teoria, controllo la comprensione e fisso ciò che è stato appreso. Un'ora per i laboratori. Spesso mi lascio andare e parlo per un'ora, quindi rimangono solo mezz'ora di pratica. Quando studiavo Python, ho seguito un corso Algoritmi e Strutture Dati Kiryanova del MIPT. Mi è piaciuto molto il suo modo di esporre e la struttura delle lezioni. La sua idea è che i framework, la sintassi e le librerie diventano obsoleti. Architettura, lavoro di squadra e sistemi di controllo delle versioni sono ancora prematuri. Alla fine rimangono gli algoritmi e le strutture dati, che sono noti da tempo e continueranno a esistere in forme simili. Io stesso ricordo solo gli interi dal Pascal dell'istituto. Poiché i miei studenti sono per lo più giovani, dai sette ai quindici anni, credo che per il loro futuro sia più importante creare solide basi piuttosto che scrivere rapidamente un platformer in Python. Anche se, a loro piace di più il platformer, e li capisco. Gli do algoritmi semplici — ordinamento a bolle, ricerca binaria in una lista ordinata, notazione polacca inversa usando uno stack, ma li analizziamo sempre molto dettagliatamente. È emerso che i bambini moderni non sanno come funziona un computer, e lo spiego anche. Cerco di collegare diversi concetti in ogni lezione. Ad esempio, computer — memoria/processore — memoria di celle (faccio tenere un modulo di memoria, indovina quante celle ci sono) — ogni cella come una lampadina — ci sono due stati — true/false — and/or — binario/decimale — 8 bit = 1 byte — byte = 256 varianti — tipo di dato logico su un bit — numeri interi su un byte — valore su due byte — stringa su un byte — il numero più grande su 64 bit — una lista e una tupla dei tipi precedenti. Preciso che in un computer reale è tutto un po' diverso e ci sono altre quantità di memoria per questi tipi di dati, ma il punto è che nel processo creiamo tipi di dati più complessi a partire da quelli più semplici. I tipi di dati sono, probabilmente, la cosa più difficile da ricordare. Per questo motivo, inizio ogni lezione con un rapido riscaldamento — un allievo nomina un tipo di dato, il successivo fornisce due esempi, e così via in cerchio. Alla fine, sono riuscito a far sì che anche i più giovani rispondano con entusiasmo — float! boolean! sette, cinque! pizza, auto! Durante la lezione continuo a distrarre uno o l'altro, altrimenti cominciano a grattarsi il naso e a guardare il soffitto. Inoltre, è necessario controllare il livello di conoscenze di ciascuno nel corso della lezione.

I miei studenti non smettono mai di sorprendermi sia con la loro stupidità che con la loro sorprendente prontezza. Prontezza, per fortuna, più spesso.

Volevo scrivere di più, ma è già venuto fuori un lungo testo. Risponderò con piacere a tutte le domande. Accolgo con favore ogni critica, ma vi prego di essere più tolleranti l'uno verso l'altro nei commenti. Questo è un articolo gentile.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster