Perché insegnare la programmazione ad un bambino? L’insegnamento del coding è l’alfabetizzazione del nuovo millennio.
Conoscere come “ragionano le macchine”, infatti, è essenziale, in un mondo sempre più digitale come quello in cui viviamo.
Iniziare ad apprenderne i concetti di base del pensiero computazionale in età scolare, pertanto, è il modo migliore per formare i bambini ed i ragazzi ad un uso attivo e conspaevole della tecnologia, ma non solo.
La formazione dei giovanissimi in età scolare è un argomento molto delicato e in questa sede non abbiamo alcuna intenzione ad erigerci a giudici del sistema scolastico.
L’obbiettivo di questo articolo, semplicemente, è quello di fornire al lettore delle indicazioni utili su quelli che potrebbero essere gli strumenti migliori per creare delle competenze digitali di base in tema di programmazione e funzionamento delle applicazioni.
Vi spiegherò perché è importante spiegare il coding a bambini e ragazzi e quali sono i migliori linguaggi e strumenti per “giocare a programmare”.
Indice
Insegnare programmazione ai bambini: i vantaggi di un approccio precoce
Esistono diverse ragioni per imparare a programmare già da giovanissimi, parliamo in sostanza di vantaggi come:
- lo sviluppo di capacità logiche;
- l’acquisizione di skill in tema di problem solving;
- le possibilità di comprendere meglio le dinamiche sottostanti un mondo sempre più influenzato dalla tecnologia, dai software e dai dispositivi elettronici;
- l’opportunità di capire precocemente se determinate tematiche sono di proprio interesse;
- lo sviluppo di una forma mentis utile in futuro per le scelte riguardanti lo studio e il lavoro.
Il fatto di acquisirne le basi sin da bambini non rende la programmazione una strada obbligata per i minori una volta divenuti sufficientemente maturi da scegliere i propri percorsi scolastici e professionali, al contrario rappresenta l’occasione di apprendere capacità utili anche in altri ambiti del quotidiano.
A tal proposito si tenga conto che lo studio della programmazione richiede di comprendere anche il significato di diversi termini e frasi in Inglese, divenendo così anche uno strumento utile per l’apprendimento di questa lingua.
Insegnare ad un bambino i rudimenti di coding, quindi, è senza dubbio una buona idea che lo aiuterà, da grande, a rapportarsi meglio con la tecnologia e gli strumenti che, a prescindere dalla strada che deciderà di percorrere, dovrà inevitabilmente utilizzare nella vita personale o professionale.
Il pensiero computazionale
Volendo porre l’accento su logica e problem solving, è possibile sottolineare che in entrambi i casi si tratta di tecniche legate al cosiddetto pensiero computazionale (o computational thinking), un concetto con cui è possibile descrivere qualsiasi processo mentale iterativo, o insieme di processi, che consenta di identificare un problema e di risolverlo. Esso si articola in 3 fasi:
- astrazione: viene identificato il problema da risolvere e, se troppo complesso, viene diviso in problemi più piccoli da affrontare in sequenza;
- automazione: viene espressa la possibile soluzione al problema (o catena di soluzioni ai sotto-problemi che compongono quello principale);
- analisi: viene applicata la soluzione ipotizzata e se ne verificano gli effetti.
Quello del pensiero computazionale è un concetto formalizzato in ambito informatico e la sua applicazione diventa tanto più efficace quanto prima ci si approccia ad esso.
Il coding è una pratica quasi interamente improntata sulle fasi esposte in precedenza e, data la pervasività della programmazione in ogni aspetto della nostra vita, esso può essere considerato ormai una capacità d’importanza paragonabile allo scrivere, leggere e sapere contare che sono tradizionalmente considerate le abilità di base per qualsiasi individuo scolarizzato.
Il pensiero computazionale è un’espressione di somma razionalità ed è un approccio utile non solo nell’ambito del coding.
Sapere identificare un problema, analizzarlo, eventualmente scomporlo in problemi più piccoli, e trovare la soluzione ottimale al suo soddisfacimento non sono tematiche puramente informatiche, ma attengono alla vita di tutti i giorni.
Come insegnare programmazione ai bambini
Chi si affaccia per la prima volta al coding potrebbe essere erroneamente indotto a pensare che si tratti di qualcosa di estremamente complesso. In realtà, riferendosi ai concetti di base, lo studio del coding può rivelarsi estremamente divertente ed essere proposto ai bambini sotto forma di gioco.
Esistono, infatti, linguaggi e framework appositamente creati per la didattica di bambini e ragazzi che trasformano l’apprendimento in un’attività ludica.
Di pe se, inoltre, si consideri che l’utilizzo stesso del computer (e di altri dispositivi digitali) rappresenta per i bambini uno stimolo importante in grado di coinvolgerli maggiormente rispetto ai tradizionali supporti didattici.
In altre parole: non abbiate paura che i vostri bambini si annoino approcciando il coding perché, se fatto nel modo corretto (con la supervisione e l’aiuto di un adulto, ovviamente) il percorso didattico si rivelerà più semplice e divertente di quanto possiate pensare.
Attraverso la gamification, infatti, gli studenti vengono coinvolti nelle attività in classe e incoraggiati a imparare: l’uso dell’apprendimento simile a un gioco motiva la partecipazione, il coinvolgimento e aggiunge divertimento al processo di apprendimento.
Ambienti di sviluppo per bambini e ragazzi
Nel proseguo di questo articolo vi presenterò diversi strumenti attraverso i quali insegnare il coding ai bambini.
Più che di linguaggi di programmazione per bambini si tratta di ambienti di sviluppo che fanno prevalentemente uso di paradigmi visuali.
Il loro scopo è consentire, anche ai più piccoli, di creare semplici programmi che metteranno alla prova le loro abilità logiche per la soluzione di semplici problemi o per il raggiungimento di obiettivi specifici, solitamente con il supporto di una grafica in stile cartoon e ambientazioni divertenti.
Utilizzando gli strumenti della logica computazionale i bambini impareranno a muovere personaggi sullo schermo, a compiere azioni via via più complesse sino a dar vita fino a veri e propri programmi.
Analizziamo quindi nel dettaglio alcuni strumenti di facile accesso che potrebbero semplificare l’insegnamento della programmazione e il suo apprendimento da parte dei bambini.
Swift Playgrounds
Swift Playgrounds è un’applicazione della Apple per il tablet iPad che insegna a programmare con il linguaggio Swift, soluzione di riferimento per l’ecosistema iOS, in modalità interattiva.
Per poterla utilizzare non sono necessarie competenze informatiche di base ed è quindi adatta a tutti, compresi i più piccoli.
Il programma di apprendimento è stato organizzato sulla base di “sfide” superando le quali è possibile salire di livello e passare ai playground più avanzati, come riferimento per affrontare i vari “rompicapo” proposti è disponibile una serie di lezioni a partire dalle “Nozioni fondamentali di Swift” che vengono presentate come un gioco attraverso il quale imparare le basi del codice con cui muovere un personaggio virtuale in un ambiente 3D.
Tra i vantaggi di Swift Playgrounds vi è anche l’opportunità di scoprire i segreti della programmazione che consente di guidare robot e droni, così come di interagire con gli oggetti connessi tramite tecnologie per l’IoT (Internet of Things).
Per maggiori informazioni www.apple.com/it/swift/playgrounds/
Kodu Game Lab
Kodu Game Lab è un ambiente di sviluppo per lo sviluppo di videogame in 3D che è stato appositamente progettato per insegnare ai bambini le basi della programmazione.
In principio esso era stato realizzato avendo come piattaforma di riferimento la console videoludica Xbox 360 e C# come linguaggio, tale caratteristica consentiva di sviluppare soluzioni basate sull’uso dei controller, mentre con il porting su PC l’ambito è stato esteso anche al mouse e alla tastiera.
A livello pratico, la programmazione con Kodu Game Lab ha un approccio visuale ed è articolata sulla base di “tile”, cioè tessere che fungono da piccoli blocchi di codice con cui creare delle ambientazioni in cui si muovono personaggi dotati di caratteristiche proprie con comportamenti programmabili a propri.
E’ possibile definire regole differenti per ogni nuovo gioco mentre tramite i “tile” si possono impostare eventi ispirati a situazioni reali, azioni e oggetti destinati a manifestarsi in base a quanto stabilito dal programmatore. Quest’ultimo può fare riferimento a risorse online per l’apprendimento, video didattici e una ricca raccolta di Tips and Tricks.
Per maggiori informazioni www.kodugamelab.com
Blockly
La piattaforma Blockly fa capo al programma di formazione online Code with Google ed è accessibile via browser Web. Il progetto si basa sull’omonima libreria che permette di integrare un’applicazione mobile o un sito Web con un visual code editor, quest’ultimo consente di programmare utilizzando degli elementi grafici detti “blocchi” che offrono una rappresentazione grafica dei principali concetti del coding come per esempio le variabili, i cicli e le espressioni logiche.
Un’impostazione di questo tipo dà la possibilità di applicare da subito i principi della programmazione senza una preparazione teorica riguardante i costrutti sintattici.
Uno dei principali vantaggi di Blockly risiede inoltre nel fatto che i blocchi creati possono essere esportati in diversi linguaggi per il Web e non solo come per esempio PHP, Python, JavaScript, Dart e Lua.
Per quanto riguarda invece la sua versione dedicata alla formazione dei più piccoli, Blockly viene proposta attraverso il programma “Blockly Games” che si articola in una serie di piccoli videogame didattici pensati per insegnare la programmazione. Tutti gli esempi disponibili sono stati pensati per bambini che non hanno alcuna esperienza pregressa nel coding ma li preparano ai linguaggi tradizionalmente basati su un approccio testuale.
Per maggiori informazioni blockly.games/?lang=it
Scratch
Scratch è una piattaforma di programmazione online che consente di realizzare delle storie interattive, dei videogiochi o delle animazioni eventualmente condivisibili con gli altri appartenenti della community che ruota intorno ad essa. Si tratta di un progetto, accessibile in modalità del tutto gratuita, creato in collaborazione tra il Lifelong Kindergarten Group e i Media Lab del MIT (Massachusetts Institute of Technology).
Il suo obbiettivo è quello di insegnare ai più giovani a pensare in modo creativo e a collaborare all’interno di team utilizzando ragionamenti improntati allo stile cognitivo sistematico che premia la capacità di affrontare ogni procedura un passo alla volta sulla base delle informazioni disponibili.
Usato in più di 150 nazioni nonché disponibile in oltre 60 lingue differenti, Scratch è stato progettato specificatamente per gli appartenenti alla fascia di età compresa tra gli 8 e i 16 anni e offre un ambiente di sviluppo completamente orientato al visual programming corredato da risorse per studenti ed educatori.
Può essere comunque utilizzato da aspiranti programmatori di qualsiasi età e viene attualmente impiegato nei contesti più disparati, dalle famiglie alle scuole fino alle biblioteche, alle ludoteche e ai musei. Da segnalare infine il progetto ScratchJr appositamente dedicato ai bambini tra i 5 e i 7 anni.
Per maggiori informazioni scratch.mit.edu
N.B. Su MRW.it trovate anche una guida in italiano a Scratch
App Inventor
App Inventor è un servizio creato dal MIT che vanta milioni di utenti registrati in tutto il Mondo, permette di creare applicazioni per il sistema operativo mobile Android e utilizza il linguaggio Java come base per il codice realizzato dagli utilizzatori. Esso offre un ambiente di programmazione visuale molto completo ma comunque intuitivo grazie ad un sistema incentrato sulla composizione di scenari basati su blocchi e forme differenti da incastrare tra loro come in una sorta di puzzle.
App Inventor consente di definire qualsiasi aspetto di un’applicazione, dal Layout ai testi, dalle immagini ai media, dalle mappe alle funzionalità per la geolocalizzazione fino ai form per i feedback e l’autenticazione, al controllo vocale, all’integrazione delle funzionalità per il social networking e alla gestione dei sensori.
Particolarmente interessante l’integrazione con Lego Mindstorms che permette di creare dei software con cui controllare robot costruiti con i set del noto produttore di giocattoli.
Per maggiori informazioni appinventor.mit.edu
N.B. Su MRW.it trovate anche una guida in italiano a APP Inventor
Kit per la robotica
Un’altra interessante applicazione del coding nell’ambito della didattica riguarda la robotica. Cosa c’è di più divertente per un bambino che imparare a costruire robot e farli funzionare?
Anche in questo caso esistono diversi playground educativi che insegnano ai ragazzi a “programmare robot” utilizzando le tecniche del coding.
Lego Mindstorms
Mindstorms è la soluzione proprietaria di LEGO per chi vuole approcciare alle tematiche della programmazione attraverso un ambiente didattico ludico ma anche altamente performante. Per iniziare è sufficiente acquistare un set LEGO Mindstorms ed essere muniti di un Tablet, di un PC o di un Mac.
L’ambiente di programmazione è estremamente intuitivo e consente non solo di interagire con i motori del robot per farlo muovere, ma anche di insegnargli a riconoscere determinati stimoli con il sensore tattile EV3.
Per maggiori informazioni www.lego.com/it-it/themes/mindstorms/learntoprogram
CoderZ
CoderZ è una piattaforma online potente mediante la quale gli studenti apprendono e sperimentano le abilità STEM imparando a programmare il comportamento di robot attraverso una semplice ed intuitiva interfaccia visuale basata sui blocchi.
Grazie agli strumenti offerti da CoderZ, infatti, i bambini possono imparare a programmare interagendo con ingressi (sensori) e uscite (motori) di piccoli robot sperimentando “nel mondo reale” gli effetti delle operazioni compiute a video.
Per maggiori informazioni gocoderz.com
Choregraphe
Choregraphe è la piattaforma propietaria di SoftBank Robotics, società specializzata in soluzioni di robotica molto utilizzate ed apprezzate anche nell’ambito della didattica, produttrice dei famosi NAO e Pepper, due avanzatissimi robot impiegati in diversi ambiti, tra cui quello scolastico.
Più precisamente si tratta di un IDE (Integrated Development Environment) che consente di programmare i simpatici robot con una semplice interfaccia basata su drag-and-drop.
Attraverso questo soffisticato IDE è possibile creare animazioni, comportamenti, dialoghi e testarli sia sul robot virtuale che fisico. Gli utenti più avanzati, inoltre, avranno la possibilità di arricchire i comportamenti dei robot mediante codice Python.
Unico difetto? Il costo dei robot (qualche migliaio di euro).
Per maggiori informazioni developer.softbankrobotics.com/nao6/naoqi-developer-guide/getting-started
VEX IQ
Anche VEX Robotics propone la propria piattaforma di robotica educativa al fine di promuovere l’interesse dei ragazzi nei confronti delle materie tecniche e scientifiche. Vedere un Robot che si muove in funzione della programmazione è estremamente motivante per gli studenti e con Vex IQ (l’ambiente proprietario di VEX) è possibile fare programmazione visuale (a blocchi) in modo estremamente semplice ed intuitivo.
La piattaforma per la robotica educativa VEX IQ è pensata per gli studenti a partire dagli 8 anni. Si adatta sia a studenti alle prime armi che sperimentano un linguaggio di programmazione a blocchi tipo Scratch e Blockly sia a studenti esperti abituati a programmare in C.
Per maggiori informazioni vexrobot.it/vex-iq/
Conclusioni
L’insegnamento del coding ai bambini è una pratica fortemente consigliata nell’ottica di una “nuova alfabetizzazione” al digitale all’interno di progetti didattici moderni e orientati al futuro. L’apprendimento dei concetti base del pensiero computazionale appare, altresì, requisito fondamentale non solo per l’approccio alle materie STEM (sempre più importanti) ma, più in generale, quale insegnamento utile in ogni ambito della vita, tanto quella digitale quanto quella “reale”.