martedì, aprile 11, 2017

Il pensiero computazionale (coding)

Il coding dedicato ai bambini è giudicato utile a prescindere, senza che ci siano studi veramente definitivi in materia. Il rischio concreto è che il solo fatto che sia "innovativo", e quindi "trendy", lo faccia considerare una cosa buona, da utilizzare nella didattica. Da informatico e da docente, da genitore e da amante della tecnologie digitali (che sono ovviamente straordinarie), vorrei si riflettesse molto di più su questa proposta didattica.

Ad oggi i dati scientifici che abbiamo sugli effetti delle tecnologie, quando ad esse sono esposti bambini o adolescenti, sono abbastanza preoccupanti. Una breve rassegna è consultabile in un altro post di questo blog, intitolato, non per caso, La tecnologia fa male ai bambini. Un libro veramente istruttivo in proposito è intitolato significativamente "Demenza digitale"; l'autore è un neuroscienziato tedesco, Manfred Spitzer (qui il video di una sua conferenza tenuta in Italia), direttore del Centro per le neuroscienze e l'apprendimento dell'Università di Ulm.

Se volgiamo lo sguardo alle ricerche sugli effetti delle tecnologie digitali nelle scuole, scopriamo che la ricerca è ormai pacificamente unanime: le tecnologie digitali non portano, in media, a nessun effetto statisticamente significativo. Anzi, quando i computer sono troppi, l'apprendimento addirittura mediamente diminuisce (come certifica la ricerca OCSE del 2009).

In considerazione di queste evidenze, scientificamente fondate, è importante considerare che la tecnologia digitale va utilizzata con la dovuta prudenza, in particolare solo quando essa è strettamente necessaria (in relazione a determinati fini didattici) e solamente con modalità che ne consentano un utilizzo e una fruizione ottimale per l'apprendimento del discente.

o - o - o

Non è ben definito, nell'ambito degli apprendimenti, cosa si debba intendere con il termine "coding" (chiamato in italiano "pensiero computazionale"). Una definizione autorevolmente diffusa dal MIUR è la seguente (si veda a pagina 1 dell'Allegato 1 –  Avviso pubblico prot. n° 2669 del 03 marzo 2017):
"il pensiero computazionale è «l’insieme dei processi mentali coinvolti nella formulazione di un problema, nonché l’espressione della sua soluzione in modo che una macchina o un essere umano siano in grado di eseguirlo in modo efficace. È tutto ciò che viene prima della tecnologia informatica, pensato da un essere umano conscio della potenza dell’automazione»"
La prima parte della definizione richiama la "formulazione di un problema" e "l'espressione della sua soluzione" in modo abbastanza chiaro e soprattutto univoco, tale che anche un automa possa eseguire in modo efficace i singoli passi che portano alla soluzione del problema. Nella definizione è scritto "eseguirlo", dove il suffisso "lo" si dovrebbe correttamente riferire all'esecuzione dei passi che portano alla soluzione, e non, come nel brano riportato, alla soluzione stessa, che non deve essere "eseguita", ma raggiunta, in particolare descritta con un linguaggio non univoco.

Il pensiero computazionale, è basato, in ultima analisi, sulla descrizione non ambigua delle procedure apprese, e soprattutto sull'autocontrollo dell'errore, attività che è alla base della scrittura dei programmi per computer.

Quando si debbono mettere in fila una serie di istruzioni per ottenere un predeterminato obiettivo (dopo che esse sono state eseguite da un automa, cioè da un cretino super veloce che esegue in modo perfetto i comandi non ambigui che gli vengono forniti) la prima cosa da fare è appunto controllare che quanto ottenuto coincida con quanto ci aspettavamo avvenisse. Questa attività è la principale attività della programmazione, che infatti deve procedere passo dopo passo, lentamente, in modo che il "programmatore" possa intervenire con le dovute correzioni sull'elenco di istruzioni (il codice, appunto).

Il pensiero computazione si può svolgere benissimo senza PC, e infatti molte attività didattiche di coding senza computer sono state predisposte e sono disponibili online. Un buon elenco di attività senza computer lo si trova qui, anche se l'apertura del post è ideologicamente orientata e riproduce una serie di luoghi comuni favorevoli a prescindere alla tecnologia digitale (inoltre nel post alcuni link non sono più aggiornati; in particolare non funziona il link all'attività 2, che punta ad un documento che ora si trova qui). 

Forse il più completo e probabilmente autorevole elenco di attività relative al coding unplugged (cioè con i discenti scollegati dal PC, che viene giustamente indicato come "distraente") è consultabile in questo ottimo libretto intitolato "Computer Science Unplugged". È scritto da docenti universitari di informatica, in stretta e felice collaborazione con docenti della scuola primaria e media.

Il coding viene proposto perché si spera che sia e un potente motore di sviluppo delle abilità di autocorrezione e quindi un sussidio fondamentale per ogni attività con contenuto logico matematico.

Molte attività non propriamente scolastiche sviluppano la capacità di autocorrezione. Anzi, in particolare, le ricerche ci dicono che la scuola (tradizionale) fa proprio male a questo aspetto delle conoscenze dei bambini: ci sono problemi "matematici" che quando vengono proposti in classe ottengono meno risposte esatte di quando vengono proposti fuori dal contesto scolastico (si vedano ad esempio le ricerche di Bruno D'Amore).

Dobbiamo considerare che il pensiero computazionale nei bambini si allena parecchio anche utilizzando attività molto più tradizionali (ma ahimè, meno trendy) come la falegnameria, gli origami, i lego, il tinkering (questo è trendy e moderno! E si può fare...) e ogni altra attività in cui si debbano utilizzare le mani in modo intelligente.

Al contrario a scuola i bambini imparano "a memoria" le procedure di "risoluzione" dei problemi matematici che sono loro sottoposti, senza assolutamente imparare a controllare il loro output consapevolmente. Se invece debbono ad esempio costruire una scatola di legno, o un acquario, l'apprendimento mnemonico è assolutamente inutile, e non sarà quindi utilizzato. Dovranno controllare l'output della procedura che eseguono, per ottenere esattamente quanto hanno progettato. Inoltre in queste attività viene in aiuto all'apprendimento il coinvolgimento del discente, la cui attivazione è una parte fondamentale per attivare i processi di memorizzazione e risoluzione dei problemi (problem solving).

D'altra parte bisogna tener presente che per fare coding in modo produttivo per il pensiero logico matematico del discente, è requisito indispensabile una forte capacità di astrazione (che a mio parere non si impara col coding, la si allena, la si estende anche, ma non la si impara senza forti prerequisiti che già devono essere patrimonio del bambino).

La capacità di astrazione diventa forte e naturale (la si impara davvero) se poggia su attività cognitive che hanno coinvolto il corpo (e la mente), in particolare la mano e tutti gli aspetti sensoriali più importanti. Se si è percorsa insomma la scala di comprensione della pedagogia dei gesti mentali di Antoine de La Garanderie. Questa scala, utilizzabile in ogni momento nella vita scolastica del discente, ripercorre i periodi sensibili già individuati da Montessori oltre 100 anni fa nello sviluppo del bambino, poi diffusi da Piaget, e che brevemente riportiamo qui:

  1. stadio sensomotorio: nascita – 2 anni;
  2. stadio pre-operatorio: 2-6 anni;
  3. stadio operatorio concreto: 6-12 anni;
  4. stadio operatorio formale: dai 12 anni.

E ormai oltre un decennio di ricerche neuroscientifiche assolutamente confermano che gli aspetti sensoriali fondamentali da curare fin dalla più tenera età per ottenere giovani bravi in matematica (e in generale in tutte le attività "scolastiche") sono:
  • la propriocezione grossa e soprattutto fine (la posizione nello spazio del proprio corpo e in particolare l'uso preciso della propria mano), 
  • gli aspetti uditivi linguistici e musicali, 
  • le capacità visivo spaziali.
Ma la cosa più importante, il vero supporto alla capacità di astrazione è il coordinamento tra questi molteplici aspetti percettivi. È imparando questo coordinamento, questa armonia tra le percezioni, che impariamo a pensare in modo astratto.

Tutte le attività cognitive che sollecitino attività di "traduzione", da uno di questi dominii percettivi ad un altro, sono importantissime per lo sviluppo del pensiero astratto. Ho usato il verbo tradurre non a caso. Si tratta di linguaggi differenti da collegare, coordinare, controllare, fino ad acquisire un vero e proprio bilinguismo cognitivo tra propriocezione, uditivo e visivo.

Una volta posseduti tali prerequisiti (dopo insomma una scuola dell'infanzia in cui si sono educati la mano e i sensi, e delle elementari concentrate sullo scrivere, sul riassumere, sul comprendere i numeri e i calcoli, e piene di lavoretti manuali) è possibile addentrarsi, magari giocando, tra i meandri del coding vero e proprio.

Sono ormai disponibili ottimi strumenti con una certa abbondanza (spesso perché spinti dalle multinazionali dell'ICT). Un elenco delle migliori opportunità didattiche relative al coding presenti in rete è il seguente:
  1. Innanzitutto il sito http://www.programmailfuturo.it/ , un progetto del MIUR creato per sperimentare l’introduzione strutturale nelle scuole dei concetti di base dell’informatica. ­È il sito partner di https://code.org/, progetto finanziato dalle più grandi multinazionali dell'ICT come Google (ora Alphabet Inc.), Amazon, Facebook, Microsoft, ed altre, con addirittura il fondo di investimento BlackRock (tutte aziende che è lecito ipotizzare non abbiano proprio al primissimo posto dei loro interessi il corretto apprendimento dei nostri figli).
  2. una versione meno estesa degli stessi problemi disponibili su code.org (e quindi con minori rischi di perdersi tra le troppe offerte didattiche) è visionabile su https://blockly-games.appspot.com/
  3. Esistono inoltre diverse app per Android e per gli altri sistemi operativi dei sempre più potenti smartphone, che hanno come obiettivo l'apprendimento del coding in un ambiente che simula un vero e proprio videogioco. La più famose è sicuramente https://lightbot.com/ (e la sua recente evoluzione http://spritebox.com/), ma ne esistono numerose altre simili (ad esempio la parodia AngryBot).
  4. Infine il re degli ambienti di apprendimento della programmazione, e cioè Scratch, il progetto del MIT (Massachusetts Institute of Technology) per avvicinare i bambini e i pre-adolescenti alla programmazione. Esistono ormai una sterminata varietà di proposte didattiche basate su questo ottimo prodotto, che è un ambiente di programmazione ormai completo e con il quale è possibile anche programmare ad esempio i robot della LEGO (o quelli sviluppati a partire da Arduino o mediante Raspberry). Segnalo a proposito di Scratch solamente due manuali, uno in italiano e uno in inglese, con diverse proposte didattiche per chi è alle prime armi con Scratch:
Infine segnalo questo sito che ci ricorda, una volta di più, che la natura utilizza dalla notte dei tempi il gioco per l'apprendimento dei cuccioli dei mammiferi: forse è il caso di riflettere su questo aspetto.

    4 commenti:

    1. Un paio di siti con materiali didattici utili per che vuol fare coding in classe senza PC.

      http://cse4k12.org

      http://csunplugged.org

      RispondiElimina
    2. Attenzione al mito dei "nativi digitali":
      http://attivissimo.blogspot.in/2017/07/esistono-davvero-i-nativi-digitali.html

      RispondiElimina