Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Alberto Pian
Coding a scuola
Ambiente
educativo
Digitale CONTENUTI ZONA
LIBRO MISTO E-BOOK INTEGRATIVI MATEMATICA IN CLASSE
internet: deascuola.it
e-mail: info@deascuola.it
3
2. IL CODING E IL GIOCO, UN BINOMIO VINCENTE............................................................................................. 20
PROGRAMMAZIONE E GIOCO AI DUE POLI....................................................................................20
Programmare giocando........................................................................................................................20
Apprendimento e multicanalità............................................................................................................20
Carlo Cioppa, lo studente che ha imparato a sviluppare con YouTube..............................................................21
Il ruolo del docente: come sollecitare lo studente al coding................................................................22
PARTIAMO DA UN DIAGRAMMA DI FLUSSO..................................................................................22
Applicazioni suggerite per creare diagrammi di flusso........................................................................22
PROGRAMMARE INTERAZIONI E GIOCHI CON APPLICAZIONI CONOSCIUTE...........................23
Creiamo un puzzle investigation con Keynote o PPT...........................................................................23
Workflow di base per la creazione di una struttura a tre ancoraggi....................................................25
Un altro esempio con iPad: Make It......................................................................................................25
4
Coding a scuola
© De Agostini Scuola 5
Coding a scuola
Il meccanismo è semplice: quando da un nostro cliente parte il messaggio perfavore, i ragazzi in servizio
più vicini lo intercettano.
Solo il ragazzo addetto all’acqua consegnerà la bottiglietta al cliente. Tutti gli altri lasceranno passare il
messaggio.
Complessità e interazione
Le cose possono essere anche un po’ più complesse di così. Per esempio, se il cliente chiede una ribollita,
che è una zuppa toscana, probabilmente non sarà nel menu del lido e può anche capitare che i gestori
non conoscano questo piatto e quindi, in entrambi i casi, il cliente non potrà essere accontentato.
Bisogna che i ragazzi abbiano a disposizione un elenco di prodotti che possono offrire in modo da con-
trollare se è possibile soddisfare le richieste dei clienti.
Allora le istruzioni di prima potrebbero essere riscritte in questo modo:
6 © De Agostini Scuola
Coding a scuola
Il ragazzo che serve l’acqua intercetta il messaggio del cliente, controlla se la richiesta compare nell’e-
lenco. Se non compare, lo comunica al cliente. Se invece compare e si tratta di acqua, gli servirà la bot-
tiglietta, altrimenti lascerà passare il messaggio. Lasciare passare il messaggio significa che il messaggio
passerà di ragazzo in ragazzo finché sarà raccolto da chi potrà soddisfare la richiesta. Così se il cliente
desidera fare un giro in gommone, il ragazzo addetto al deposito delle imbarcazioni del lido gliene potrà
noleggiare uno. Analogamente, il ragazzo addetto all’apertura degli ombrelloni raccoglierà la richiesta
dei clienti che desiderano un po’ d’ombra.
Per eseguire queste istruzioni abbiamo utilizzato una “struttura di controllo” del tipo se–allora–altrimenti
(if–then–else) tipica del coding. Con questa semplice struttura si possono fornire istruzioni anche molto
complesse.
1 https://labuonascuola.gov.it/documenti/La%20Buona%20Scuola.pdf?v=d0f805a
© De Agostini Scuola 7
Coding a scuola
Che pasticcio! Chi intercetterà i messaggi dei clienti? I ragazzi più vicini? Quelli più veloci? Quelli che
hanno meno compiti da eseguire in quel momento?
Non solo: se un ragazzo intercetta tre messaggi riguardanti compiti che può eseguire, che cosa farà? A
quale messaggio risponderà per primo? Lascerà passare gli altri messaggi o dovrà rispondere lui?
Questa è una bella complicazione!
su indagini e problem solving, le abilità e le conoscenze in ambito di coding diventano facilmente delle
competenze multidisciplinari, se lo studente è in grado di utilizzarle in altri ambiti che non siano quello
strettamente informatico.
Per questo ci pare importante che le potenzialità cognitive del coding siano effettivamente sfruttate fino
in fondo grazie alla collaborazione delle altre discipline, rispetto alle quali il coding può rappresentare il
filo rosso, il tessuto che le tiene legate.
Conoscenze e abilità
• capacità di creare valori e proprietà
• capacità di assegnare valori e proprietà a “oggetti”
• capacità di creare messaggi
• capacità di costruire condizioni
• capacità di creare opposizioni
• capacità di creare collegamenti
• capacità di creare interazioni temporali
• capacità di creare interazioni con dati quantitativi (velocità, distanza ecc.)
• capacità di effettuare calcoli, dai più semplici ai più complessi (dipende dal grado di programmazione
che si vuole raggiungere)
• saper scrivere un piano di passaggi da realizzare secondo un ordine
• saper individuare una nomenclatura appropriata di oggetti
• saper scrivere le istruzioni in forma sequenziale
• saper scrivere una guida
• saper tradurre le istruzioni in lingua 2
• saper rappresentare con degli schizzi semplici oggetti e sfondi
• saper scegliere i colori in modo funzionale al gioco e alla funzione degli oggetti
• saper ricercare immagini e disegni nei diversi canali
• saper raccogliere informazioni su tutti gli aspetti dei videogame
• saper raccogliere informazioni sull’utilizzo dei videogame da parte del pubblico
• saper confrontare le strutture e le funzioni dei videogame
• saper individuare i target di riferimento per il proprio gioco
© De Agostini Scuola 9
Coding a scuola
Competenze sociali
• organizzare e richiedere dei test e coordinare i beta testing
• comprendere e analizzare le aspettative del pubblico
• sapersi confrontare con le critiche
• gestire la comunicazione nei forum e nei social network
Competenze diffuse
Oltre a quelle che abbiamo elencato, esiste una serie molto estesa di conoscenze, abilità e competenze
associate alla programmazione di un videogioco. Queste sono attinenti a tutti i campi del sapere: se il
videogioco è ambientato nel passato saranno messe in moto conoscenze e competenze storiche e geo
grafiche, se è regolato da leggi fisiche (la forza di attrazione di corpi celesti, per esempio), richiederà cono-
scenze e competenze in quel campo, e così via. Poi ci sono anche altre conoscenze e competenze disciplinari
che hanno un carattere potenzialmente trasversale. Per esempio la matematica è un pilastro della program-
mazione, quali che siano il tema del videogioco o il suo ambito disciplinare. Anche l’italiano e la lingua stra-
niera (non solo per una pubblicazione in lingua inglese, ma anche per acquisire informazioni utili nel mondo
dei videogame) mettono in gioco altrettante competenze e conoscenze disciplinari di carattere trasversale.
Quindi abbiamo innumerevoli motivi per trasformare il coding in un’attività didattica in grado di unire
fra loro argomenti, saperi e competenze che provengono da differenti ambiti disciplinari. Per questo la
costruzione di un videogioco può essere concepita proprio come la tela che unisce ciò che a scuola nor-
malmente è separato, diviso in compartimenti stagni, come le diverse discipline di insegnamento.
10 © De Agostini Scuola
Coding a scuola
© De Agostini Scuola 11
Coding a scuola
Mi ricorda un caso che hai seguito, quello di R. (uno studente con bisogni educativi speciali).
Pensavo proprio a lui. Quando l’ho incontrato per la prima volta aveva 12 anni e frequentava la
prima media. Aveva ricevuto una diagnosi mista di dislessia grave e ADHD (deficit dell’attenzione
con iperattività) dal consultorio locale e la famiglia lamentava la sua intolleranza nei confronti dello
studio e dei compiti, come anche i suoi insegnanti che, esasperati, erano giunti a chiedere addirit-
tura l’aiuto del sostegno. R. si era seduto davanti a me nello studio e parlava liberamente dei suoi
interessi, la sua passione per i videogiochi di guerra e di combattimento. Un ragazzino molto educa-
to e solare. A un certo punto, era necessario valutare a che punto fossero le sue abilità linguistiche
e quindi gli ho dovuto sottoporre un compito scritto di natura molto scolastica, simile a una verifica
sul lessico. Nel giro di pochi secondi R. si è spento, come se si fosse “disattivato”. Quello non era il
suo mondo. Ho provato allora a fare delle attività con l’iPad e con la LIM: qualcosa andava meglio,
ma il ragazzino che affrontava quei compiti non era lo stesso che descriveva con passione la trama
dei propri videogiochi preferiti. In seguito è stato inserito in un gruppetto di lavoro (insieme ad
altri ragazzini con diagnosi di disturbo specifico di apprendimento, DSA) per il potenziamento del
metodo di studio e la partecipazione, ma è sempre stato “distante”. Un giorno, molti mesi dopo,
mentre si parlava di YouTube, R. dal nulla mi ha detto: «Io ho un mio canale». Ed ecco scoperchiato
un mondo: numerosi video, recensioni di videogiochi, trucchi, tutorial, tutto registrato da lui, con ac-
curata progettazione, metodo, e chiarezza. Tutte capacità che R. non mostrava nella vita scolastica.
Il prossimo passo, allora, sarebbe stato quello di insegnargli a sviluppare il pensiero logico e pratico
attraverso un mezzo più adatto a lui, per farlo entrare in contatto con il proprio potenziale, e per
guidarlo nell’utilizzare queste stesse abilità nella vita di tutti i giorni. E questo è ciò che impariamo
dalla sua storia.
Quali considerazioni ti hanno lasciato esperienze come questa?
Dobbiamo riferirci alla tassonomia di Bloom, che resta la più valida in questo campo. Infatti essa
affronta i diversi obiettivi di apprendimento che un individuo può raggiungere, classificandoli uno
dopo l’altro in ordine di qualità. Alla base di tutto abbiamo obiettivi come ricordare e capire, che
sono le richieste cognitive fondamentali. Ma al livello più alto si trova la creatività, ossia la capacità
di produrre e operare tramite il pensiero divergente e l’intuito (o insight).
Noi, come educatori e insegnanti, vogliamo che i nostri alunni crescano come padroni della propria
conoscenza, e che possano averne una consapevolezza tale da manipolarla e utilizzarla per “fare”,
per “stupire”; vogliamo che riescano a esserne soddisfatti al di là di difficoltà visuospaziali che non
permettono loro di incolonnare le operazioni, o difficoltà ortografiche, o bisogni educativi speciali
di qualsiasi categoria.
Se per raggiungere questo l’insegnante deve progettare un compito in modo da far apprendere
gli studenti interattivamente e per scoperte, in un ambiente dove loro sono liberi di sperimentare,
sbagliare e capire, allora secondo la mia esperienza con ragazzi, educatori, e nella scuola 2.0, il
coding e la ludicizzazione/gamification sono due delle risposte corrette possibili.
Torniamo al nostro piccolo gioco del lido. Siamo partiti da una struttura molto semplice, che si è via via
complicata con nuovi livelli di programmazione. A una struttura ne abbiamo aggiunta un’altra. Questo è
il meccanismo dell’“e se…”. E se un cliente chiedesse…? E se un ragazzo ricevesse una telefonata? E se
sulla spiaggia ci fosse un pericolo? E se improvvisamente piovesse?
12 © De Agostini Scuola
Coding a scuola
2 Uno dei principali linguaggi di programmazione attiva, a oggetti e intuitiva, che consente a chiunque di creare
una serie di interazioni (http://scratch.mit.edu/).
3 Il PBL nasce in Canada intorno agli anni Sessanta nel settore medico. Vedi: The Challenge of Problem Based
Learning, a cura di David Bound e Grahame E. Feletti, Routledge, New York 1997 (http://books.google.it/
books?id=vIUuAgAAQBAJ&printsec=frontcover&hl=it).
4 Sull’IBL, vedi: http://www.exploratorium.edu/ifi/index.html; Wynne Harlen, Progress in Science Inquiry Skills and
How to Help it, Lisbona, 15 settembre 2012 (http://www.cienciaviva.pt/img/upload/Aprender_ciencia_Wynne_
Harlen.pdf) e il progetto Inquire: (http://www.inquirebotany.org/it/) con esempi di attività nel campo della
botanica (http://www.inquirebotany.org/it/resources.html).
5 Vedi: NRC, National Science Education Standards, 1996.
© De Agostini Scuola 13
Coding a scuola
Future of Europe6. Questo documento riconosce la necessità di un nuovo approccio didattico allo studio
delle scienze, proprio attraverso il metodo IBL7 e uno dei modelli che si possono impiegare per implemen-
tare tale metodologia è il cosiddetto “modello delle 5e”8.
La tradizione dell’indagine
Compiendo un viaggio a ritroso, a loro volta i metodi del CBL, PBL e IBL sono stati ispirati dalle tecniche
di problem solving. Il problem solving aveva lo scopo di superare i classici compiti fondati sulla soluzione
di esercizi e di problemi che venivano presentati nei momenti di verifica. I tradizionali problemi ed esercizi,
infatti, mettono in gioco ciò che lo studente già conosce. L’idea invece era di problematizzare l’insegna-
mento attraverso la ricerca di soluzioni che non implicassero necessariamente l’appello a un bagaglio di
conoscenze già acquisito. Le soluzioni devono essere trovate attraverso la ricerca e la riflessione logica.
Così, per esempio, il Problem Based Learning propone di affrontare sistematicamente i contenuti discipli-
nari problematizzando l’apprendimento. A questo scopo fornisce agli studenti un problema “autentico”
6 UE, Science Education Now: A Renewed Pedagogy for the Future of Europe (http://ec.europa.eu/research/science-
society/document_library/pdf_06/report-rocard-on-science-education_en.pdf).
7 In Europa viene talvolta chiamato IBSE (Inquiry Based Science Education).
8 Il modello si basa sulle seguenti fasi: Engage – Explore – Explain – Elaborate – Evaluate. Lo studente si interroga
e pone domande in modo che l’attività inizi sempre da una sua curiosità (Engage). Poi raccoglie, organizza,
interpreta, analizza e valuta i dati (Explore). In seguito comunica in differenti modi e forme le conclusioni e le
scoperte, le generalizzazioni a cui è giunto (Explain). Infine applica le sue scoperte e le sue teorie per risolvere
problemi, prendere decisioni, svolgere compiti, risolvere i conflitti o stabilire dei significati (Elaborate). Gli
studenti in gruppo valutano le conoscenze, le competenze e le abilità che hanno acquisito (Evaluate). Una
sintetica ed efficace descrizione si trova sul sito dell’Università del Maryland (http://faculty.mwsu.edu/west/
maryann.coe/coe/inquire/inquiry.htm).
14 © De Agostini Scuola
Coding a scuola
da risolvere. Cioè un problema che esiste nel mondo reale. I metodi e le tecniche del PBL e di pratiche
analoghe sono diverse, ma tutte tendono a fare degli studenti dei soggetti attivi nella ricerca delle solu-
zioni. Infatti se il Problem Based Learning si struttura attorno a una presentazione che illustra il progetto,
l’idea e quindi la soluzione elaborata dagli studenti, dal canto suo il Design Based Learning si sviluppa
attraverso l’articolazione di un progetto che consente di risolvere un problema complesso.
In tutti questi casi di didattica attiva e induttiva abbiamo a che fare con processi metacognitivi (che inse-
gnano a pensare come pensare) che aiutano gli studenti ad assumere la padronanza del proprio appren-
dimento. Infatti tutte queste pratiche integrano anche gli strumenti necessari affinché lo studente sia in
grado di monitorare la sua stessa comprensione dei procedimenti di cui si occupa.
© De Agostini Scuola 15
Coding a scuola
Come si possono affrontare i temi della programmazione in un contesto multidisciplinare nel quale, per
esempio, lo studente possa portare un’esperienza integrata di attività di coding, sviluppata insieme ad
altre discipline, al suo esame di fine ciclo, oppure a una presentazione ufficiale, a un concorso, o a un
evento?
Qui riportiamo un esempio di workflow che coinvolge più discipline nella preparazione di un reportage
sull’antico Egitto.
16 © De Agostini Scuola
Coding a scuola
Storia
L’insegnante lavora con i suoi studenti per rappresentare la sala di un museo dove sono conservati
antichi reperti egizi, traendo ispirazione dagli ambienti del celebre Museo delle Antichità Egizie di
Torino (http://www.museoegizio.it).
• Creiamo due scenari di un museo all’interno del quale sono conservati reperti dei primi impor-
tanti ritrovamenti di epoca napoleonica. Registriamo lo screenshot di ciascuno scenario.
Inglese
L’insegnante crea con i suoi studenti un breve fumetto in lingua che ha come tema la vita di un
giovane egizio.
Montiamo ogni scena con un’applicazione per creare fumetti come Comic Life per Mac e Win-
dows (http://plasq.com/apps/comiclife/macwin/) o Strip designer (https://itunes.apple.com/it/app/
strip-designer/id314780738?mt=8). Inseriamo i dialoghi e le didascalie che raccontano la storia in
lingua inglese.
Coding
L’insegnante stimola l’apprendimento dei principi base della programmazione con applicazioni di
gioco che permettono di assemblare gli script come mattoncini, rendendo così visivamente chiara
la costruzione di una parte di codice.
• Siamo sulle rive del Nilo, e con un’applicazione come Pocket Frogs (https://play.google.com/
store/apps/details?id=com.mobage.ww.a435.pocketfrogs_android&hl=it; https://itunes.apple.
com/us/app/pocket-frogs-free-pet-farming/id386644958?mt=8) vogliamo stabilire le condizioni
che determinano la vita e la proliferazione delle rane e degli animali in quell’ambiente. Allo stes-
so tempo con Hopscotch (https://itunes.apple.com/it/app/hopscotch-programming-designed/
id617098629?mt=8) impariamo semplici diagrammi di flusso e un po’ di inglese. Mostriamo
che si può utilizzare la condizione “if” per costruire semplici procedure con Scratch. Scattiamo
una foto dello schermo e la importiamo nel programma di appunti per annotarla spiegando la
procedura che abbiamo utilizzato.
• Con Mind Map (https://play.google.com/store/apps/details?id=com.takahicorp.MindMap) o In-
spiration Maps (https://itunes.apple.com/it/app/inspiration-maps/id510031612?mt=8) creiamo
una semplice mappa sia grafica sia logica, utile anche per DSA. Scattiamo la foto e la importia-
mo nel nostro quaderno per raccontare quello che abbiamo fatto.
Matematica
• Cerchiamo l’immagine di una piramide e con Explain Everything (https://play.google.com/store/
apps/details?id=com.morriscooke.explaineverything; https://itunes.apple.com/it/app/explain-
everything/id431493086?mt=8) creiamo un filmato didattico che spiega alcune caratteristiche
matematiche delle piramidi. Il filmato sarà composto da immagini, disegni a mano libera, colle-
gamenti a pagine Web.
Gamification e coding
Creiamo un piccolo gioco didattico che unisce tutti questi elementi. Vengono presentate immagini,
nomenclatura, pulsanti interattivi da associare per determinare l’operazione corretta (vedi il capito-
lo: “Programmare interazioni e giochi con applicazioni conosciute”).
Conclusione
Presentiamo il lavoro a fine anno, lo pubblichiamo sul sito della scuola come Web app, oppure i
ragazzini lo portano agli esami come tesina multidisciplinare.
© De Agostini Scuola 17
Coding a scuola
Quando nel Settecento la porcellana si diffuse alla corte di Sassonia, nessuno sapeva veramente che farsene
e tutti la usavano per dare vita agli stessi oggetti che precedentemente si scolpivano nella pietra. Solo col
tempo si imparò a sfruttare la plasticità di quell’impasto di caolino e altre sostanze per inventare forme del
tutto nuove prima di cuocerlo in forno. A quel punto l’Europa venne invasa da migliaia di oggetti di porcellana.
Considerate che l’interfaccia di una qualsiasi applicazione è come la porcellana alla corte di Sassonia: si
modella bene, ma è difficile utilizzarla in modo davvero intelligente. Inoltre la maggior parte delle persone
conoscono poco questo ambito dell’informatica. L’interfaccia è ciò che appare quando si lancia un sistema
operativo, un’applicazione, una presentazione multimediale. Per effettuare i suoi calcoli, un computer utilizza
i numeri binari 0 e 1 (linguaggio macchina) che compongono il codice della programmazione (coding). L’in-
terfaccia è ciò che trasforma le serie di numeri, i listati o gli oggetti della programmazione in immagini, testi,
filmati, grafica e suoni. L’interfaccia è una specie di diaframma, di porta di comunicazione con l’elaboratore.
Anche un eBook interattivo e multimediale come un Multi Touch Book (http://www.apple.com/it/ibooks-
author/gallery.html) richiede un complesso lavoro di sviluppo informatico che viene reso coerente da
un’interfaccia che lega i contenuti fra loro. Così in questo eBook il lettore può scegliere di associare alla
lettura di una poesia anche immagini consultabili contemporaneamente, giochi e percorsi alternativi, e il
prodotto acquista nuove chiavi di lettura.
Tutto questo non sarebbe possibile senza la rappresentazione simbolica e grafica costituita da un’inter-
faccia. Detto in altri termini: non può esistere una programmazione che implichi una manipolazione di
dati senza la sua interfaccia, non può esistere codice senza rappresentazione, non possono esistere listati
logici senza una grafica che li renda fruibili.
18 © De Agostini Scuola
Coding a scuola
ITunes U è un’applicazione gratuita che raccoglie contributi messi a disposizione da oltre 3000 atenei di tutto il mondo. L’Università
di Pisa, per esempio, ha reso disponibili i suoi seminari di informatica umanistica (https://itunes.apple.com/it/itunes-u/seminari-di-
informatica-umanistica/id426146844?mt=10).
© De Agostini Scuola 19
Coding a scuola
La programmazione e il gioco sono due attività molto diverse tra loro, addirittura opposte. Programmare
significa predisporre delle operazioni razionali e logiche, conformi a un determinato linguaggio, con lo
scopo di ottenere un certo risultato prefissato in anticipo. L’obiettivo della programmazione non è ludico,
anche se lo sviluppatore sta creando un gioco, egli non gioca mentre programma. Al contrario, chi gioca
non ha altro fine se non quello di giocare, la sua attività è libera e sperimentale, integralmente basata
sulla scoperta. Inoltre la sua attività non è necessariamente logica perché l’intuizione e una pratica fon-
data su tentativi rivestono un ruolo importante. Il gioco è libero, il lavoro no. Programmare è un lavoro.
Naturalmente chi programma si basa anche sul suo intuito, sperimenta delle soluzioni e si può divertire,
ma l’insieme della sua attività non è un gioco.
Quindi non è una contraddizione in termini voler abbinare la programmazione con il gioco? In parte sì,
ma in realtà dipende dal contesto e dagli scopi della programmazione. In ambito scolastico, diciamolo
subito, programmazione e gioco vanno a braccetto. Ecco per quale motivo.
Programmare giocando
Bisogna comprendere che il coding a scuola viene introdotto come un’attiva educativa e logica, non come
disciplina. Questo vuol dire che il suo oggetto non è il coding stesso, ma l’attività metacognitiva (che cioè
permette di conoscere la propria capacità cognitiva e l’attitudine a modificare il proprio modo di apprendi-
mento) che è in grado di sviluppare. Se fosse introdotto come disciplina, si dovrebbero insegnare i linguag-
gi di programmazione in quanto tali. Lo studente dovrebbe conoscere il C++, oppure Swift, JavaScript o
altri ancora. Invece è possibile impiegare diversi linguaggi e differenti strumenti di programmazione senza
doverne apprendere alcuno nello specifico, perché il coding viene introdotto a scuola come attività trasver-
sale che stimola le capacità logiche e cognitive. Queste capacità possono aiutare lo studente che sviluppa
una sua particolare passione per l’informatica, o che sceglie il coding come strada per la sua crescita pro-
fessionale. Dunque non si può fare del coding una pedante e tradizionale attività didattica il cui scopo sia
l’apprendimento di un linguaggio informatico fine a se stesso. Al contrario, bisogna affrontare i processi di
codifica, di programmazione, di costruzione di app, attraverso la formulazione di quesiti, la realizzazione
di esperimenti, l’indagine e la ricerca per tentativi: tutti elementi autonomi che devono essere privilegiati
rispetto all’assimilazione di specifiche procedure. L’eventuale apprendimento di un linguaggio di program-
mazione dovrebbe essere concepito come un effetto secondario e collaterale di un processo che ne vede
l’impiego per svolgere attività libere e creative, per sollecitare la ricerca di soluzioni empiriche partendo da
quesiti posti in contesti reali. In altre parole bisogna fare del coding un’attività ludica.
Apprendimento e multicanalità
Un ragazzo che mostra passione verso i linguaggi di programmazione, così come verso qualsiasi altra
attività, non farà fatica a documentarsi e, addirittura, a imparare a programmare semplicemente rivol-
gendosi alla rete. I ragazzi sono abituati ad avere un rapporto con la multicanalità9, cioè con i molteplici
veicoli delle informazioni che oggi possono essere reperite attraverso migliaia di canali in tutte le lingue
20 © De Agostini Scuola
Coding a scuola
del mondo. L’Università di Pisa, per esempio, ha messo online da qualche anno un intero corso sulla
programmazione di app che è seguito da molti giovani10. Ma anche su YouTube, nel mondo editoriale
digitale e cartaceo, nei blog, nei forum, nelle specifiche app dedicate all’apprendimento, nelle scuole e
università di tutto il mondo, nei centri di formazione, si possono trovare informazioni e interi corsi per
imparare a programmare. I contenuti oggi sono ovunque e largamente diffusi in tutti gli ambiti discipli-
nari, compreso il coding. I giovani non sono estranei a questo mondo e non fanno fatica a reperire le
informazioni che servono, come dimostra il ragazzo di 17 anni di cui parliamo nel box seguente, che ha
imparato completamente da solo a programmare applicazioni per iPad.
© De Agostini Scuola 21
Coding a scuola
La costruzione di un diagramma di flusso permette di ragionare sulle procedure logiche da seguire senza
mettere subito mano alla costruzione di un oggetto. Se l’attività parte dalla costruzione di un diagramma
di flusso, possiamo poi scegliere con quale metodo e quale applicazione creare l’oggetto.
22 © De Agostini Scuola
Coding a scuola
Esiste un agevole terreno di incontro fra coding, interfaccia e gioco che è possibile proporre senza sco-
modare subito i linguaggi di programmazione e ottenendo risultati eccezionali. Si tratta di rendere “gio-
cabile” un argomento didattico attraverso la costruzione di un’interfaccia appropriata e l’impiego di una
struttura tipica dei linguaggi di coding come quella di controllo if–then–else.
Per svolgere questa attività possiamo impiegare applicazioni conosciute come Keynote e PowerPoint,
che non determinano lo spaesamento tipico di un linguaggio di coding. I risultati sono però molto simili
sotto diversi aspetti.
© De Agostini Scuola 23
Coding a scuola
Se affidiamo agli studenti la progettazione del gioco, il divertimento sarà assicurato. I ragazzi infatti
conoscono già le classiche strutture dei giochi tradizionali basati sulla narrazione (storytelling), fondati
sulla ricerca di indizi, partendo da un ragionamento o da semplici tentativi. Un modello del genere si può
mutuare anche per costruire semplici ma efficaci giochi con Keynote e PowerPoint. Di questi software si
possono utilizzare le potenzialità ipermediali, inserendo all’interno delle slide dei link che consentono di
navigare in modo non sequenziale tra i contenuti.
Immaginiamo di creare un gioco in cui si deve indovinare il titolo di un romanzo, raccogliendo indizi diver-
si (in quale ambiente si svolge, quali sono i personaggi ecc.) per tentativi. Creiamo innanzitutto una prima
slide sulla quale collochiamo gli elementi da scoprire. Assegniamo alla slide un tema; il primo potrebbe
riguardare i protagonisti del romanzo. Nascondiamo in questa slide degli oggetti che il giocatore dovrà
scoprire. La prima volta ovviamente procederà per tentativi, perché non ha alcun indizio sul romanzo.
Però appena scoprirà l’elemento giusto (nascosto nella slide), allora avrà accumulato un’informazione che
sarà utile per indovinare il titolo dell’opera.
Si va avanti così fino al punto in cui gli indizi dovrebbero essere sufficienti per indovinare il romanzo e
concludere il gioco.
Questa è la slide di partenza, contenente collegamenti multimediali. Le immagini dei personaggi vengono posizionate in delle
finestre e vicino a questi è posto un pulsante che indirizza l’utente a una slide di avanzamento nel gioco o a una slide di errore
appropriata. Questa informazione compare dopo aver cliccato sulla figura che secondo lui sarà quella giusta. Se (if) la scelta è cor-
retta, si andrà quindi (then) al livello successivo, altrimenti (else) si andrà alla slide che segnala l’errore e si sarà ricondotti all’inizio o
a eventuali informazioni di rinforzo didattico.
24 © De Agostini Scuola
Coding a scuola
La diapositiva di errore può essere una sola, collocata alla fine di tutti i percorsi errati. Contiene un pulsante che consente di tornare
ogni volta al punto di partenza, cioè all’ultima diapositiva visionata.
© De Agostini Scuola 25
Coding a scuola
giochi che vengono realizzati trascinando al suo interno oggetti grafici e attribuendo loro delle proprie-
tà. Può essere impiegato in fase preliminare, per ragionare sulle connessioni logiche e sulla costruzione
dell’interfaccia.
Sulla sinistra la finestra che mostra le otto attività che è possibile creare con questa applicazione. Nello spazio di lavoro si possono
inserire elementi grafici, immagini, testi e si possono anche registrare contributi audio. Il tasto di condivisione consente di condivide-
re il proprio lavoro in modo che un altro utente al quale venga comunicato l’indirizzo lo possa scaricare sul proprio iPad per giocare
o per modificarlo.
26 © De Agostini Scuola
Coding a scuola
I blocchi programmabili
Quello di Scratch11 è un ambiente molto noto per la programmazione in ambito didattico, che fa riferimento,
come il Lego, alle teorie costruttiviste dell’apprendimento. Di solito con questo ambiente i ragazzi creano storie
perché possono animare oggetti sullo schermo tagliando e incollando set di istruzioni che prevedono l’impiego
anche di sofisticate strutture di controllo e ripetizioni. Il linguaggio di Scratch è grafico e a oggetti. Lo studente
ha a disposizione dei blocchi che si incastrano fra loro come le tessere di un puzzle. Ciascun blocco contiene
una istruzione di programmazione, perciò la successione articolata dei blocchi fra loro costituisce il set di istru-
zioni che un dato oggetto deve eseguire. Tuttavia non tutti i blocchi sono incastrabili con gli altri: si limitano così
gli errori strutturali di programmazione. In questo modo lo studente si concentra sugli effetti delle istruzioni e
sulla loro successione logica. Dato che gli oggetti possono interagire fra loro sullo schermo, si possono creare
situazioni legate alle relazioni che si stabiliscono tra gli oggetti, creando anche vere e proprie storie animate.
L’ambiente di Scratch
Scratch è concepito come una Web app da impiegare online, ma anche come applicazione per sistemi
operativi Windows, Os e Linux e per i dispositivi mobili Android e iOS. Gli oggetti si chiamano sprite, come
nel linguaggio flash, creato da Macromedia e poi passato ad Adobe. Agli sprite possono essere assegnate
delle azioni attraverso la scheda “Script”. Inoltre le applicazioni realizzate con Scratch sono a codice aper-
to: ciò significa che chiunque può utilizzare le applicazioni realizzate come base per nuovi sviluppi e nuovi
esperimenti. Per esempio questa applicazione è stata creata da un utente di Scratch, ma noi siamo potuti
entrare nel codice perché possiamo anche creare un derivato, cioè un’altra applicazione basata sulla prima.
Per chi volesse approfondire il tema dello sviluppo in ambienti che utilizzano la filosofia dei “blocchi” può
utilizzare anche Blockly (https://blockly-games.appspot.com/), un’applicazione Web di Google.
11 http://scratch.mit.edu/
© De Agostini Scuola 27
Coding a scuola
Questa è la stessa applicazione di prima, mostrata dal punto vista dell’utente che ne vuole usufruire. Il pulsante “Guarda dentro” ci
permette di vedere gli script dell’applicazione. L’applicazione è inserita in un contesto social attraverso il quale possiamo inserire dei
commenti, condividere l’applicazione, esplorare migliaia di applicazioni realizzate da altri utenti sparsi per il mondo.
28 © De Agostini Scuola
Coding a scuola
I tre sprite disposti sulla pagina: il cliente chiede l’acqua e solo uno dei due ragazzi risponde. Lo script associato al cliente è mostrato
sul lato destro. Quando si fa clic sullo sprite (cioè sul ragazzo), il ragazzo chiede a voce alta l’acqua, quindi aspetta un secondo e
infine invia un messaggio di richiesta dell’acqua.
Quando il ragazzo abilitato a soddisfare la richiesta riceve il messaggio di richiesta dell’acqua, può rispondere: “Arriva subito”.
Quando l’altro ragazzo riceve lo stesso messaggio invece penserà: “Io non ho l’acqua”.
Nella sostanza, tutti ricevono lo stesso messaggio, ma solo uno può soddisfare la condizione posta. Natu-
ralmente questa è una struttura molto semplice che può essere anche scritta in altri modi, più complessi,
in grado di gestire richieste molto più avanzate. Per esempio, senza complicare eccessivamente le cose,
possiamo immaginare una struttura condizionale più articolata.
Prendiamo l’esempio mostrato prima nel box Un esempio di workflow multidisciplinare più complesso,
dove abbiamo immaginato di costruire un modello nel quale le rane mangiano gli insetti. Proviamo a
costruire quest’interazione : quando i due personaggi si avvicinano, la rana si ingrandisce mentre l’insetto
sparisce.
© De Agostini Scuola 29
Coding a scuola
Ecco lo script associato alla rana. Quando si fa clic sulla bandiera verde che rappresenta il play (l’inizio dell’interazione), la rana pren-
de posizione, si mostra e assume le sue dimensioni normali. A questo punto inizia un ciclo di ripetizione (loop o ciclo di repeat) che
implica due condizioni. La prima è che il ciclo si ripete fino a quando la rana non tocca il bordo dello schermo. Se tocca il bordo dello
schermo allora deve scomparire (istruzione “nasconditi”). La seconda condizione è che la rana continua a muoversi di 3 passi finché
non tocca l’insetto. Quando tocca l’insetto invia il messaggio “muori” a tutti gli sprite, dice: “Slurp!”, dà il comando di raddoppiare
le proprie dimensioni e crea un nuovo sprite (che sostituirà il precedente) uguale ma con le nuove dimensioni.
Lo script associato all’insetto è composto da due parti. Nella prima l’insetto prende posizione sullo schermo e, attraverso il ciclo “per
sempre” (loop o ciclo di repeat), compie continuamente un tragitto. La seconda parte invece serve per stabilirne il comportamento
quando viene toccato dalla rana. Ciò avviene quando riceve il messaggio “muori”. In tal caso si rimpicciolisce fino a scomparire.
Poi l’insetto compie un percorso, mentre è invisibile, per ricomparire in un altro punto dello schermo e ricominciare con il suo ciclo
finché non riceverà di nuovo il messaggio “muori”.
30 © De Agostini Scuola
Coding a scuola
Ecco tre esempi che si possono esplorare e che mostrano tre diversi tipi di interazione e di coding.
• Videogame: colpire un animaletto prima che sparisca dallo schermo. Riferimento: http://scratch.mit.
edu/projects/10128368/ Codice: http://scratch.mit.edu/projects/10128368/#editor
• Storytelling: una visita virtuale del Media Lab del Massachusetts Institute of Technology. Riferimento:
http://scratch.mit.edu/projects/11804271/ Codice: http://scratch.mit.edu/projects/11804271/#editor
• Animazioni: vesti la bambina Tera. Riferimento: http://scratch.mit.edu/projects/11656680/ Codice:
http://scratch.mit.edu/projects/11656680/#editor
L’ambiente di Scratch si può utilizzare anche su iPad con Scratch Jr. Molto più elementare dell’applicazione nativa, contiene però un
numero elevato di istruzioni che permettono di creare soprattutto animazioni di storytelling. Si possono anche creare ambienti e
personaggi utilizzando la fotocamera e il disegno a mano libera.
12 Sito di riferimento: livecode.com; sito di di riferimento italiano: livecodeitalia.it; guida in lingua italiana: http://
www.maxvessi.net/pmwiki/pmwiki.php?n=Main.GuidaALivecode; corso in italiano: http://www.didacta.com/
corsi_livecode.html
© De Agostini Scuola 31
Coding a scuola
questo ambiente impiega un’interfaccia grafica che si basa su una struttura di card (schede sulle quali
possono essere disposti più oggetti), a loro volta aggregate in stack (“pile” di schede).
La programmazione in ambienti come LiveCode avviene impostando le caratteristiche degli oggetti che
si possono inserire nella card: foto, filmati, box di testo, pulsanti, elementi grafici di qualsiasi tipo.
Agli oggetti si possono associare degli script per regolarne il comportamento. Con gli script, per esempio,
posso decidere se gli oggetti sono sensibili al passaggio del mouse, o al clic. Sempre grazie a uno script si
può applicare come attributo un’istruzione condizionale a un oggetto. Così, facendo clic su un oggetto,
si esegue il programma a esso associato.
Però gli oggetti non reagiscono solo al “clic” del mouse. Quando viene usato per programmare applica-
zioni per i tablet o gli smartphone, LiveCode consente di gestire i comandi touch, adattandosi al device
in cui sta girando. Un pulsante potrebbe reagire all’ingresso del mouse nella sua area e in questo caso
potrebbe contenere un’istruzione come questa: “Se il mouse passa su di me, oppure il dito effettua un
‘tap’ prolungato, fai comparire una finestra di dialogo che spiega cosa succederà se verrò premuto defi-
nitivamente”. Quando il mouse uscirà dall’area di quel bottone o il dito allenterà la pressione, entrerà in
azione un’altra istruzione: “Fai scomparire il messaggio che ho appena visualizzato”.
on mouseUp
go to card “Informazioni”
end mouseUp
Il pulsante raccoglie il messaggio “mouseUp” e farà apparire sullo schermo una nuova scheda (card)
denominata “Informazioni”.
Se invece facciamo lo stesso clic fuori da quel bottone, potrebbe non accadere nulla. Tuttavia, se voles-
simo raccogliere tutti i messaggi di mouseUp che non hanno un esito nella card, per informare l’utente
che ha sbagliato posizione, allora dovremmo inserire uno script al livello più alto possibile della gerarchia.
Questo livello è quello dello stack, cioè della pila che raccoglie un insieme di card. A livello di stack scri-
veremo:
on mouseUp
answer: “Spiacente! Hai fatto clic in uno spazio vuoto non interattivo!”
end mouseUp
Il comando “answer” inserito in questo script farà apparire sullo schermo la frase di scuse.
32 © De Agostini Scuola
Coding a scuola
In questo esempio, premendo il bottone “Comincia a scrivere la storia”, viene richiesto all’utente di inserire alcune parole che l’ap-
plicazione userà per comporre il racconto. Nella finestra a destra appare il codice che è stato associato al bottone: raccogliendo le
parole digitate il programma le inserisce in apposite caselle di testo nella card successiva.
© De Agostini Scuola 33
Coding a scuola
Partendo da un pulsante, LiveCode cercherà via via sempre più in alto, passando dalla card, finché troverà
l’handler (istruzione) in questione. E se non lo trovasse? Pazienza, vuol dire che quel messaggio non deve
essere raccolto.
Da notare, in questo script di LiveCode, le variabili globali (il cui contenuto persiste in tutto lo stack), sono dichiarate dalla funzione
“global”. Così “global NumeroAutori” indica che è stata creata la variabile globale NumeroAutori. La riga “put empty into Nuo-
vaSelezione” vuol dire che si è svuotata la variabile NuovaSelezione. Invece “If field Consegne contains ‘casuale’ then” significa
che se il campo di testo denominato “Consegne” contiene il termine “casuale”, allora si compiranno una serie di operazioni sotto
in elenco.
34 © De Agostini Scuola
Coding a scuola
Su uno sfondo abbiamo collocato i due oggetti: un filmato di animazione (ragazzo) e l’immagine di una ragazza (cliente). Il filmato
di animazione nello script si chiama player 1.
Ecco come possiamo programmare gli script. Ci collochiamo nella gerarchia dei messaggi a livello del
cliente (l’immagine della ragazza) a cui associamo questo script.
on mouseUp
global Richiesta
answer “Vorrei dell’acqua per favore!”
put “acqua” into Richiesta
Verifica
end mouseUp
Questo script ci dice che abbiamo dichiarato una variabile globale che si chiama “Richiesta”. Un variabile
globale è un contenitore che conserva dei dati che possono essere recuperati da qualsiasi script associato
a qualsiasi oggetto. Lo script quindi invia un messaggio che si chiama “Verifica”. Questo messaggio dovrà
essere raccolto da uno dei ragazzi del lido.
A livello di stack inseriamo questo script che raccoglie il messaggio “Verifica”.
© De Agostini Scuola 35
Coding a scuola
on Verifica
global Richiesta
if Richiesta contains “acqua” then
answer “Arrivo!”
start player 1
end if
end Verifica
Lo script controlla il contenuto della variabile globale “Richiesta”: se contiene la parola “acqua” allora
potrà avviare il filmato di animazione che mostrerà il ragazzo recarsi dal cliente.
36 © De Agostini Scuola
Coding a scuola
L’interfaccia di Hyperstudio: abbiamo collocato nella card l’immagine di un tapiro e quindi abbiamo creato un pulsante che abbiamo
chiamato “Ascolta il suo verso”. Al pulsante è stato associato un suono tramite le opzioni della sezione Actions. Sulla parte destra
si può notare l’utile libreria di immagini ed elementi grafici di Hyperstudio.
Dal punto di vista del coding è possibile creare dei set di comandi molto complessi associando le diverse funzioni rese disponibili
dall’ambiente di sviluppo. Per esempio la funzione GhostWriter permette di fare comporre automaticamente al programma un testo
in un oggetto specifico.
© De Agostini Scuola 37
Coding a scuola
38 © De Agostini Scuola
Coding a scuola
forza di C e Objective-C senza avere i limiti della compatibilità con C. Le sue caratteristiche sono la
semplicità d’utilizzo e il suo non essere verboso come invece accadeva con il precedente linguaggio
di programmazione Objective-C. Ma il confronto non si limita al linguaggio di casa Apple, Swift
infatti raccoglie i punti di forza dei linguaggi più usati in ambito informatico sia lato app che lato
Web (alcuni esempi sono Python, Ruby e C). Da questi linguaggi, che sono studiati dalla maggior
parte degli sviluppatori, eredita la struttura semplificata dei linguaggi di scripting. Un esempio è la
gestione della memoria che, pur mantenendo un approccio semplice simile al garbage collector di
Java, possiede la stessa profondità e qualità che contraddistingue i linguaggi della famiglia C. Ma
Swift non guarda solo i concorrenti, ha anche occhio per il futuro. Introduce infatti concetti nuovi
come la programmazione funzionale, che potrebbe costituire un nuovo caposaldo della program-
mazione, così come è avvenuto con l’introduzione della programmazione a oggetti”.
© De Agostini Scuola 39
Coding a scuola
La Casa degli insegnanti è un’associazione torinese molto conosciuta, composta da docenti che a partire
dagli anni Ottanta hanno introdotto nelle classi la robotica e il coding come efficaci strumenti didattici
non solo in campo informatico e matematico, proponendo una visione molto più ampia dell’impiego dei
linguaggi di programmazione.
Per diffondere la cultura della robotica e della programmazione, la Casa presta i kit Lego Mindstorms e
Lego WeDo alle scuole che non hanno fondi immediatamente disponibili per acquistarli, in modo che gli
insegnanti possano avviare subito degli esperimenti e comprendere la validità della proposta educativa
prima di far investire del denaro all’istituto. Allo stesso tempo la Casa organizza corsi di formazione a ri-
chiesta delle scuole o di gruppi di insegnanti o di altri enti educativi. Le esperienze in questo campo sono
ormai innumerevoli e i risultati ottenuti molto interessanti, a parte il fatto che per i bambini rappresenta
ovviamente un’attività motivante e coinvolgente. I siti di numerose scuole documentano le attività della
Casa, che collabora anche con la Scuola di Robotica di Genova (http://www.scuoladirobotica.it), associa-
zione ed ente formatore attualmente tra i più attivi in questo campo a livello nazionale e internazionale.
I kit Lego
Uno degli strumenti più utilizzati per la robotica didattica è il Lego. In questo caso i robot sono costruiti
soprattutto con i kit Lego Mindstorms e Lego WeDo. I kit Lego per la robotica però non comprendono
solo mattoncini e pezzi speciali tipo quelli del Lego Technics, ma anche motori e sensori e, soprattutto,
il “mattoncino programmabile”, praticamente un minicomputer dotato di microprocessore e quindi di
un linguaggio di programmazione a icone, molto semplice da utilizzare ma molto versatile.16 La Lego,
nota per aver creato i famosi mattoncini, è stata la prima azienda a introdurre kit di robotica seguendo i
progetti di Mitchel Resnick, docente che si occupa di ricerca nel campo dell’apprendimento al Media Lab
del Massachusetts Institute of Technology (http://web.media.mit.edu/~mres/).
I docenti che impiegano la robotica in classe utilizzano anche linguaggi di programmazione specifici nati
proprio per introdurre il coding in campo educativo, come Logo e Scratch. Questi linguaggi permettono
di controllare degli oggetti che si muovono e compiono azioni a schermo, in base a determinati set di
istruzioni che vengono impartite dagli studenti. Queste istruzioni possono essere a riga di comando op-
pure oggetti grafici che si incastrano fra loro come tessere di un puzzle.
Per un docente è importante capire il valore di queste diverse esperienze e degli ambienti di programmazio-
ne che le sottendono, come, per esempio, comprendere la differenza fra costruire un robot e programmare
oggetti a schermo, anche se, in entrambi i casi, si tratta sempre di impiegare un linguaggio di coding.
40 © De Agostini Scuola
Coding a scuola
© De Agostini Scuola 41
Coding a scuola
La palla robotica Sphero può essere controllata mediante un linguaggio di programmazione molto simile
al Basic. Digitando le righe di comando Sphero nell’applicazione Sphero MACROLAB, la palla compie
le operazioni programmate. Con questo strumento i ragazzi possono applicare il coding a un oggetto
ludico come una palla e contemporaneamente possono ricavarne degli insegnamenti nel campo della
matematica, della fisica, della scrittura e dell’ottica. Com’è possibile che una sfera robotica programma-
bile possa interessare cinque ambiti disciplinari, alcuni dei quali così distanti fra loro?
Quando un insegnante rappresenta dei poligoni, traccia delle linee su un piano cartesiano: così un triangolo
è individuato dai suoi tre vertici, che sono il punto di incontro di tre segmenti. Proviamo a impiegare Sphero
per andare oltre i concetti di vertice utilizzando il “linguaggio” degli angoli per rappresentare un triangolo.
Obiettivi
Con il nostro esempio gli studenti imparano:
• a disegnare figure geometriche utilizzando il linguaggio degli angoli invece di quello dei segmenti;
• a determinare la direzione di movimento in base all’angolo stabilito da 0 a 360 gradi;
• a scrivere un programma nella corretta successione logica per disegnare figure geometriche (nel
nostro caso un triangolo);
• a calcolare i colori in base numerica secondo la composizione RGB;
• a creare successioni di colori;
• a costruire una sceneggiatura e una narrazione in cui la palla è un soggetto;
• a giocare sulle riprese e sul montaggio per creare degli effetti speciali;
• a girare, montare e condividere un filmato.
42 © De Agostini Scuola
Coding a scuola
Questa figura mostra come il linguaggio di Sphero sia fondato sugli an-
goli. Il percorso di Sphero è infatti determinato dai valori angolari che si
dovrebbero usare per dirigerlo in una particolare direzione (questo schema
mostra solo incrementi di 90 gradi, ma si possono stabilire quanti angoli
si vuole).
© De Agostini Scuola 43
Coding a scuola
La finestra del comando Roll. Speed è la velocità rapportata percentualmente alla velocità massima di Sphero. Heading è il valore
della direzione angolare: impostato a 0 la palla disegnerà un segmento. Delay è il tempo di attesa necessario affinché la palla si
riassesti dopo ogni azione complessa.
Dunque impostiamo il nostro programma, affinché la palla disegni un triangolo. Noteremo che i suoi
angoli si presentano po’ arrotondati. Questo accade perché Sphero conserva dell’energia cinetica
quando raggiunge il vertice di ogni angolo. In altre parole, conserva un po’ di velocità e non cambia
direzione né riaccelera immediatamente. Per evitare questo effetto abbiamo inserito i due comandi
Stop e Delay in ciascuno dei comandi Roll. Questi comandi fermeranno Sphero e lo faranno attendere
prima di passare alla tappa successiva. Un altro parametro configurabile è quello del colore che Sphero
può assumere nei suoi itinerari: può essere regolato impostando le percentuali dei colori di sistema
rosso, verde e blu.
44 © De Agostini Scuola
Coding a scuola
NB: il calcolo deve essere effettuato tenendo conto dei millisecondi stabiliti e della distanza per-
corsa (lati del triangolo), che deve essere misurata anche attraverso dei segnaposto fra i punti di
partenza e di arrivo per ogni lato. Inoltre bisogna stabilire la scala di misurazione: per le distanze
percorse sarebbe assurdo calcolare la velocità in km orari, come se fosse un’auto, ma bisognerebbe
utilizzare i metri al secondo.
© De Agostini Scuola 45
Coding a scuola
Come si imposta uno storytelling con una palla manovrabile a distanza e programmabile? Quali suggeri-
menti possiamo fornire in tal senso? Ecco un workflow di base che consente, con opportune variazioni e
contestualizzazioni, di realizzare tutte le narrazioni possibili che hanno come protagonista Sphero.
Innanzitutto bisognerà scegliere un carattere antropomorfo per Sphero. Infatti la palla dovrà diventare
a tutti gli effetti un attore dalle caratteristiche “umane”. A questo punto bisognerà immaginare una si-
tuazione in cui il personaggio di Sphero può agire per determinare un cambiamento. Dovremo pensare
all’azione attraverso la quale Sphero modificherà la situazione esistente. Il cambiamento potrà essere di
tipo positivo (si risolve una situazione intricata nella quale qualcuno soffre) oppure negativo (l’intervento
di Sphero crea il problema che ci aiuta a riflettere). In ogni caso il cambiamento dovrà condurre a una
riflessione finale di carattere etico.
In seguito si formeranno squadre di tre o quattro persone per ciascuna storia, ciascuna delle quali ide-
erà la ”sceneggiatura”, anche per sommi capi. Uno studente collegherà il tablet o lo smartphone a un
televisore HD o a un proiettore per visualizzare e monitorare i movimenti di Sphero. A questo punto gli
studenti programmeranno e metteranno a punto il percorso di Sphero per ciascuna scena.
Il linguaggio di programmazione di Sphero ci consentirà anche di controllare la velocità della palla, che è
modificabile anche con un’applicazione di montaggio video come iMovie per OS. Si potranno anche rea-
lizzare gli effetti necessari per l’azione: cadute, salti, curve. La storia verrà costruita in sede di montaggio:
ciò vuol dire che si proveranno le scene in sequenza, una dopo l’altra, montando direttamente le riprese
riuscite e scartando quelle che presentano errori. Se una ripresa non andrà bene – tutti la potranno ve-
dere dal televisore – verrà subito rigirata e, allo stesso modo, anche le righe di codice che non saranno
ottimali potranno essere subito corrette.
Alla fine si metterà a punto il filmato e lo si pubblicherà.
46 © De Agostini Scuola
Coding a scuola
© De Agostini Scuola 47
Coding a scuola
Objective-C
Linguaggio per la programmazione a oggetti derivato da C, con il quale mantiene una piena compatibi-
lità.
Oggetto
Nell’ambito della programmazione un oggetto è una “raccolta” di dati e procedure che agiscono sui dati.
Le procedure vengono indicate con il termine “metodi”.
Problem solving
Termine che indica il processo cognitivo messo in atto per analizzare un problema ed escogitare una
soluzione.
Python
Linguaggio di programmazione orientato agli oggetti apprezzato per la semplicità della sua sintassi. Le
sue istruzioni possono essere interpretate in molti sistemi operativi differenti basati su Unix, Windows o
Mac OS.
Robotica
Branca dell’ingegneria che sviluppa metodi che permettano a un robot di eseguire compiti specifici
riproducendo il lavoro umano. In questa disciplina ne confluiscono altre sia di natura umanistica, come
linguistica e psicologia, sia di natura scientifica, come biologia, fisiologia, automazione, elettronica, fisica,
informatica, matematica e meccanica.
Ruby
Ideato nel 1993 dal giapponese Yukihiro Matsumoto, Ruby è stato il primo linguaggio di programmazio-
ne a oggetti sviluppato in Oriente abbastanza popolare da essere usato anche in Occidente per progetti
di rilievo.
Script
Programma scritto con uno specifico linguaggio di programmazione.
Store
Piattaforma Internet che permette agli utenti di scaricare e acquistare applicazioni. Le applicazioni pos-
sono essere gratuite o a pagamento, e possono essere scaricate direttamente su un dispositivo mobile
(tablet o smartphone) o su un computer.
Struttura di controllo
Particolare istruzione di un linguaggio di programmazione che serve a specificare se, quando, in quale
ordine e quante volte devono essere eseguite le altre istruzioni che compongono il codice.
48 © De Agostini Scuola
Coding a scuola
Variabile
Insieme di dati situati in una porzione di memoria destinata a contenerli e modificabili nel corso dell’e-
secuzione di un programma. Una variabile è caratterizzata da un nome composto da una sequenza di
caratteri e cifre.
Web app
Abbreviazione di Web application (applicazione web) che indica un’applicazione accessibile o fruibile
attraverso una rete (Intranet o Internet).
Widget
Componente di un’interfaccia grafica che fornisce l’accesso a una particolare funzione o informazione. Il
termine widget viene spesso utilizzato anche per indicare piccole applicazioni da scrivania quali meteo,
calendario, calcolatrice, dizionario, ora e fusi orari ecc.
© De Agostini Scuola 49