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.»