Un modello per il coding a scuola

Transcript

Un modello per il coding a scuola
Dal Sito http://codemooc.org/un-modello-per-il-coding-a-scuola/
Alcuni suggerimenti dal Prof Alessandro Bogliolo
Un modello per il coding a scuola
Pubblicato il 19 settembre 2016
Non sarò breve.
Per avviare un ragionamento sul coding a scuola occorre prima di tutto intendersi sul significato di
alcuni termini, senza la pretesa di (ri)definirli o di fare un glossario esaustivo, ma allo scopo di
adottare una convenzione che riduca il rischio di fraintendimento, almeno nell’ambito di questa
riflessione.











Un algoritmo è un procedimento che porta in modo sistematico alla soluzione di un problema
attraverso l’esecuzione di un numero finito di passi elementari, non ambigui, descritti da istruzioni.
Il pensiero computazionale è un processo mentale che consente di risolvere problemi in modo
algoritmico.
Un programma è un algoritmo codificato in un linguaggio di programmazione affinchè possa essere
eseguito da un computer (o da un qualsiasi sistema a microprocessore).
La programmazione (anche detta programmazione dei calcolatori nei casi in cui possa esserci
ambiguità) è l’insieme di attività che portano allo sviluppo di programmi, dalla concettualizzazione
della soluzione algoritmica alla sua codifica in un linguaggio di programmazione.
I programmatori sono persone che si occupano dello sviluppo di programmi.
L’informatica è la scienza che si occupa dell’elaborazione automatica delle informazioni.
La programmazione visuale a blocchi è una pratica che, avvalendosi di specifici strumenti e
rappresentazioni, consente di comporre programmi attraverso la combinazione di elementi grafici
(blocchi) che rappresentano istruzioni e costrutti di controllo.
Il coding (in quest’ambito) è l’applicazione intuitiva di principi, metodi e strumenti di
programmazione al fine di sviluppare il pensiero computazionale.
Una campagna di sensibilizzazione è un insieme di azioni coordinate mirate a sollevare l’attenzione
dell’opinione pubblica su un problema o su un argomento di interesse generale.
Una campagna di alfabetizzazione è un insieme di azioni coordinate mirate a mettere tutti gli
individui in condizioni di acquisire capacità minime di lettura, scrittura e calcolo.
Una campagna di alfabetizzazione funzionale è un insieme di azioni coordinate mirate a mettere
tutti gli individui in condizioni di acquisire competenze e capacità che si ritengono necessarie o utili
alla crescita individuale e collettiva e al pieno esercizio dei propri diritti.
In che relazione stanno tra loro questi termini? La programmazione è una delle attività prevalenti
nell’ambito dell’informatica, in quanto permette di utilizzare dispositivi esistenti (hardware) per
fare cose nuove scrivendo nuovi programmi (software). Le competenze informatiche, e la
disponibilità di buoni programmatori, sono ritenute fattori indispensabili allo sviluppo,
all’innovazione e alla competitività. La programmazione comporta la concettualizzazione di
una soluzione algoritmica e la sua trasposizione in un linguaggio di programmazione. La
programmazione visuale offre un approccio esperienziale e intuitivo alla programmazione
riducendo le regole sintattiche a semplici incastri tra blocchi di forma complementare. Il coding si
avvale di strumenti di programmazione visuale sviluppati a scopo didattico e ludico che offrono la
possibilità di sperimentare immediatamente l’effetto delle istruzioni a blocchi composte sullo
schermo. Gli strumenti di programmazione visuale disponibili consentono di risolvere schemi di
gioco impartendo istruzioni ad un personaggio, o di scrivere veri e propri programmi. Paradigmi
simili, con analoghe rappresentazioni a blocchi, sono alla base di attività senza computer
(unplugged) che prevedono la concettualizzazione e la descrizione di procedure che descrivono
azioni da compiere nel mondo fisico. Il coding non è l’unico modo per sviluppare, o applicare, il
pensiero computazionale, ma si è rivelato particolarmente efficace per l’immediatezza, l’attrattività,
la varietà, la disponibilità e la versatilità degli strumenti disponibili. Soprattutto, il coding ha il
vantaggio di rendere accessibile e intuitiva la programmazione permettendo a neofiti di ogni età di
concentrarsi sulla concettualizzazione del procedimento senza bisogno di padroneggiare la sintassi
di un linguaggio di programmazione, arrivando subito a confrontarsi con un esecutore automatico
che metta alla prova la bontà della soluzione e consenta di correggere eventuali errori. Il confronto
con l’esecutore automatico impone rigore, senso critico e creatività, in quanto impone al
programmatore/utente di pensare ad ogni dettaglio e di assumersi piena responsabilità degli effetti
che ottiene, senza poter delegare all’interpretazione o all’intelligenza dell’esecutore la
compensazione di eventuali errori o lacune. Lo stesso rapporto programmatore-esecutore può essere
trasposto in attività unplugged, investendo l’esecutore del ruolo di robot, esecutore automatico che
deve attenersi rigorosamente al codice che gli viene chiesto di eseguire, mettendo così alla prova
non solo il codice, ma anche la propria capacità interpretativa.
Dati di fatto:







Sul mercato del lavoro ci sono molte meno competenze informatiche di quelle che sarebbero
necessarie allo sviluppo e all’innovazione, in ogni ambito lavorativo e applicativo, non solo in ICT
(skill gap).
Tra le competenze informatiche, la programmazione è tra le più rare e ricercate.
Gli studi e le carriere in ambito informatico, come in ogni ambito tecnico-scientifico, sono
intraprese prevalentemente da maschi (frutto di stereotipi di genere che causano un gender gap).
L’insegnamento delle competenze digitali pone un problema di gap generazionale che è destinato
ad acuirsi: i docenti si trovano spesso in imbarazzo ad insegnare ai propri alunni l’uso di strumenti
che questi padroneggiano meglio di loro. Questo problema non è legato al divario tra nativi digitali
e non, ma è dovuto all’accelerazione del ritmo dell’innovazione, che vedrà sempre di più qualche
nuova tecnologia marcare il divario tra docenti e discenti nella familiarità e nell’abilità con gli
strumenti basati su tale tecnologia.
Nella scuola italiana l’informatica ha un ruolo ancillare e ci si può laureare senza averla mai davvero
incontrata, o quasi. La programmazione non viene insegnata a scuola se non per iniziativa di singoli
insegnanti, nell’ambito di progetti sperimentali, o in scuole con indirizzi specifici scelte più o meno
consapevolmente da chi ha già una propensione per la materia.
L’Italia è all’avanguardia nella sperimentazione del coding a scuola e il primato è riconosciuto a
livello internazionale. Ne sono prova, tra le altre, l’accordo di Programma il Futuro con Code.org
(dal 2014), il coordinamento di Europe Code Week affidato all’Italia (dal 2015), il successo di
CodeMOOC e il suo riconoscimento come primo impegno concreto (pledge) della nuova Agenda
per le Competenze per l’Europa (dal 2016).
Il coding a scuola supera gli stereotipi di genere, perché è veicolato indifferentemente da
insegnanti uomini o donne e perché, giustamente, non è percepito come disciplina tecnica.
Dal 2013 il coding è stato posto al centro di campagne di sensibilizzazione a livello internazionale
(Europe Code Week, Computer Science Education Week) finalizzate a ridurre lo skill gap e il
gender gap. Già dal 2014 le campagne di sensibilizzazione si sono trasformate in vere e proprie
campagne di alfabetizzazione funzionale orientate alla diffusione del pensiero computazionale come
competenza trasversale e fattore di crescita personale. I due intenti sono sinergici. La crescente
diffusione del pensiero computazionale prodotta dalle campagne di alfabetizzazione contribuirà a
scardinare il problema degli stereotipi di genere e della crisi di competenze, formando generazioni
di giovani che potranno scegliere in piena consapevolezza se intraprendere carriere di studio e
lavoro nei cosiddetti ambiti STEM e se scegliere di diventare dei bravi programmatori, ma in ogni
caso potranno applicare l’approccio algoritmico in qualsiasi altro ambito ogni volta che lo
riterranno utile. E’ a questo che bisogna pensare per impostare il discorso sul coding a scuola,
continuando nel frattempo a motivare ragazzi e ragazze ad intraprendere studi e professioni in
ambito informatico per far fronte all’urgenza di competenze. E così arriviamo finalmente a parlare
del coding a scuola.
Il ruolo della scuola
Che la scuola abbia un ruolo fondamentale è implicito nell’idea stessa di alfabetizzazione
funzionale, ma vale la pena di dirlo comunque. Solo la scuola può offrire a tutti l’opportunità di fare
coding. Qualsiasi altro attore potrà dare contributi più o meno significativi, ma non avrà mai la
capacità di raggiungere tutti. Quindi non si tratta di decidere se e quando, ma come il coding debba
essere introdotto nella scuola, partendo dai risultati delle tante sperimentazioni spontanee già in
atto.
Disciplina o approccio metodologico?
Ma la scuola ha bisogno di coding o di programmazione? Ha bisogno di entrambi, senza
confonderli.
L’informatica ha senz’altro la dignità di disciplina che merita di essere introdotta nei
curricoli scolastici, e la programmazione merita di avere un ruolo preponderante nell’insegnamento
dell’informatica. Ma il coding è un’altra cosa.
I tanti esperimenti condotti negli ultimi anni in Italia e all’estero e la definizione stessa adottata per
le finalità di questo ragionamento suggeriscono che il coding meriti di essere introdotto a scuola
come approccio metodologico trasversale, poichè è trasversale la competenza che consente di
sviluppare.
Confondere coding e programmazione sarebbe un errore perchè, da una parte, farebbe ripiombare
anche il coding e il pensiero computazionale nell’ambito delle competenze tecnico-scientifiche
vittime di stereotipi di genere, dall’altro rischierebbe di banalizzare l’informatica e la
programmazione, che meritano invece di essere oggetto di studio sistematico.
Il legame tra coding e programmazione permane ed è forte, sia perchè sono gli stessi i principi sui
quali si basano, sia perchè l’ìnformatica, come abbiamo detto, offre efficacissimi strumenti di
coding. Ma gli strumenti non sono essenziali.
Distinguere i due piani ha molte ripercussioni organizzative e operative. Innanzitutto
nell’individuazione delle competenze. La riforma dei curricoli scolastici per introdurre l’informatica
dovrà comportare il reclutamento o la formazione di insegnanti con competenze informatiche
specifiche, mentre l’adozione del coding come approccio metodologico può essere affidata agli
insegnanti di qualsiasi disciplina chiamati a studiare insieme ai propri alunni il modo più adeguato
di contestualizzare e applicare il coding alla disciplina stessa. Non si tratta quindi di chiedere agli
insegnanti di ritagliare nel proprio orario un’ora o due di coding, ma di applicarlo durante
l’insegnamento laddove lo ritengano utile per esemplificare concetti, per descrivere attività, o per
concettualizzare procedimenti e soluzioni. Così facendo non solo eviteranno possibili conflitti di
orario, ma daranno anche ai propri alunni l’opportunità di sperimentare l’utilità del pensiero
computazionale applicato in ambiti non necessariamente tecnici.
Mi piace usare una metafora linguistica per chiarire la differenza che vedo tra coding e
programmazione. Il coding è un metodo intuitivo per acquisire il pensiero computazionale per
esperienza, imitazione, necessità, interazione, con meccanismi che ricordano quelli con cui si
acquisisce la propria lingua madre. La programmazione è una disciplina teorico-pratica che richiede
uno studio formale, come una lingua straniera di un paese in cui non si abbia la fortuna di
trascorrere un lungo periodo della propria infanzia. L’adozione del coding come strumento
interdisciplinare favorirebbe questo processo di acquisizione informale che è reso possibile dalla
natura stessa delle tecniche e degli strumenti di coding. Continuando a sviluppare la metafora
linguistica, l’approccio è simile al CLIL (content and language integrated learning) che insegna
una lingua veicolare grazie all’uso che ne viene fatto nella didattica di altre discipline. Nel caso del
coding la metafora è calzante ma funziona a maggior ragione perchè porta un valore aggiunto anche
alla comprensione dei contenuti, e perchè non richiede altrettanto sforzo ai docenti che intendano
adottarlo. Il modo migliore per fare coding con gli alunni, infatti, è farlo letterlamente “con” loro,
piuttosto che “per” loro. Credo che il ruolo più importante che un insegnante può giocare in questo
processo sia quello di offrire alla classe il problema giusto a cui applicare il coding, piuttosto che la
soluzione.
Un modello per il coding e l’informatica a scuola
Alla luce delle considerazioni fatte fin qui, il modello che propongo può essere schematizzato su
una griglia, disegnata su un piano che si sviluppa in orizzontale (trasversalmente alle discipline) e in
verticale (in ogni ambito disciplinare). Le righe della griglia rappresentano i livelli scolastici:
infanzia, primaria, secondaria di primo grado, secondaria di secondo grado. Le colonne
rappresentano le discipline o gli ambiti disciplinari (suggerisco di pensare alle discipline viste dal
punto di vista degli alunni, piuttosto che agli ambiti disciplinari raggruppati per competenze degli
insegnanti ai fini concorsuali). La colonna isolata sulla destra rappresenta l’informatica, nel cui
ambito immagino e auspico che possa avere un ruolo preponderante l’insegnamento della
programmazione. La rappresento a parte per due ragioni: perché al momento è praticamente assente
(e il modello proposto ne sollecita l’introduzione) e perché non riguarda il coding (nell’accezione
del termine usata in questo contesto).
C’è anche una riga esterna alla griglia, usata maldestramente per rappresentare il sostegno. In
questo caso si tratta di una rappresentazione simbolica che, correttamente, copre tutti gli ambiti
disciplinari, ma che dovrebbe coprire anche tutti i livelli scolastici, finendo per pervadere tutta la
griglia. In questo la rappresentazione è inadeguata, poiché il sostegno è di fatto pervasivo tanto
orizzontalmente quanto verticalmente. L’ambito di applicazione del coding a scuola è evidenziato
in verde, l’insegnamento dell’informatica in arancione.
Sulla destra ci sono altre due colonne, riservate a concetti e strumenti. Queste esprimono il rapporto
tra informatica e coding, rappresentando i concetti informatici che, ad ogni livello, costituiscono gli
obiettivi di apprendimento in ambito informatico e le basi per l’applicazione del coding. Gli
strumenti, che entrano per ultimi in questo quadro perchè non essenziali, possono essere oggetto di
scelte condivise a livello di collegio docenti o di consiglio di classe per cercare di raggiungere il
miglior compromesso tra due esigenze contrastanti: offrire agli alunni una pluralità di strumenti che
consenta loro di astrarre e concentrarsi sui principi piuttosto che sui tecnicismi, creare una
familiarità e una consuetudine nell’uso di metodi e strumenti condivisi che ne renda naturale
l’applicazione affinchè lo sforzo di adattamento a nuove interfacce non diventi preponderante
rispetto al lavoro di concettualizzazione e all’atto creativo.
La distinzione tra Coding e Informatica risolve anche un evidente problema organizzativo che si
creerebbe in un classe con più insegnanti interessati ad adottare il coding. Se stesse a loro veicolare
competenze informatiche, anche ammettendo che potessero acquisirne attraverso la frequenza di
percorsi di formazione, dovrebbero coordinarsi o competere tra loro per non essere ridondanti.
Sarebbe come se gli insegnanti di qualsiasi disciplina si sentissero in dovere di (ri)spiegare la
grammatica italiana per fare lezione in italiano. Non è questo il loro ruolo, quanto piuttosto quello
di fare l’uso più corretto possibile della lingua italiana applicata all’insegnamento della propria
disciplina. Così è per il coding. Ben venga che siano tanti, se non tutti, gli insegnanti che
decideranno di applicarlo alle proprie discipline, perchè favoriranno lo sviluppo e la
contestualizzazione del pensiero computazionale. L’approfondimento teorico e pratico di concetti e
strumenti sarà parte del programma di informatica. In assenza di un insegnamento specifico, agli
insegnanti non resta che affidarsi agli strumenti e ai metodi di coding più intuitivi e accessibili per
evitare che la tecnologia sia d’ostacolo alla concettualizzazione.
Lavori in corso
Nel corso dell’estate 2016 si è svolta una Summer School universitaria a Urbino nella quale 130
insegnanti hanno iniziato a lavorare su questo modello, mettendolo in discussione e studiando il
modo di applicarlo alle proprie discipline.
Per passare da un ragionamento astratto ad un modello operativo sono state definite le maglie della
griglia, facendo una prima ipotesi di ripartizione sia degli ambiti disciplinari che dei livelli
scolastici in base alle diverse esigenze didattiche e agli obiettivi di apprendimento. Si è ritenuto
opportuno individuare 10 ambiti disciplinari (esclusa l’informatica) e 6 livelli scolastici, non
necessariamente allineati a ordini e gradi. I partecipanti sono quindi stati suddivisi in gruppi di
lavoro per affinità di esperienza e interesse, dando a ciascun gruppo un nome ottenuto concatenando
la sigla della disciplina e il numero rappresentativo del livello. Ecco la griglia di lavoro che ne è
derivata, con le inevitabili lacune dovute alla non uniforme distribuzione dei partecipanti.
A ciascun gruppo è stato chiesto di individuare un esempio di attività o unità didattica minima che
potesse prestarsi ad una descrizione rigorosa del procedimento. Quindi i gruppi hanno dovuto
esplicitare i prerequisiti, descrivere le istruzioni specifiche di cui prevedevano di avere bisogno ed
elaborare una procedura che descrivesse il procedimento da seguire.
Le proposte, elaborate con Blockly, sono in corso di revisione e verranno rese pubbliche e discusse
online. E’ evidente che la griglia lascia aperti moltissimi buchi. Chiunque volesse costituire un
gruppo di lavoro o unirsi a quelli già costituiti sarebbe il benvenuto!
Per quanto riguarda l’insegnamento dell’informatica e la riflessione sui livelli (o le età) nelle quali è
più opportuno introdurre determinati concetti e strumenti, un possibile modello a cui ispirarsi è
quello britannico, dove un curriculum in computing è già presente da anni.