Il Coding a un Bivio
Di Mitchel Resnick e Natalie Rusk, titolo originale “Coding at a Crossroads”
Traduzione di Stefano Rini, revisione di Carmelo Presicce.
L’articolo originale, pubblicato sul numero di Ottobre 2020 di ACM Communication è liberamente accessibile qui.
Milioni di studenti nel mondo hanno fatto esperienze di coding. La prossima sfida riguarda i valori e gli approcci educativi.
L’uso educativo del coding nelle scuole è a un bivio. Siamo di fronte ad una grande opportunità. Dieci anni fa il nostro gruppo di ricerca ha scritto un articolo per Communications intitolato “Scratch: la programmazione per tutti” [15]. Al tempo il sottotitolo per noi era un’aspirazione, ora questo desiderio sta diventando una realtà. I sistemi scolastici e i decisori politici stanno abbracciando l’idea che il coding possa e debba essere per tutti. Molti Paesi, dal Cile al Regno Unito, al Sudafrica al Giappone stanno portando il coding a tutti gli studenti.
Questo momento presenta anche delle sfide straordinarie. In molti ambienti il coding viene proposto in un modo che ne mina il potenziale e la promessa. Se non riflettiamo seriamente sulle strategie educative e le scelte pedagogiche associate all’introduzione del coding, corriamo un fortissimo rischio di subirne un contraccolpo.
Nei dieci anni passati abbiamo visto che è possibile portare esperienze di coding a milioni di bambini in tutto il mondo. Ma abbiamo anche visto quanto sia più difficile diffondere un insieme di valori e di approcci educativi — questa è la grande sfida che ci aspetta nei prossimi dieci anni.
La crescita del coding nell’educazione si è concentrata su un nuovo tipo di interfaccia di programmazione (in particolare il coding a blocchi [1]), sulla proliferazione di iniziative nonprofit miranti a promuovere l’informatica (come Code.org, CSforAll e Code Club), e su una quantità sempre maggiore di dispositivi programmabili che allargano lo spettro di quello che gli studenti possono programmare (micro:bit [20], kit di robotica [9] e giocattoli programmabili [23]).
Il nostro lavoro su Scratch (figura 1) è stato sia contributore che beneficiario di questa tendenza generale. Quando abbiamo iniziato a sviluppare il linguaggio di programmazione di Scratch e la sua comunità online nel 2002, il nostro scopo non era solamente quello di insegnare ai ragazzi a programmare. Avevamo una missione educativa molto più ampia. Volevamo che ogni bambino, a prescindere dal proprio background, avesse l’opportunità di imparare a pensare in modo creativo, a ragionare in modo sistematico, a lavorare in modo collaborativo. Queste competenze sono fondamentali per tutti in un mondo che cambia così velocemente, non solo per quelli che vogliono diventare ingegneri o professionisti dell’informatica. Queste stesse competenze sono essenziali in ogni aspetto della vita, non solo per garantire un successo lavorativo ma anche per una realizzazione personale e per formare cittadini responsabili [13].
L’uso di Scratch si è diffuso velocemente in tutto il mondo: nel corso dello scorso anno più di 20 milioni di giovani hanno creato progetti con Scratch (figura 2).
Scratch si è diffuso prima negli ambienti familiari e nei setting informali [11], ma l’impiego scolastico copre ora più di metà di tutta l’attività di Scratch. Nel mondo tanti giovani stanno usando Scratch in una grande varietà di modi:
- studenti della scuola secondaria di primo grado hanno creato dei progetti che raccontano come secondo loro le innovazioni tecnologiche potrebbero trasformare la società entro il 2050;
- migliaia di giovani hanno creato animazioni di Scratch contro il razzismo e in favore del movimento Black Lives Matter;
- un’insegnante di scuola primaria in Messico ha integrato l’uso di Scratch in un progetto di scienze sulle farfalle in cui gli studenti hanno creato animazioni sul ciclo di vita delle farfalle e modelli robotici del movimento delle farfalle basato sull’osservazione di farfalle reali;
- studenti di tutto il mondo hanno creato la galleria #ProtectOurEarth in cui hanno condiviso centinaia di progetti che richiamano l’attenzione su problemi legati al cambiamento climatico, incluso un gioco in cui puoi guidare un orso polare su una calotta polare che si sta sciogliendo.
Opportunità e sfide
Nel processo di creazione e condivisione di progetti come questi, gli studenti non imparano soltanto a programmare ma programmano per imparare. Non imparano solo importanti concetti matematici e informatici ma approfondiscono anche la loro comprensione di idee appartenenti ad altre discipline e sviluppano una vasta serie di competenze di problem-solving, design, collaborazione e comunicazione [7,16].
Sfortunatamente in molti ambienti educativi il coding è introdotto attraverso modalità limitate e limitanti e così gli studenti non vengono esposti al pieno potenziale espressivo e concettuale della programmazione. Ecco alcune delle sfide:
- Troppo spesso gli studenti vengono avvicinati all’informatica insegnando loro una serie di definizioni di parole senza dar loro l’opportunità di imparare e sperimentare i concetti e le pratiche legati alla programmazione nel contesto di attività significative. Per esempio, alcuni distretti scolastici avvicinano i ragazzi delle scuole primarie al coding insegnando loro la definizione di “algoritmo” e le differenze tra hardware e software, invece che coinvolgerli in un apprendimento attivo tramite attività computazionali come creare una storia animata o programmare un robot per farlo ballare.
- Troppo spesso il coding viene presentato chiedendo agli studenti di copiare tutti lo stesso codice, invece che incoraggiandoli a sperimentare, prototipare e fare il debug dei loro programmi. Una volta sul sito di Scratch abbiamo visto comparire trenta progetti perfettamente identici, condivisi tutti nello stesso momento. All’inizio abbiamo avuto il sospetto che potesse trattarsi di un problema con il sito, ma poi abbiamo notato che ogni progetto era associato ad un utente diverso e abbiamo capito che venivano tutti da una stessa classe dove tutti e 30 gli studenti avevano seguito le medesime istruzioni per arrivare tutti allo stesso progetto finale con le stesse immagini e la stessa programmazione. Anche se questa attività potrebbe aver introdotto i meccanismi di base del coding, non ha dato l’opportunità di usare il pensiero creativo e il problem solving.
- Troppo spesso le scuole dedicano un periodo molto breve per insegnare a programmare. In questo tempo molto limitato i ragazzi possono imparare la terminologia di base ma non hanno il tempo di usare questi concetti in modo significativo e quindi è improbabile che siano in grado di applicare queste idee in contesti e discipline diversi. Anche dove il tempo dedicato al coding è maggiore, il curricolo spinge insegnanti e studenti a spostarsi rapidamente da uno strumento ad un altro invece che dar loro il tempo di approfondire e impararne uno abbastanza bene da poter costruire progetti, risolvere problemi, comunicare idee. Un’iniziativa su larga scala ha portato Scratch agli studenti di quarta elementare per un’ora a settimana, poi li ha spinti improvvisamente su un altro linguaggio di programmazione. Dopo che studenti e insegnanti hanno comunicato la loro frustrazione, il curricolo è stato rivisto.
- Troppo spesso i ricercatori e gli educatori adottano strumenti di verifica automatizzati, che valutano gli studenti solo dall’analisi del codice che hanno prodotto, senza considerare lo scopo dei loro progetti, il contenuto, il design, l’interfaccia, l’usabilità o la documentazione. Molti ad esempio stanno usando uno strumento di valutazione online per Scratch che assegna agli studenti un “punteggio nel pensiero computazionale” basato sull’assunto che codice con un maggior numero di blocchi sia indice di un pensiero computazionale più avanzato. Questa forma di valutazione non considera lo scopo del programma dello studente, quanto di quell’obiettivo sia stato realizzato, se il codice funziona nel modo per cui era stato programmato, se gli utenti riescono ad interagire con il programma o come il pensiero dello studente si sia evoluto su una serie di progetti successivi. Vediamo molto più potenziale in altri approcci alla valutazione, come quelli che documentano e analizzano le pratiche di facilitazione del docente e le traiettorie dell’apprendimento degli studenti nel corso del tempo.
Perché le iniziative sul coding mantengano le loro promesse e il loro potenziale bisogna cambiare radicalmente il modo in cui il coding viene messo in pratica nei sistemi scolastici di tutto il mondo [6,8].
Espressività Computazionale (Computational Fluency)
La maggior parte delle iniziative di coding concordano sul fatto che lo scopo dovrebbe essere più ampio che insegnare particolari tecniche di programmazione. Molte iniziative sono organizzate attorno allo sviluppo del pensiero computazionale — cioè insegnano agli studenti concetti e strategie legate alla programmazione che possono essere applicati per risolvere problemi in un ampio spettro di contesti e discipline [22].
Il pensiero computazionale è sicuramente un obiettivo che vale la pena perseguire, ma troppe iniziative si limitano a trasmettere alcuni concetti decontestualizzati o presentando agli studenti problemi con una sola soluzione valida. Nella nostra ricerca abbiamo sperimentato come il coding sia più motivante e significativo per gli studenti quando possono sviluppare i loro progetti e esprimere le loro idee [18]. Facendo queste esperienze i bambini diventano creatori computazionali e non solo pensatori computazionali. Chiamiamo espressività computazionale¹ (computational fluency, ndt) questa capacità di utilizzare tecnologie computazionali per comunicare idee in modo efficace e creativo.
Le nostre convinzioni sulla espressività computazionale si ispirano e attingono alla lunga tradizione di iniziative e ricerche finalizzate a motivare gli studenti a imparare a scrivere. Anche se la maggior parte degli studenti non diventeranno giornalisti professionisti o scrittori di romanzi, c’è un grande consenso sul fatto che tutti dovrebbero imparare a scrivere. Mentre imparano a scrivere gli studenti sviluppano la loro capacità di organizzare, esprimere e condividere le loro idee — e cominciano a vedersi in modo diverso.
L’educatore e attivista brasiliano Paulo Freire ha portato avanti campagne di alfabetizzazione non solo per aiutare le persone a trovare un lavoro ma anche per far capire loro che possono “costruire e ricostruire se stessi” [5].
Vediamo lo stesso potenziale nel coding. La maggior parte degli studenti non cercherà lavoro nel campo della programmazione o dell’informatica, ma sviluppare capacità espressive attraverso il coding è di beneficio per tutti. Gli studenti creano le loro storie, i loro giochi, le loro animazioni. Con il coding cominciano a considerarsi autori e creatori, sviluppano fiducia in se stessi e orgoglio nella loro abilità di creare e di esprimersi con le nuove tecnologie.
Alcuni sostenitori del pensiero computazionale minimizzano il valore della programmazione. Sostengono che esistono molti altri modi per sviluppare il pensiero computazionale. Al contrario noi troviamo che la programmazione sia uno strumento particolarmente efficace per coinvolgere gli studenti su concetti, pratiche e prospettive legate al pensiero computazionale [2]. Quando gli studenti programmano i loro progetti, incontrano concetti e strategie di problem solving in un contesto autentico e così le conoscenze vengono incorporate in una fitta rete di associazioni di idee. In questo modo per gli studenti sarà più facile recuperare le informazioni e utilizzarle in contesti diversi.
Il linguaggio di programmazione Scratch e la sua comunità online sono costruiti proprio per supportare lo sviluppo di espressività computazionale. Certo ci vuole tempo perché questa competenza si sviluppi. Molti progetti nella comunità online di Scratch sono molto semplici o non ben strutturati, creati da studenti che hanno appena iniziato a sperimentare le possibilità del coding. Ma quando viene data loro la possibilità e il supporto per sviluppare una padronanza possiamo notare come crescano sia come pensatori computazionali che come creatori computazionali.
Come esempio vorrei condividere la storia di una partecipante della comunità di Scratch di nome Taryn, che ha incontrato per la prima volta Scratch quando aveva dieci anni, nella sua scuola in Sudafrica. Pochi anni dopo — in una lezione di scienze — Taryn ha usato Scratch per programmare una simulazione interattiva del ciclo dell’acqua, inserendo anche due cursori che controllano la velocità dell’evaporazione dalla terra terra e dal mare. In tutto Taryn ha dovuto creare una dozzina di variabili nel suo progetto (figura 3).
Facendo il suo progetto Taryn si è sentita ispirata ad aiutare gli altri a conoscere le variabili. Ha creato un tutorial che si chiama “Devi amare le variabili” e lo ha condiviso con la comunità online di Scratch (figura 4).
Come spiega nelle note che accompagnano il progetto: “Amo le variabili! Sono molto utili nella programmazione e non avrei potuto realizzare la maggior parte dei miei progetti senza di esse. Comunque sono un po’ difficili da capire — ecco perché questo tutorial ti può aiutare!” Taryn incoraggia anche gli altri a sperimentare: “Divertiti a giocare e a sperimentare con le variabili e i valori booleani! Più provi (e sbagli!) più capirai, e più facile sarà poi usare le variabili per rendere stupendi i tuoi progetti!”
Taryn divenne nota nella comunità di Scratch per una serie di progetti dal titolo Colour Divide, che sono ambientati in un mondo distopico fantasy dove le persone vengono sottoposte ad un test che individua il loro posto nella società (figura 5).
Taryn ha collaborato con altri cinque studenti incontrati nella comunità online di Scratch per creare il primo progetto di Colour Divide. Per Taryn quel progetto era un modo per esplorare alcuni problemi sociali molto importanti. In un’intervista Taryn spiega: “Crescendo ho visto molto chiare le cicatrici che l’apartheid ha lasciato sul mio paese e sulla sua gente. Le sto esplorando attraverso i diversi personaggi che sono parte di questa storia.”
Taryn descrive l’importanza che la collaborazione ha avuto nello sviluppo di Colour Divide. “Ho fatto in modo che altri scratcher potessero contribuire con i volti, le voci, gli scenari e le musiche. Mi sembrava non tanto una cosa che stavo facendo io, ma più qualcosa che stavamo facendo insieme,” ha detto. “Mi ha sempre sbalordito il tipo di aiuto, collaborazione e condivisione che si realizza in questa comunità. Questa è una delle cose che mi fa continuamente tornare su Scratch, ogni giorno.”
Con il suo lavoro in Scratch Taryn ha cambiato il modo in cui apprende. “Sono diventata più sicura di me nel provare cose nuove e nell’esprimermi — e più a mio agio nel prendermi qualche rischio e fare errori,” spiega. “In altri linguaggi sei quasi troppo spaventata di sbagliare qualcosa e di scrivere qualcosa in modo scorretto ed essere giudicata. Ma Scratch è come un gioco, si prova a mettere le cose insieme, se non funziona va bene lo stesso. Essere capaci di fare degli errori è una delle cose che ti rende capace di avere fiducia nella tua creatività.”
Quello di Taryn per noi è un esempio di come gli studenti, lavorando su progetti di Scratch, possano crescere sia come creatori che come pensatori computazionali. Abbiamo visto tanti studenti nella comunità di Scratch seguire la stessa traiettoria di apprendimento. Ma molti non hanno le opportunità e il supporto necessari per diventare fluenti con la programmazione e diventare pensatori creativi.
Come possiamo aiutare più studenti a sperimentare le gioie e le possibilità della espressività computazionale?
Quattro principi guida
Nel nostro gruppo di ricerca abbiamo sviluppato quattro principi guida per supportare l’apprendimento creativo e l’espressività computazionale. Li chiamiamo le quattro P dell’apprendimento creativo: Progetti, Passione, Pari e Gioco (Play, ndt) [14].
Questi principi ci danno un’impalcatura utile a guidare la creazione di tecnologie, attività, curricoli, comunità e ambienti per supportare il coding e l’apprendimento. Di seguito esploriamo le quattro P attraverso esempi presi dalla comunità di Scratch.
Progetti. Crea le condizioni perché gli studenti lavorino su progetti significativi (non solo puzzle o attività di problem solving), in modo da far sperimentare loro il percorso che li porta da un’idea iniziale ad una creazione che può essere condivisa con gli altri.
A noi sembra naturale proporre il coding in un contesto basato sui progetti; in questo modo i ragazzi imparano a programmare mentre imparano a esprimersi in modo creativo. Ma molte introduzioni al coding hanno un approccio radicalmente diverso, dando agli studenti una serie di puzzle logici in cui devono programmare dei personaggi animati muovendoli da un posto ad un altro. Risolvendo un puzzle ottengono il passaggio al livello successivo. Senza dubbio imparano alcuni concetti fondamentali relativi alla programmazione mentre lavorano su questi puzzle. Imparare a programmare risolvendo dei puzzle è un po’ come imparare a scrivere facendo le parole crociate. Quello non è il modo per ottenere una vera espressività computazionale. Nello stesso modo in cui gli studenti diventano fluenti in una lingua scrivendo le loro storie (non solo facendo giochi con le parole), gli studenti acquisiscono espressività computazionale creando progetti (non solo risolvendo puzzle).
Sempre più scuole stanno scegliendo un approccio al coding basato sui progetti. In una scuola, per esempio, gli studenti hanno creato dei progetti basati sul libro Charlotte’s web, piuttosto che fare una tradizionale recensione del libro. In uno dei progetti uno studente ha creato un programma in cui un maialino si muove sulla scena. Per farlo sembrare distante lo studente ha programmato il maialino per diventare più piccolo, applicando il concetto artistico della prospettiva e usando calcoli matematici per modificare la dimensione del maialino. Il progetto era trasversale al curricolo integrando concetti di lingua, arte, matematica e informatica. In altre scuole gli studenti hanno creato progetti per diverse materie — creando giochi ambientati nell’antico Egitto per storia, modellando una replicazione di DNA per biologia e creando animazioni di poesie haiku per il corso di lingua e letteratura.
Per gli insegnanti può essere più semplice introdurre il coding con puzzle che dicano agli studenti se hanno risolto il problema nel modo giusto o se hanno sbagliato. Gestire una classe che lavora per progetti può essere difficile perché ogni alunno crea un progetto diverso. Ma è proprio questa opportunità di creare un progetto, dalla sua idea iniziale alla condivisione, che dà ai ragazzi l’opportunità di diventare pensatori creativi e risolutori di problemi [14].
Passione. Consenti agli studenti di lavorare su progetti legati ai loro interessi. Lavoreranno più a lungo e più duramente — e impareranno di più nel processo.
Abbiamo costruito Scratch in modo che potesse supportare un’ampia gamma di progetti e di interessi — dall’arte alla musica, all’animazione, ai giochi, alle storie e alle simulazioni. Ci siamo anche assicurati che gli studenti potessero personalizzare e adattare i propri progetti incorporando i loro disegni e i loro suoni.
Perché questo è così importante? Ogni bambino ha i propri interessi, proviene da una diversa cultura, e adotta stili di pensiero personali. Far sì che ci si possa avvicinare a Scratch da strade molto diverse permette a ogni bambino, indipendentemente dal proprio background, di lavorare su progetti che siano significativi e importanti per lui. Sul sito di Scratch si può vedere una grande varietà di progetti, dalle newsletter interattive ai tutorial di danza, dai giochi in cui vesti i personaggi con costumi storici alle macchine per creare ritmi musicali. Questo sta a indicare che Scratch sostiene studenti con interessi e passioni molto diversi. Allo stesso modo, quando valutiamo una sperimentazione con Scratch, usiamo il grado di diversità tra i progetti come un indice del successo del percorso, un’indicazione che i bambini stanno lavorando su progetti che hanno a cuore.
In un articolo fondamentale scritto negli anni ’90, Sherry Turkle e Seymour Papert affermano che incoraggiare diverse forme di pensiero e di programmazione è essenziale per promuovere equità e una cultura informatica inclusiva [21]. Scrivono:
“Il computer è un mezzo di espressione di cui ognuno si può appropriare in modo personale […] la diversità negli approcci alla programmazione suggerisce che per poter avere un accesso equo anche ai contenuti più elementari dell’informatica dobbiamo accettare la validità di tutti i diversi modi di apprendere e di ragionare, un pluralismo epistemologico.”
Ci riferiamo spesso a quest’idea con la frase “molti percorsi, molti stili.” Alcuni studenti pianificano il loro lavoro in modo minuzioso, altri sperimentano e provano. Ad alcuni studenti piace raccontare storie, altri preferiscono fare motivi grafici. Alcuni studenti sono attratti dagli animali, alcuni sono interessati agli sport. Per assicurarsi che il coding sia aperto a tutti, è fondamentale sostenere queste vie d’accesso molto diverse tra loro.
Pari. Incoraggia la collaborazione e la condivisione, e aiuta gli studenti a costruire partendo dal contributo degli altri.
Quando il nostro gruppo ha lanciato Scratch nel 2007, contemporaneamente abbiamo aperto la comunità online di Scratch. Volevamo favorire l’aspetto sociale dell’apprendimento dando agli studenti occasioni per imparare con e dagli altri. La comunità online si è trasformata in uno spazio dinamico dove i giovani collaborano tra di loro, condividendo più di un milione di progetti e postando più di tre milioni di commenti ogni mese.
Abbiamo imparato dagli scratchers quanto fosse importante la comunità online per tenere vivo nel tempo il loro interesse [18]. Come ha spiegato uno scratcher: “Avrei abbandonato da tempo, ma poi mi sono fatto degli amici […] certo, avevo amici anche nel mondo reale, ma fare amicizia con altri da paesi diversi con i miei stessi interessi mi ha spinto a tornare per parlare con loro.”
I giovani danno molte spiegazioni del perché la comunità online sia così importante per loro:
- La comunità dà un audience: quando i ragazzi condividono i loro progetti ricevono feedback, incoraggiamenti e suggerimenti dai pari della comunità.
- La comunità fornisce ispirazione. Osservando gli altri progetti sul sito, i ragazzi prendono ispirazione per i loro progetti.
- La comunità fornisce legami. Nella comunità i ragazzi fanno amicizia e incontrano altre persone che condividono i loro interessi da città e paesi diversi.
Come sosteneva una ragazza nella comunità online:
“Quando ho visitato il sito, mi sono interessata ai progetti degli altri. E’ in questo modo soprattutto che ho imparato Scratch: remixando, condividendo e creando. Ho conosciuto tanti amici qui, che remixano i miei progetti, fanno commenti e mi insegnano cose nuove.”
Mentre la comunità di Scratch continua a crescere, i ragazzi collaborano in modi che non avevamo nemmeno preventivato. Sempre più persone decidono di connettersi, collaborare e coordinarsi per lavorare su progetti e attività di Scratch. Circa un quarto del totale dei progetti sono remix in cui gli studenti aggiungono o modificano il codice di progetti esistenti [4]. Alcuni si uniscono in gruppi di collaborazione per creare giochi complessi che nessuno avrebbe mai potuto creare da solo. Altri hanno imparato a creare progetti coinvolgendo gli altri, chiedendo ad altri utenti nella comunità di contribuire con la programmazione, immagini o clip sonore [17].
Alcuni anni fa un professore di fisica ci raccontò che i suoi figli erano attivamente coinvolti nella comunità online di Scratch. Ci aspettavamo che ci raccontasse delle abilità di programmazione e delle idee informatiche che stavano sviluppando. Ma queste non erano le cose che lo interessavano di più. Invece era entusiasta del fatto che stessero partecipando a una comunità aperta di costruzione della conoscenza. “E’ come la comunità scientifica,” ci ha spiegato. “I bambini stanno continuamente condividendo idee e costruendo a partire dal lavoro degli altri. Stanno imparando come funziona la comunità scientifica.”
Gioco. Crea un ambiente in cui gli studenti si sentono sicuri nell’assumersi dei rischi, provare cose nuove e sperimentare in modo giocoso.
Scratch è costruito per incoraggiare la sperimentazione giocosa e il tinkering. Come avviene con i mattoncini LEGO, è facile connettere i blocchetti di codice di Scratch per provare nuove idee ed è facile allo stesso modo staccarli, riprovare e iterare. Basta cliccare su un gruppo di blocchetti per far partire immediatamente il codice. Non esistono messaggi di errore nell’editor di Scratch. Invece molti bambini imparano nuove strategie per programmare sperimentando in modo giocoso diverse combinazioni di blocchi, osservando cosa succede quando lanciano il loro codice, continuando a modificarlo e osservando il codice di altri progetti.
Crediamo che il “gioco” non sia un’attività ma un atteggiamento: il desiderio di sperimentare, assumersi dei rischi e provare cose nuove.
Quando abbiamo intervistato scratcher di lunga data, abbiamo scoperto che molti sono stati coinvolti dalla programmazione, “smanettando” (“messing around”, ndt) con Scratch [16]. Per esempio uno scratcher con lunga esperienza ci ha raccontato di aver capito le variabili, gli eventi e altri concetti informatici sotto forma di gioco, ossia “semplicemente sperimentando”. Anche se può sembrare più efficiente insegnare alcuni concetti attraverso una spiegazione diretta, abbiamo visto che gli studenti spesso sono più coinvolti e sviluppano un senso di autonomia più forte e maggior fiducia in se stessi attraverso una sperimentazione giocosa e libera. Esistono dei tutorial sul sito di Scratch, ma anche questi sono costruiti in modo da incoraggiare gli studenti a incorporare le loro idee e a fare i loro aggiustamenti, non solo a seguire istruzioni passo-passo.
Le linee guida della comunità di Scratch insistono molto sull’importanza di essere rispettosi e amichevoli, e affermano chiaramente l’idea che Scratch “accoglie persone di ogni età, origine, provenienza etnica, religione, abilità, orientamento sessuale e identità di genere.” [19]
Una comunicazione rispettosa e inclusiva è diventata la norma che i partecipanti esperti comunicano ai nuovi iscritti e agli altri [10]. Una comunità rispettosa è essenziale per realizzare i nostri obiettivi con Scratch. Quando le persone sentono di partecipare a una comunità di pari rispettosi e premurosi saranno molto più disposte a giocare — che significa provare cose nuove e assumersi dei rischi, parte essenziale del processo creativo.
Mettere in pratica le quattro P
Dalle nostre osservazioni sulle attività con Scratch nel mondo negli ultimi dieci anni, abbiamo potuto riconoscere l’importanza che Progetti, Passione, Pari e Gioco hanno nel supportare lo sviluppo della espressività computazionale. Ma abbiamo anche potuto constatare quanto potesse essere difficile mettere in pratica questi quattro principi nelle realtà delle classi di oggi, basate su curricoli standardizzati e guidati dalla valutazione.
Ci ha molto incoraggiati vedere un numero sempre maggiore di scuole e insegnanti che trovano il modo di integrare modalità creative e espressive di fare coding nelle loro classi. In una scuola pubblica di Tacoma, WA, per esempio, l’insegnante di informatica Jaleesa Trapp ha voluto dare un’occasione ai suoi studenti di sperimentare concetti informatici nel contesto di progetti che fossero significativi per loro. Jaleesa ha notato che a molti dei suoi studenti piaceva guardare video tutorial online, così ha proposto loro di creare, con Scratch, i loro tutorial how-to.
Gli studenti hanno creato una grande quantità di progetti, tra cui: come fare l’uncinetto, come usare una stampante 3D, come fare un videogioco, e altri. Hanno creato i loro progetti perché fossero accessibili per tutti gli studenti indipendentemente dalle loro abilità. Per realizzarli hanno dovuto approfondire gli argomenti di cui volevano parlare, hanno creato dei prototipi di tutorial, li hanno testati con altri studenti, hanno modificato i loro progetti e alla fine li hanno mostrati ad amici e famigliari e condivisi con la più ampia comunità online.
Questa attività era molto coerente con le quattro P perché gli studenti lavoravano su progetti basati sulle loro passioni, in collaborazione tra pari, con un atteggiamento giocoso. L’attività era anche coerente con gli standard dei programmi di informatica e tecnologia, perché includeva un design iterativo, test e debug, il miglioramento continuo dei programmi scritti [3,12]. Gli studenti — lavorando sui loro progetti — hanno acquisito e compreso fondamentali concetti e pratiche dell’informatica (come l’uso di strutture di controllo e il miglioramento dell’usabilità).
Jaleesa voleva anche un metodo di valutazione che fosse significativo per i suoi alunni, così ha chiesto loro di sviluppare una rubric di valutazione dei progetti. Hanno incominciato identificando quegli elementi dei tutorial che — a loro giudizio — erano più importanti ai fini della compilazione della rubric. Contribuendo direttamente ai criteri per la valutazione gli studenti hanno maturato una profonda comprensione degli scopi del loro lavoro e si sono impegnati nel realizzarli.
Jaleesa ha notato che molte iniziative di informatica valutano gli studenti sul numero di blocchi di codice diversi usati nei loro progetti. Era preoccupata che questo potesse spingerli a inserire quanti più blocchi potevano per rispondere a una richiesta, anche senza comprendere il significato di quel codice. Invece gli studenti di Jaleesa hanno usato un gran numero di blocchi di programmazione in un modo autentico. Dovendo creare progetti che fossero accessibili, hanno naturalmente dovuto coordinare un grande numero di eventi, incorporare una grande quantità di risorse multimediali, e prevedere un gran numero di input da parte degli utenti.
I prossimi dieci anni
Stiamo vivendo un periodo di grandi opportunità ma anche di grandi sfide. Nonostante le tecnologie siano sempre più diffuse nelle scuole e sempre più scuole adottino iniziative di coding, le strutture fondamentali delle istituzioni scolastiche rimangono praticamente invariate. Se vogliamo che le nuove tecnologie e le iniziative di coding mantengano le loro promesse, dobbiamo intervenire sulle barriere strutturali presenti all’interno dei sistemi educativi.
Dobbiamo rompere le barriere tra le discipline, dare agli studenti l’opportunità di lavorare su progetti che integrino scienza, arte, ingegneria, design. Dobbiamo rompere le barriere dell’età, permettendo a tutti di imparare da e con gli altri. Dobbiamo rompere le barriere degli spazi, mettendo in connessione le attività delle scuole, delle associazioni, delle famiglie. Dobbiamo poi rompere le barriere del tempo, permettendo ai bambini di lavorare su progetti basati sugli interessi personali per settimane o mesi, invece che concentrare queste attività nei vincoli dei tempi delle lezioni o delle unità curricolari.
Rompere queste barriere strutturali è difficile. E’ necessario che le persone adottino modi diversi di pensare al coding, e modi diversi di pensare all’apprendimento. Bisogna considerare l’educazione non come una trasmissione di informazioni ma piuttosto come un modo per supportare gli studenti nelle loro esplorazioni, sperimentando e esprimendo se stessi, così che possano sviluppare la loro creatività e la loro capacità di collaborare e comunicare, competenze fondamentali nel mondo contemporaneo in continuo cambiamento.
Questi cambiamenti nelle strutture e nei modi di pensare hanno bisogno dell’impegno di tante persone, in molti posti, a molti livelli. Ci sono già insegnanti, scuole e anche interi distretti che stanno implementando approcci nuovi e creativi al coding e all’apprendimento. Dobbiamo partire da questi esempi per sostenere un cambiamento globale.
Non esiste nessuna singola politica, singola scuola o singola tecnologia che da sola possa generare questo cambiamento. Abbiamo bisogno di un movimento in cui persone in ogni parte del sistema educativo — educatori, amministratori, ricercatori, autori di curricoli, produttori di strumenti e decisori politici — adottino nuovi modi di pensare al coding e nuovi modi di pensare all’apprendimento.
Siamo a un bivio. Speriamo tra dieci anni, di poter guardare indietro e osservare dieci anni di cambiamenti nell’educazione, dieci anni in cui le scuole hanno dato agli alunni il tempo, lo spazio, il supporto e l’incoraggiamento di cui hanno bisogno per esprimersi fluentemente con le nuove tecnologie, in modo da poter avere un ruolo nel dar forma alla società futura.
Ringraziamenti
Molte persone hanno partecipato al design, allo sviluppo e al supporto di Scratch, in particolare i membri del Lifelong Kindergarten Group all’interno del MIT Media Lab e il team di Scratch alla Scratch Foundation. Siamo riconoscenti alla Fondazione Nazionale per le Scienze per aver supportato la ricerca e lo sviluppo iniziali di Scratch e alla Siegel Family Endowment, alla LEGO Foundation e ad altri sostenitori che hanno reso possibile rendere Scratch disponibile gratuitamente per i giovani e gli educatori in tutto il mondo.
Figura. Guarda gli autori discutere questi temi nel video in esclusiva per Communications.
https://cacm.acm.org/videos/coding-at-a-crossroads
Note
- N.d.T.: L’espressione originale è “computational fluency”. Il termine “fluency” in inglese è associato alla fluenza linguistica, ossia alla capacità di esprimersi in modo scorrevole e articolato in una lingua. In italiano il termine fluenza è poco utilizzato e si riferisce spesso alla scorrevolezza verbale nella lingua parlata. Per Resnick (2001) essere fluenti in una lingua o tecnologia significa saper “creare qualcosa” con quella lingua o tecnologia, cioè sapersi esprimere con essa. Per questo motivo, in accordo con gli autori, abbiamo scelto di tradurre “computational fluency” con “espressività computazionale”, dopo aver valutato altri termini quali “capacità”, “padronanza” e “fluenza” computazionale.
Bibliografia
1. Bau, D., Gray, J., Kelleher, C., Sheldon, J. and Turbak, F. Learnable programming: blocks and beyond. Commun. ACM 60, 6 (Jun. 2017), 72–80; https://dl.acm.org/citation.cfm?doid=3098997.3015455
2. Brennan, K. and Resnick, M. Using artifact-based interviews to study the development of computational thinking in interactive media design. Annual Meeting of the American Educational Research Association, Vancouver, B.C, 2012.
3. Computer Science Teachers Association. CSTA K-12 Computer Science Standards, 2017; http://www.csteachers.org/standards
4. Dasgupta, W.H., Monroy-Hernández, A. and Hill, B.M. Remixing as a pathway to computational thinking. In Proceedings of the 19th ACM Conference on Computer-Supported Cooperative Work & Social Computing (2016). ACM, New York, 1438–1449. https://doi.org/10.1145/2818048.2819984
5. Freire, P. Pedagogy of Indignation. Paradigm, Boulder, CO, 2014.
6. Israel, M., Pearson, J.N., Tapia, T., Wherfel, Q.M., and Reese, G. Supporting all learners in school-wide computational thinking: A cross-case qualitative analysis. Computers & Education, 82 (Mar. 2015), 263–279; https://doi.org/10.1016/j.compedu.2014.11.022
7. Kafai, Y.B. and Burke, Q. Connected Code: Why Children Need to Learn Programming. MIT Press, Cambridge, MA, 2014.
8. Ke, F. An implementation of design-based learning through creating educational computer games: A case study on mathematics learning during design and computing. Computers & Education, 73 (Apr. 2014), 26–39.
9. Khine, M.S. Robotics in STEM Education. Springer, 2017; https://doi.org/10.1007/978-3-319-57786-9
10. Lombana-Bermudez, A. Moderation and sense of community in a youth-oriented online platform. 2017; https://bit.ly/2NfpxEl
11. Maloney, J., Peppler, K., Kafai, Y., Resnick, M., and Rusk, N. Programming by choice: Urban youth learning programming with Scratch. ACM SIGCSE Bulletin 40, 1 (Mar. 2008), 367–371.
12. NGSS Lead States. Next Generation Science Standards: For States, by States. National Academies Press, Washington, D.C., 2013.
13. National Research Council. Education for Life and Work: Developing Transferable Knowledge and Skills in the 21st Century. National Academies Press, Washington, D.C., 2013
14. Resnick, M. Lifelong Kindergarten: Cultivating Creativity through Projects, Passion, Peers, and Play. MIT Press, Cambridge, MA, 2017.
15. Resnick, M., Maloney, J., Monroy-Hernández, A., Rusk, N., Eastmond, E., Brennan, K., Millner, A., Rosenbaum, E., Silver, J., Silverman, B., and Kafai, Y. Scratch: Programming for all. Commun. ACM 52, 11 (Nov. 2009), 60–67.
16. Roque, R. and Rusk, N. Youth perspectives on their development in a coding community. Info. Learning Sci. (Apr. 2019); https://doi.org/10.1108/ILS-05-2018-0038
17. Roque, R., Rusk, N., and Resnick, M. 2016. Supporting diverse and creative collaboration in the Scratch online community. Mass Collaboration and Education. U. Cress, H. Jeong, and J. Moskaliuk (Eds.) Springer, Cham, Switzerland. 241–256; httpps://doi.org/10.1007/978–3–319–13536–6_12
18. Rusk, N. Motivation for making. Makeology: Makers as Learners., K. Peppler, E. Rosenfeld Halverson, and Y.B. Kafai (Eds.). Routledge, New York, NY, 85–108.
19. Scratch Community Guidelines. 2018; http://scratch.mit.edu/community_guidelines/
20. Sentance, S., Waite, J., Hodges, S., MacLeod, E., and Yeomans, L. ‘Creating cool stuff:’ Pupils’ experience of the BBC micro:bit. In Proceedings of the 2017 ACM SIGCSE (Seattle, WA) 531–536.
21. Turkle, S. and Papert, S. Epistemological pluralism: Styles and voices within the computer culture. SIGNS: 16, 1 (1990), 128–157.
22. Wing, J.M. Computational thinking, Commun. ACM 49, 3 (Mar. 2006), 33–35.
23. Yu, J. and Roque, R., A review of computational toys and kits for young children. Int’l J. Child-Computer Interaction. (Jul. 2019); https://doi.org/10.1016/j.ijcci.2019.04.001