Insegnare ai bambini a programmare

bambino-programmatoreQuesto 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):

infografica

 

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

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:

light-bot01

a sinistra vedete il simbolo grafico a destra la traduzione in “informatichese”

Quindi il programma

light-bot02

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:

light-bot03

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

light-bot04

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

light-bot05

Come potete notare le procedure sono scritte in una sezione “proc”

light-bot06

main:
   forward(); 
   proc1(); 
   proc1();

light-bot07

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.

light-bot11

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.

light-bot12

light-bot13

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”

light-bot08

  • “per programmarmi premi sui comandi che trovi sotto per aggiungerli nello spazio MAIN”
  • “quando hai finito premi >”

light-bot09

  • “se vuoi che io ti ripeta queste istruzioni premi sul pulsante ?”
  • “buona fortuna”

light-bot10

Nel primo programma viene chiesto di effetuare due passi in avanti ed accendere la luce

light-bot14b

Se il risultato è giusto si accenderà la luce.

light-bot15

Nel sesto programma viene chiesto di eseguire un percorso con più salti e più accensioni di luce:

light-bot16

Il programma sarà:

light-bot17

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

blockly

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 StarLogoEtoys. 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.

blockly01

Sul sito di riferimento:  https://code.google.com/p/blockly/ potrete trovare gli ultimi aggiornamenti con più esercizi.

blockly02

Un buon modo per insegnare ai bambini ad usare Blockley è quello di eseguire il tutorial “labirinto

blockly03

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:

blockly04

Nel caso venga commesso un errore, sarete avvertiti e vi verrà richiesto di riprovare a riscrivere il programma:

blockly05

blockly06

Alla decima lezione bisognerà manipolare istruzioni di cicli e scelte:

blockly07

In fondo a sinistra della schermata di editing trovate i due pulsanti:

blockly10

Rispettivamente:

  • visualizzare il codice JavaScript generato;
  • condividere il programma con altri utenti.

blockly08

blockly09

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.

blockly11

Soluzione 3: informatica con carta e penna

Di seguito alcune schede didattiche da cui potrete trovare spunto per creare delle lezioni creative:

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:

crunchzilla

crunchzilla

Tre percorsi di apprendimento alla programmazione JavaScript, per allievi delle scuole elementari, medie e superiori.

Hackety Hack

hackety

Vi insegnerà le basi della programmazione in Ruby partendo da zero. Non è necessaria nessuna precedente esperienza di programmazione.

kids ruby

kidsruby

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.

libri-programmazione-bambini

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!

Questa voce è stata pubblicata in i miei allievi, matematica, tutorial e contrassegnata con , , , , , , , , , , , , , , , . Contrassegna il permalink.

22 risposte a Insegnare ai bambini a programmare

  1. Daniela scrive:

    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.

  2. Elisa scrive:

    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

    • admin scrive:

      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.

      • Elisa scrive:

        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?

        • admin scrive:

          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.

          • Annalisa scrive:

            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

          • admin scrive:

            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.

          • raffaella scrive:

            Buongiorno,
            mi aggiungo per segnalare che anche mio figlio di 11 anni sarebbe molto interessato al corso i Torino. Come tenerci in contatto?
            Raffaella

          • admin scrive:

            Se le è possibile mi scriva direttamente via mail.
            Grazie

  3. 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

    • admin scrive:

      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.

  4. Roby scrive:

    Bravo e grazie. Occhio che, dato che vogliamo insegnare ai bambini, il correttore ortografico t’ha messo un ‘qui’ con l’accento

  5. Ludovico Zodiaco scrive:

    Articolo molto interessante, grazie.

  6. Marilena scrive:

    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:)

    • admin scrive:

      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.

  7. silvia scrive:

    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

  8. idalmino rocca scrive:

    è veramente un argomento fantastico che senza dubbio seguirò
    con molto interesse e metterò in pratica con i miei famigliari

  9. vitalina scrive:

    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

  10. Renata Suchodolska scrive:

    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!

  11. Ho trovato questa guida estremamente utile. Grazie

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.