Nel progettare Ada, l’insieme dei servizi di Archilabò che riguardano il coding applicato alle metodologie di studio, abbiamo analizzato le caratteristiche in fieri della disciplina, ponendoci alcune domande e studiando un po’ in giro.
Cos’è il coding?
Il coding, letteralmente “scrittura del codice sorgente (di un programma)”, è salito agli onori delle cronache didattico-pedagogiche dal 2013 quando nella scuola primaria britannica, grazie a un cospicuo finanziamento ministeriale, cominciò l’attività dell’associazione no profit Yearofcode, a cui era stato assegnato l’obiettivo di promuovere il coding tra gli studenti come competenza propedeutica al pensiero computazionale. Da allora milioni di studenti in tutto il mondo hanno praticato il coding a scuola attraverso iniziative analoghe, la più famosa delle quali, The Hour of Code, è stata progettata dal MIT di Boston e introdotta prima nelle scuole statunitensi poi nel resto del globo.
Sulla scia di queste iniziative di successo il termine “coding” – in questo momento e in Italia – viene usato per indicare le attività di introduzione dei bambini alla programmazione, attraverso ambienti online di programmazione visuale, a partire dalla scuola primaria (Stefano Penge, 2016).
Il coding rappresenta un approccio didattico che riprende la filosofia già presente nei Piani Nazionali Informatica degli anni passati, con il medesimo obiettivo di produrre tecnologia informatica e non solo di studiare i concetti e i contenuti degli strumenti informatici. A differenza dei passati programmi ministeriali, il coding ha però assunto forme nuove e specifiche che meritano di essere brevemente illustrate e comprese nel loro carattere evolutivo. Intanto è utile sottolineare che la cronica mancanza di risorse e strumenti, unita alla mancata individuazione di professori di informatica per gli istituti superiori, sono stati determinanti per decretare il sostanziale fallimento dei PNI. Oggi, grazie all’abbattimento dei costi dei dispositivi informatici e alla maggiore diffusione sia di hardware che di software con potenziale didattico nella scuola italiana, è possibile realizzare gli obiettivi individuati già allora.
Gli obiettivi del coding
Scratch è la community online egemone in Italia nel campo della programmazione a blocchi, e permette agli utenti di programmare mediante incastri sintattici di blocchi colorati che rappresentano visivamente le diverse righe di codice. L’utilizzo di Scratch fornisce ai bambini un modo divertente e semplice per avere il primo contatto con uno degli obiettivi culturali del coding: scoprire che dietro a qualsiasi applicazione informatica esiste un codice, scritto da qualcuno in un determinato linguaggio. Nel coding così inteso non c’è quasi traccia di scrittura del codice sorgente, facilitando da un lato la creazione di contenuto programmabile, ma limitando sicuramente, dall’altro, la portata delle conoscenze acquisite in campo informatico.
Per colmare questo deficit di competenze tecniche nei prossimi anni assisteremo verosimilmente a un ridimensionamento della febbre da Scratch: il coding a blocchi rappresenterà solamente il primo gradino di un curriculum didattico che, almeno nelle intenzioni del MIUR, esplorerà tutti gli aspetti e le connessioni interdisciplinari dell’informatica, assomigliando sempre di più ai programmi di informatica sperimentati nei decenni passati.
Il programma del MIUR: Programma il Futuro
Il Piano Nazionale Scuola Digitale (PNSD), attraverso il programma Programma il Futuro, ha messo a disposizione delle scuole risorse economiche importanti per inserire numerose attività legate alla digitalizzazione delle materie scolastiche, sia in senso materiale e amministrativo che in senso contenutistico e didattico. Da questo punto di vista il coding, attuato mediante diverse azioni (soprattutto l’azione 17), è sicuramente la novità principale, per la quale il Ministero propone un’ampia serie di lezioni e approfondimenti che non possono esaurirsi nel solo utilizzo di Scratch, ma che – come accennavamo sopra – richiedono un curriculum articolato sui diversi aspetti dell’informatica così come del diritto digitale e dell’etica richiesta dalla nuova società iperconnessa (sul sito Programma il futuro il MIUR utilizza i materiali didattici di Code.org, ben organizzati, graduali e modulari per gli studenti di ogni ordine di scuola.).
Le peculiarità di Ada
Considerato il vivace dibattito intorno al ruolo del coding e del learning-by-doing nella didattica italiana, e ritenendo allo stesso tempo importante avere una voce consapevole riguardo a tale argomento, ci domandiamo quale debba essere l’approccio giusto al coding per chi come noi si occupa di didattica specialistica.
Cerchiamo di rispondere innanzitutto a questa domanda: perché il coding? L’adesione a tale approccio didattico non è incondizionata e porta con sé alcune critiche necessarie. Partiamo da una considerazione semplice ma da non sottovalutare: ogni studente ha capacità cognitive e quindi stili cognitivi differenti; chi fa didattica specialistica e individualizzata non può dimenticarlo.
Significa che se il coding ha ripercussioni positive sulle metodologie di apprendimento di alcuni, può non essere efficace per altri. Ma è necessario anche chiederci se lo sviluppo del pensiero computazionale, obiettivo dichiarato del coding nella scuola italiana, sia auspicabile per sé. Tentando di rispondere a questa domanda in particolare, risulta evidente che non c’è accordo sulla definizione di cosa sia il pensiero computazionale. A partire dal fondamentale articolo di Wing del 2006, che ne ha fatto argomento di discussione all’interno delle comunità didattico-accademiche, essa evolve con l’andare del tempo.
Quello che risulta abbastanza chiaro è che più lo si definisce nel dettaglio, meno esso ha a che vedere specificamente con l’informatica o il coding.
Nella sua tesi di laurea in didattica dell’informatica intitolata “Imparare il pensiero computazionale, imparare a programmare”, il dott. Michael Lodi ha raccolto una serie di definizioni di pensiero computazionale, sintetizzate nella forma seguente:
«Il pensiero computazionale è un processo di problem-solving che consiste nel formulare problemi in una forma che ci permetta di usare un computer (nel senso più ampio del termine, ovvero una macchina, un essere umano, o una rete di umani e macchine) per risolverli; organizzare logicamente e analizzare dati; rappresentare i dati tramite astrazioni, modelli e simulazioni; automatizzare la risoluzione dei problemi tramite il pensiero algoritmico; identificare, analizzare, implementare e testare le possibili soluzioni con un’efficace ed efficiente combinazione di passi e risorse (avendo come obiettivo la ricerca della soluzione migliore secondo tali criteri); generalizzare il processo di problem-solving e trasferirlo ad un ampio spettro di altri problemi.»
Il coding quindi, inteso come campo di applicazione di conoscenze informatiche, non è che una delle discipline adatte a sviluppare il pensiero computazionale. Il corsivo intende sottolineare il nostro punto di vista: il coding non serve a sviluppare il pensiero computazionale più di quanto non lo sviluppino discipline strettamente legate alla logica. Nei curricula cosiddetti K-12 esse non sono le discipline del gruppo accademico STEM, ma sono piuttosto la matematica, la grammatica (e quindi le lingue) e la filosofia (nella scuola secondaria di II grado). La matematica è la prima materia “computazionale” che incontriamo nella nostra carriera di studenti. Essa è essenzialmente algoritmica e gli studenti sono abituati sin dai primi anni a rappresentare con diagrammi di flusso la sequenza di operazioni necessarie per risolvere un’espressione o un problema. La grammatica richiede competenze e abilità che maturano più tardi – la lettura e la memorizzazione di regole complesse – che non modificano la sostanziale computazionalità dei suoi contenuti. Quando si leggono dibattiti intorno alla necessità che i professori di materie umanistiche accettino di essere formati sul coding oppure al contrario si parla di coding riferendosi alle materie STEM, non si comprende davvero il motivo per cui (da una parte e dell’altra) sopravviva ancora un pregiudizio antiscientifico nei confronti delle discipline che hanno a che fare con le parole. Come se l’analisi grammaticale o la ricerca di un lemma latino fossero operazioni più arbitrarie e meno schematizzabili (e generalizzabili) della formula che lega densità e volume di un liquido. Allo stesso modo la filosofia studiata a partire dalla scuola superiore rappresenta un campo più ampio di applicazione di confronto fra schemi logici differenti. Pertanto, sia che si tratti di logica proposizionale sia che si tratti di spiegare cosa siano le antinomie kantiane, la filosofia non è esente da generalizzazioni metodologiche che dimostrano la sussistenza di algoritmi e schemi all’interno di ogni sistema filosofico. L’astrattezza e la genericità degli algoritmi sottostanti queste materie le rendono le migliori alleate per l’agognato sviluppo del pensiero computazionale (non è questo il luogo per discutere degli approcci degli insegnanti di filosofia alla disciplina, spesso volti più alla sola storia della filosofia che alle caratteristiche logiche dei ragionamenti studiati. Notiamo soltanto che l’approccio storico alla disciplina non preclude affatto lo studio dei metodi filosofici dei diversi autori).
Il punto di forza del coding – e quindi dell’informatica – su di esse non è tanto lo sviluppo quanto la rappresentazione del pensiero computazionale.
La codificazione di un algoritmo lo rende percepibile e manipolabile: gli conferisce una plasticità tangibile che il solo ragionamento non ha. Consente di vedere immediatamente i rapporti razionali di causa ed effetto e verificare la liceità di una categorizzazione o di un ragionamento logico. È per questa sua peculiare azione rappresentativa che il coding è uno strumento di sostegno molto efficace per chi si interessa di metodologie di studio per studenti con disturbi dell’apprendimento. Abituarsi a vedere e verificare un ragionamento mediante una rappresentazione rigorosa aiuta stabilire un contesto extra-verbale entro cui inserire il proprio ragionamento, in modo da memorizzarlo meglio o da affidarsi ad esso con più sicurezza. Inoltre, consente di creare e visualizzare schemi di pensiero che possano essere analizzati, perfezionati e poi riutilizzati applicandoli a diversi argomenti.
Il coding così inteso è uno strumento utile all’analisi metacognitiva perchè offre agli studenti una rappresentazione visiva dei processi sottesi ai loro ragionamenti. Questa osservazione vale non solamente per i ragionamenti logici più rigorosi – problemi di matematica o geometria, analisi grammaticale, logica o proposizionale, logica proposizionale, comprensione di un testo – ma anche per compiti più astratti e creativi come, ad esempio, la creazione di racconti o storytelling (due ricercatori dell’Università della Pennsylvania, Burke e Kafai, nel saggio “Programming and storytelling: opportunities for learning about coding and composition” hanno raccolto alcune riflessioni a partire dall’osservazione di un laboratorio di storytelling digitale con Scratch).