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.