Questo il mio contributo al 69° Carnevale della Matematica: “Macchine matematiche antiche e moderne“, poiché la mia “macchina matematica” preferita è il computer allora parlerò di come secondo me bisognerebbe insegnare a programmare questa macchina fin da piccoli, in modo che si possa da grandi imparare a programmare “macchine matematiche” più complesse 🙂
Perché io che insegno in una scuola superiore dovrei parlare del modo con cui insegnare informatica nella primaria?
In primo luogo perché lo scambio di competenze è un’aiuto per la propria crescita personale, in secondo luogo perché vorrei tentare di dare un piccolo contribito alla risoluzione di un grande problema, soluzione che si ottiene modificando l’insegnamento dell’informatica fin dalla scuola primaria.
Noto spesso la difficoltà con cui gli studenti affrontano la programmazione della loro azione di apprendimento, ciò capita perché in generale non si insegna a farlo. Si da per scontato che uno studente da solo impari la tecnica di studio, impari a memorizzare, impari a dare sequenza alle proprie azioni di studio, si dimentica però che queste azioni, informatiche, sono da insegnare, non nascono naturalmente. Ecco perché lo studente, ma soprattutto l’insegnante, dovrebbe aggiungere alla propria azione didattica il modulo: “impara a pensare” che in altro modo può essere tradotto come:
“impara ad ordinare i tuoi pensieri”
“impara a risolvere i problemi”
o ancora meglio:
“impara a programmare”,
in questo modo lo studente avrà la competenza nel formalizzare logicamente qualsiasi tipo di progetto.
Ma quando iniziare questa azione?
Subito! Dalle scuole elementari, la dispersione è da prevenire!
Tanto prima gli insegnati, di ogni disciplina, impareranno come fare informatica meglio sarà per i nostri studenti.
In questo periodo è tornato in voga, con progetti ministeriali, un’azione didattica applicata in ogni disciplina, soprattutto nella matematica, che si preferisce nominare in inglese: problem posing and solving, altro non è che il modo classico con cui si affrontano logicamente i problemi in informatica, quindi finalmente ci si accorge che l’informatica può ridurre l’insuccesso didattico.
Ma come applicare il PPS?
Bisogna modificare radicalmente il modo di fare l’insegnante (e qui la vedo dura) mettersi in discussione ed imparare a progettare…
… e qui, in meno di 20 righe, ho già perso il 50% dei lettori di questo articolo… poco male i restanti sono sognatori e quindi appartenenti al club “cambiare è bello” che ho fondato in questo momento.
A questo punto il lettore si aspetterebbe la soluzione, che ovviamente non ho, qualcuno più saggio direbbe: “l’obiettivo non è trovare la soluzione, ma percorrere la via del cambiamento” ooommmmm
(vi prometto che non mi candido e non fondo nessun partito 🙂 )
Se siete lettori di questo blog, in un passato articolo, scritto appunto per un Carnevale della matematica diedi una mia personalissima soluzione, l’articolo era indirizzato agli allievi demotivati
a cui consigliavo includere nelle proprie azioni le seguenti librerie in C:
#include (meraviglia.h) #include (precisionePignoleria.h) #include (umilta.h) #include (openSource.h) #include (dream.h)
guardare al mondo con meraviglia, essere precisi nelle proprie azioni di progetto, tanta umiltà, pensiero ed azioni didattiche open, sognare, soprattutto sognare perché è sui sogni che vengono costruite azioni reali.
Un buon riassunto del perché è importante insegnare ai bambini a programmare è data dall’infografia: 5 reasons to teach kids to code. La sorpresa nella parte finale dell’innografia (un click sull’immagine per visualizzarla per intero):
Fatta la premessa ora dovrei raccontarvi qualcosa di attinente con il tema del Carnevale della matematica.
Poiché all’inizio di questo post ho parlato di scuola elementare allora propongo alcune soluzioni interessanti che io stesso ho applicato sui miei figli, insegnare l’informatica giocando.
Soluzione 1: Light-bot
Light-bot è un gioco particolarmente adatto per allievi della scuola elementare e media che consente di apprendere concetti di programmazione senza dover digitare nessuna linea di codice, largamente usato in molte scuole americane e russe, è un modo perfetto far apprendere con divertimento la programmazione senza scontrarsi con un muro fatto di linee di codice. L’utente dovrà assemblare sequenze di oggetti grafici che costituiscono azioni che attiveranno il movimento di un piccolo robot.
Il gioco è multipiattaforma, funziona su iOS, Android e qualsiasi PC (all’interno di finestra browser).
Vedrete che in meno di un’ora sarete in grado di progettare lezioni di informatica, sarà sufficiente giocare.
Il linguaggio è costituito dalle seguenti istruzioni:
a sinistra vedete il simbolo grafico a destra la traduzione in “informatichese”
Quindi il programma
viene tradotto in
main: forward(); forward(); light();
in italiano:
main: avanti(); avanti(); accenti_luce();
con la parola main identifichiamo il gruppo di istruzioni principali (il corpo del programma)
Semplice vero?
Le istruzioni sono le stesse, solo che stiamo usando parole invece che immagini
ancora un esempio:
Dovreste essere riusciti senza difficoltà ad ottenere il seguente risultato:
main: turnLeft(); jump(); light();
in italiano:
main: gira_a_sinistra(); salta(); accendi_luce();
ancora una prova
risultato
main: jump(); turnRight(); forward(); light();
in italiano:
main: salta(); gira_a_destra(); vai_avanti(); accendi_luce();
Nella vita di ogni giorno però ogni singola azione può essere scomposta in procedure più semplici e le procedure in Light-bot vengono così indicate
Come potete notare le procedure sono scritte in una sezione “proc”
main: forward(); proc1(); proc1();
proc1: jump(); jump(); light();
Se siete giunti fino a questo punto allora sarete in grado di scrivere qualsiasi programma con Light-bot.
Bene! Muovendo il vostro robot virtuale avete compreso cosa vuol dire programmare, cioè come vengono eseguite da un computer le istruzioni di un programma.
Vediamo come è fatta l’interfaccia di programmazione, i programmatori parlano di IDE di programmazione.
Per avviare la programmazione click sull’icona verde “>”. Se volete cancellare i progressi effettuati fate click sul cestino.
Se avete deciso di incominciare potete scegliere tre percorsi:
- Base
- Procedure
- Loop
I tre percorsi possono essere i tre moduli didattici principali su cui costruire le vostre lezioni di informatica.
Se avete concluso tutte le lezioni potete ricevere il diploma.
Prima di incominciare il robot vi spiega come funziona l’interfaccia di programmazione.
All’inizio il robot vi dirà:
- “Ho bisogno del tuo aiuto per illuminare tutte le piastrelle blu!”
- “Il comando “light” mi dice di illuminare una piastrella”
- “per programmarmi premi sui comandi che trovi sotto per aggiungerli nello spazio MAIN”
- “quando hai finito premi >”
- “se vuoi che io ti ripeta queste istruzioni premi sul pulsante ?”
- “buona fortuna”
Nel primo programma viene chiesto di effetuare due passi in avanti ed accendere la luce
Se il risultato è giusto si accenderà la luce.
Nel sesto programma viene chiesto di eseguire un percorso con più salti e più accensioni di luce:
Il programma sarà:
La realizzazione dei programmi potrà essere fatta tutti insieme su una LIM oppure da soli o per gruppi su computer o chi potrà su tablet.
Ma quanti bambini giocano con lo smartphone dei genitori?
Light-bot è anche disponibile per smartphone.
Ora se tutto è andato bene avrete un gruppo di bambini che avrà tanta voglia di sperimentare cose nuove, sarà quindi giunta l’ora di incominciare ad usare Blockley.
Soluzione 2: Blockley
Blockley è un ambiente di programmazione grafico, l’utente sposta dei blocchi, simili a tasselli di un puzzle, per realizzare le proprie applicazioni. Chi già si occupa di informatica sicuramente avrà notato similitudini operative e grafiche che ricordano altri linguaggi di programmazione visuale, infatti storicamente la realizzazione di Blockley è stata influenzata da App Inventor, App Inventor è stato influenzato da Scratch il quale è stato influenzato da StarLogo e Etoys. Il progenitore di tutti questi linguaggi di programmazione è stato il Logo, creato da Seymour Papert insieme a Jean Piaget, fautore della teoria dell’apprendimento costruttivista e quindi se facciamo informatica in questo modo stiamo facendo una didattica di tipo costruttivista.
Non è necessario avere una connessione ad internet per usare Blockley, infatti se a scuola avete una connessione lenta, o inesistente, nessun problema, scaricate il tutorial in un unico file da 3MB e poi eseguite il tutto o sul computer o su una chiavetta USB.
Sul sito di riferimento: https://code.google.com/p/blockly/ potrete trovare gli ultimi aggiornamenti con più esercizi.
Un buon modo per insegnare ai bambini ad usare Blockley è quello di eseguire il tutorial “labirinto”
10 esercizi guidati di programmazione in cui dovrete spostare, utilizzando i comandi messi a disposizione, un omino all’interno di un labirinto.
Una volta che avrete unito i blocchi, potrete eseguire il programma facendo click sull’apposito pulsante:
Nel caso venga commesso un errore, sarete avvertiti e vi verrà richiesto di riprovare a riscrivere il programma:
Alla decima lezione bisognerà manipolare istruzioni di cicli e scelte:
In fondo a sinistra della schermata di editing trovate i due pulsanti:
Rispettivamente:
- visualizzare il codice JavaScript generato;
- condividere il programma con altri utenti.
Per gli studenti più grandi, scuole medie e superiori, esistono interessanti possibilità come ad esempio la creazione di propri blocchi personalizzati o ancora addentrarsi tra i diversi progetti collegati a Blockly come ad esempio BlocklyDuino per la generazione di codice Arduino.
Soluzione 3: informatica con carta e penna
Di seguito alcune schede didattiche da cui potrete trovare spunto per creare delle lezioni creative:
- insegnare i numeri binari
- i miei amici robot
- costruire programmi per guidare in percorsi i propri compagni di classe
Soluzione 4: un po’ di idee
Online esistono parecchie soluzioni adatte ai bambini della scuola elementare, ma anche per gli studenti delle scuole medie che potrebbe essere interessante analizzare:
Tre percorsi di apprendimento alla programmazione JavaScript, per allievi delle scuole elementari, medie e superiori.
Vi insegnerà le basi della programmazione in Ruby partendo da zero. Non è necessaria nessuna precedente esperienza di programmazione.
Realizzari divertentissimi programmi in Ruby in modo estremamente semplice e coinvolgente, adatto per allievi di scuola elementare e medie. Il software multipiattaforma funziona su: Mac, Windows, Linux, Raspberry Pi.
Soluzione 5: un po’ di libri da comprare?
Qualche suggerimento per impostare lezioni adatte ai più piccoli.
- JavaScript for Kids
- Super Scratch Programming Adventure!
- Learn to Program with Scratch
- Python for Kids
- Think Like a Programmer
i libri sono disponibili sia in formato elettronico che cartaceo.
Soluzione 6: idee ispiratrici
Come ultimo contributo vi propongo la fonte ispiratrice di questo post, il TED Talk: “Insegnamo ai bambini a programmare” di Mitch Resnick del MIT Media Lab.
Resnick ci spiega, in modo divertente e attraverso esempi e dimostrazioni, quali siano i vantaggi che si ottengono insegnando ai bambini a programmare, in modo che possano essere in grado non solo di “leggere” le nuove tecnologie ma anche di crearle.
Programmare non è solo per fanatici dell’informatica, ma è qualcosa che possono fare tutti.
Sono consapevole che molti dei suggerimenti esposti nell’articolo necessitano di un grande lavoro didattico, ma l’insegnante è anche il “ricercatore” scientifico di nuove strade per l’apprendimento, è questa la vera formazione docente, un lavoro fatto di cooperazione tra colleghi di ogni ordine di scuola. Io stesso ho appreso concetti di pedagogia e disabilità dalle amiche e colleghe della scuola elementare (vicino al mio istituto) e loro da me hanno conosciuto soluzioni tecnologiche che hanno aperto nuove strade…
…è questo che ricerco, la cooperazione e lo scambio di competenze tra insegnanti.
Grazie!
Articolo veramente ricco, denso di informazioni preziose per insegnare a programmare.
Comincerò a praticare gli strumenti consigliati con i miei figli
Grazie, grazie e ancora grazie.
Esistono corsi di coding per bambini nella zona di Torino? Sarei molto interessata a mandarci le mie figlie di 6 e 9 anni, nonché molti loro amichetti. Grazie
Grazie Elisa per avermi contattato.
Non conosco corsi di questo genere in Torino, ma se come dici vi sono altri genitori interessati, posso pensare di organizzare un percorso didattico di coding per bambini.
Fammi sapere.
Saluti.
Grazie per la risposta. I bambini interessati sarebbero almeno 6 tutti della scuola primaria. Se si riuscisse a fare sarebbe carino inserire un corso do coding come progetto scolastico. Io sono rappresentante di classe in una piccolissima scuola di provincia e abbiamo un’aula informatica a disposizione poi comunque altri pc si possono recuperare. Lei conosce qualcuno in zona che sarebbe disponibile?
Gentile Signora.
Perdoni la risposta tardiva.
Mi contatti direttamente alla mia mail.
Se possibile mi dia qualche dettaglio in più in merito alla zona in cui svolgere il corso e alla quantità di ore che si vuole dedicare a questo percorso in modo che io possa fornirle informazioni precise sia sulle persone che sull’impostazione del corso.
Grazie per averi contattato.
Cordiali saluti.
Leggo ora quanto scritto su corsi per bambini a Torino. Sono stati attivati? Anch’io sarei interessata per mio figlio di 8 anni. Grazie Annalisa
Salve.
Scusi la risposta tardiva. In Torino ho svolto corsi per insegnanti di ogni ordine e grado. Per quanto riguarda corsi per i bambini sono in fase di progettazione.
In generale il problema è formare una classe eterogenea (almeno 10) di bambini, ma se lei avesse conoscenza di altri genitori interessati mi faccia sapere. L’idea migliore potrebbe essere quella di realizzare un piccolo campus di “code for kids”.
Saluti.
Buongiorno,
mi aggiungo per segnalare che anche mio figlio di 11 anni sarebbe molto interessato al corso i Torino. Come tenerci in contatto?
Raffaella
Se le è possibile mi scriva direttamente via mail.
Grazie
Carissimo professore
ho trovato la sua pagina proprio cercando una maniera per far incuriosire Edoardo (ha 12 anni) alla programmazione e visto che è appassionato di Lego Technic, un’abbinamento Arduino + Lego Technic potrebbe rivelarsi strategico … ma perchè no?! .. visto che a quell’età ormai lo smartphone è già presente… far comandare/controllare il prototipo dallo smartphone, non potrebbe essere la ciliegina sulla torta?
Ringraziandola per tutte le sue pubblicazioni, che sono certo si riveleranno utilisime, le segnalo che negli include di cui sopra, ha scritto “openSorce” invece che Source 🙂
Roberto
Salve.
Credo che il percorso intrapreso con suo figlio porterà senza alcun dubbio ad una modalità di studio a scuola più efficace e meno passiva.
Certamente l’utilizzo di un dispositivo mobile per comandare i propri dispositivi sarebbe interessantissimo, ovviamente è necessario impostare un’attività laboratoriale guidata, meglio se progettata autonomamente da lei prima di presentarla al figlio, in questo modio si eviteranno momenti di “stallo” che potrebbero provocare l’effetto “sconfitta” da parte del ragazzo… un passettino alla volta, ogni passo dovrebbe far percepire l’interazione con i dispositivi con inevitabile percezione dei propri (del ragazzo) miglioramenti.
Dirò cosa ovvia, ma faccia uso senza remora del “copia ed incolla”, l’importante e che siano spiegati nei minimi dettagli in modo che il ragazzo possa ripeterli e rielaborarli.
Grazie per la segnalazione del refuso, mi scusi tanto, ho corretto.
Con l’occasione le auguro Buone Feste.
Bravo e grazie. Occhio che, dato che vogliamo insegnare ai bambini, il correttore ortografico t’ha messo un ‘qui’ con l’accento
Grazie Roby
🙂 corretto.
Articolo molto interessante, grazie.
Questo articolo è fantastico!!
Insegno in una scuola primaria e sono una grande sostenitrice della didattica laboratoriale, costruttivismo, scuola attiva… Insegno informatica e mi sono avventurata da poco in questo mondo della programmazione.
Sono convinta che il futuro della scuola Debba prendere questa strada se non vuole rischiare di allontanarsi dai ragazzi..
Grazie di tutte le risorse fornite, non resta che applicarmi per prima per poi operare coi bambini:)
Grazie mille Mariella,
mi fa enormemente piacere che ciò che scrivo possa servire.
Se ti è possibile tienimi aggiornato sugli sviluppi didattici con i tuoi allievi.
Un caro saluto.
Bellissimo tutto.
A me è successo il contrario. Ho appena finito una mooc del politecnico di Milano di cooding con java e javascript. Stiamo partendo per Mantova per gita con 4a elementare (anche se termine antico è di facile comprensione e CODIFICA). Li stiamo preparando con tutti i canali possibile per fruire al meglio ciò che vivranno in quella intensa giornata. Loro sono talmente avanti (Inteso come generazione) che hanno inventato il gioco dell’agenzia di viaggio: progettano viaggi con tutti i particolari, sulla falsa riga della nostra gita, compresi i costi e li vendono virtualmente ai loro compagni di altre classi. Un gruppo vorrebbe invece realizzare un gioco interattivo con sfondo tematico, la città da visitare. Alcuni di loro stanno incominciando a programmare con scratch. Quindi ho voluto documentarmi tramite internet ed ho trovato il tuo interessantissimo articolo. Ora voglio proprio proporre a tutti loro un percorso di programmazione, ma alcuni giochi da te segnalati sono a pagamento, altri invece in inglese. Dovrei quindi seguirli passo passo per tradurre i comandi e le indicazioni. Preferirei che sperimentassero in autonomia. Esistono giochi in Italiano e gratuiti? Grazie
è veramente un argomento fantastico che senza dubbio seguirò
con molto interesse e metterò in pratica con i miei famigliari
Buongiorno,
mi aggiungo anche io a coloro che sono interessati ad un corso su Torino. Mio figlio ha 12 anni . Le sarei grata se mi facesse avere eventuali informazioni al riguardo.
Grazie mille
Vitalina
Grazie per questo interessantissimo e utilissimo articolo. Stavamo giusto cerccanddo come’ ovviare alle mancanze della scuola per insegnare al nostro figlio un po’ di programmazione. Grazie!
Grazie 🙂
Ho trovato questa guida estremamente utile. Grazie