#llats18 – Next live event, lots of feedback: linguistic, physics and more

Live Event

Tomorrow, Monday 24 at 20:00, we’ll have the next live event. It will be about Papert’s concept of “syntonic learning”, the inherent differential nature of Papert’s circle, LibreLogo as a physics lab.  As we did last Friday, we’ll open the room at 19:30, so that, while I’m preparing things, you have an additional opportunity to pose questions.

Feedback

Linguistic –  not only math

Fabrizio made an interesting remix of the limericks exercise I proposed in lesson 3: in slide 12 you have the original exampl of Papert, in slides 16-21 our LibreLogo example. Fabrizio made a version for writing English limericks – download the code here. Here you have the output of three consecutive runs:

Random English computer limericks

 

Phisics

“aginoudi” asked in Reddit:

I teach physics in a junior high school and I am very much interested to include coding in my teaching practice in order to inspire my pupils. I am looking for ideas!!!

When asked, aginoudi told us that the students are 12-18. For those that are interested in this topic, first of all I suggest to read a very interesting paper by Bruce L. Sherin: “A comparison of programming languages and algebraic notation as expressive languages for physics” (International Journal of Computers for Mathematical Learning 6: 1–61, 2001).

It is worth the effort to read it because the idea of seeing code and mathematical formulas as different ways to describe the same physical concepts throws a different light on the whole coding issue. Similarly, in the last live event, we showed as in Turtle Geometry geometrical figures are represented by well determined pieces of code, that is, a fragment of code can be true mathematical object.

In the next live event we will discuss how, starting with the simple Papert’s circle that kids may be discover by themselves, we will find ourselves in a Physics lab.

These concepts are exposed in lesson 10. In particular, in slides 16-24 you have some exercises reproducing simple physical problems, at the secondary school level.

Here you can watch the solution for a mass (the Turtle 🙂 ) hanging from a spring. The simulation takes into account also a friction effect (proportional to velocity). In this example we have added an horizontal component so that we get the motion plot with time.

Hanging from a spring with time

All the examples discussed in the slides can be downloaded to let you experiment with them. Here you have the link: iamarf.ch/mooc/logo-odt-files.zip

Art

Hanna wrote that she is interested in art, creativity and art. We have something to say. Just this for now…

Starry night with Logo
A Logo version of Starry Night

La risposta definitiva al quesito di Marta

Il 6 novembre 2016, alle 22:03, ricevevo da una studentessa, Marta Veloce,  una decina di pagine di riflessioni in equilibrio fra esplorazione estetica e ragionamento geometrico. Lo scritto si concludeva con la formulazione di una congettura sulla chiusura delle figure geometriche emerse dalla sua esplorazione. Non era un compito assegnato ma un’iniziativa spontanea. E non è stato l’unico caso. Capita con una certa frequenza che gli studenti mi inviino considerazioni spontanee o approfondimenti, delle volte nella forma di testi al di fuori delle normali consegne, altre ad arricchire gli elaborati richiesti in vista degli esami.

Dedico quindi, per inciso, questo articolo a quei colleghi che sanno parlare solo in termini negativi delle “nuove generazioni”. Io dissento fermamente e mi pare di avere elementi molto solidi a favore di una visione completamente diversa, molto più ottimista. Del resto, va di moda parlare male, un po’ di tutto. Mi oppongo recisamente a questo triste e improduttivo costume.

Dunque Marta mi ha inviato il suo testo durante la prima edizione del Laboratorio di Tecnologie Didattiche a Scienze della Formazione Primaria il 6 novembre 2016. Il testo nella sua forma originale può essere letto nella sezione 10.2 del Piccolo Manuale di LibreLogo (7.2 MB). Qui voglio raccontare la storia, chi vuole capire le questioni matematiche può andare a leggere il capitolo 10 del manuale, in particolare la sezione 10.4.

In sostanza Marta disegna una casetta, tipico passaggio iniziale nel percorso di apprendimento di Logo.

FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 30
FORWARD 100
RIGHT 120
FORWARD 100

mar-1

Marta si mette a giocare con questa casetta, come farebbe un bambino incuriosito e tranquillo – mostrando con questo di avere assimilato uno degli aspetti fondamentali che cerchiamo di evidenziare nel laboratorio. Fa ripetere il disegno più volte, scoprendo così che ogni volta viene disegnata un nuova casetta che tuttavia non si distingue, perché perfettamente sovrapposta alla precedente. Ma se dopo le seleziona e le sposta con il mouse, ecco che come in un gioco di prestigio si forma un villaggio. Insomma il fatto interessante è che Marta sperimenta con Logo ma sperimenta anche l’atteggiamento che immagina un giorno di indurre nei suoi bambini, mutatis mutandis.

Non paga di questa prima esplorazione ne prova un’altra, introducendo una deviazione arbitraria dopo avere disegnato una casetta e ripetendo il processo un numero indefinito di volte. Questo si realizza aggiungendo un’istruzione di deviazione, ad esempio RIGHT 30, dopo avere disegnato la casetta e ponendo il tutto in un ciclo REPEAT, come si vede dal codice seguente dove abbiamo evidenziato le nuove istruzioni:

REPEAT [
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 30
FORWARD 100
RIGHT 120
FORWARD 100
RIGHT 30
]

A questo punto si lancia in una serie di prove e considerazioni geometriche, osservando cosa succede e cambiando l’angolo di deviazione finale – 30, 45, 60 ecc. – meravigliandosi per la varietà di forme che emergono.

mar-7
Questo è il disegno che viene con una deviazione finale di 70°

A furia di tentare nuove configurazioni si rende conto che la Tartaruga da principio svolge il disegno ma da un certo punto, quando questo ha raggiunto una sua naturale simmetria, lo ripercorre all’infinito, senza aggiungere più nulla di nuovo. E qui si pone la domanda: esiste una regola secondo la quale si possa prevedere quand’è che il disegno sarà completato?

Gradi rotazione rispetto alla verticale Numero di volte che il programma deve riavviarsi per tornare a posizione
”home”
15 24
30 12
60 3
70 36
100 9
120 6
240 6

Dopo avere compilato questa tabella conclude Marta:

Purtroppo non sembra emergere alcuna relazione. . . . E qui il pensiero si sofferma e prende respiro… Forse potremmo fare altre ipotesi?

Il mio dovere primario, nel (temporaneo) ruolo di professore universitario, è quello di rispondere agli studenti. Questo dovere supera quello della ricerca e supera anche la semplice “didattica erogativa”, in una scala di valore, perché la domanda difficile di uno studente rappresenta il premio di un percorso dove ricerca e insegnamento hanno innescato una scintilla creativa nella mente di un giovane. Non c’è niente di più alto e di più desiderabile.

Domande come quella di Marta sono destabilizzanti perché è difficile rispondere. A volte la risposta non è prontamente disponibile. Sono domande vere, domande di ricerca, per tentare di rispondere alle quali occorre onestà intellettuale e umiltà. In classe discutemmo approfonditamente la questione e spiegai subito che la soluzione vera, quella matematica io non l’avevo. Una soluzione matematica è quella che consente di risolvere il quesito in tutte le condizioni possibili. È una soluzione generale. In quella circostanza sviluppai una risposta che consentiva di rispondere al quesito di Marta ma solo nei casi da lei esplorati e esposti nella tabella alla fine del suo elaborato. Si trattava cioè di una soluzione euristica, ovvero una soluzione basata su ragionevoli intuizioni ma non ancora sostenuta da un’argomentazione teorica esaustiva. La risposta, ancorché insufficiente, aveva tuttavia valore didattico perché ci consentiva di mettere a fuoco il significato di verità matematica, tramite il concetto di soluzione euristica.

Successivamente, durante il corso di perfezionamento “Le competenze digitali nella scuola”, attivato presso il Dipartimento di Scienze della Formazione e Psicologia dell’Università di Firenze nell’anno accademico 2016/2017, sotto la direzione della collega Ranieri, uno dei corsisti, Alberto Averono riprese in mano la questione proponendo una soluzione informatica. L’idea era quella di fornire alla Tartaruga la capacità di riconoscere il proprio stato iniziale, in modo da potersi fermare esattamente in quel punto, a partire dal quale avrebbe solo potuto ripetere il percorso fatto. Una soluzione del genere può essere generata per via software, introducendo delle istruzioni che consentano di confrontare lo stato corrente della Tartaruga con quello iniziale. Queste considerazioni hanno consentito di mettere in luce due fatti molto importanti: il concetto di “stato” di un sistema, la Tartaruga in questo caso, e la nozione di numero digitale, quale pallida approssimazione dei numeri matematici. Questi fatti sono stati analizzati nella sezione 10.3 del Piccolo Manuale di LibeLogo. In ogni caso, anche se l’approfondimento di Alberto si è rivelato didatticamente assai proficuo, non ci ha fornito la soluzione matematica che desideravamo.

E infine è arrivata anche questa ma è stato necessario approfondire la teoria, cosa che non mi sarei mai aspettato di dover fare in queste circostanze. Non mi sarei messo a studiare la Turtle Geometry se non avessi ricevuto questo stimolo, perché cerco di stare attento a offrire conoscenze che abbiano qualche probabilità di essere utilizzate nel lavoro di insegnante. Ma una sola domanda è sufficiente a cambiare le carte in tavola e, a posteriori, riconosco che i frutti sono stati copiosi, anche al di là di quanto sto qui scrivendo.

Ebbene, le questioni affrontate da Marta in sostanza sono quelle che si sono posti Abelson e diSessa nel primo capitolo del loro trattato sulla Turtle Geometry (MIT Press, 1986). Nella sezione 10.4 della versione 1.1 del Piccolo Manuale di LibreLogo ho descritto in dettaglio i tratti essenziali della soluzione generale del problema di Marta, fornendo anche il codice per attuarla.

La soluzione del quesito si riduce a una regola assai semplice ma si basa su tre teoremi e un lemma. Il lettore non matematico, la norma qui, non si deve spaventare. Noi qui non ripercorriamo le dimostrazioni di questi teoremi, dovremmo divagare troppo. Per capire il significato di un teorema non occorre seguirne la dimostrazione, questa serve “solo” a garantire che il teorema sia vero: un lavoro fondamentale, ed è il matematico che si prende la briga di farlo. Talvolta le dimostrazioni di teoremi apparentemente semplici sono incredibilmente complesse, e poco hanno a che vedere con la comprensione del senso del teorema. Qui enunciamo i teoremi e descriviamo i concetti che vi compaiono perché questo serve a comprendere meglio il senso della Geometria della Tartaruga e del suo impiego didattico.

Teorema del percorso chiuso: La deviazione totale lungo un qualsiasi percorso chiuso è un multiplo intero di 360.

Questo teorema fornisce il contesto generale nel quale si inquadra la soluzione al nostro problema.

Il numero intero, che esprime il multiplo in questione si chiama “numero di rotazioni” (rotation number). Lo chiamiamo qui R.

Per deviazione totale (total turn) si intende la somma algebrica di tutti gli angoli di cui la Tartaruga ha ruotato lungo il percorso. Ad esempio il frammento di codice RIGHT 20 FORWARD 10 LEFT 5 produce una deviazione totale di 15° perché la somma algebrica delle deviazioni è pari a 20-5.

Un percorso si intende che sia chiuso qualora la Tartaruga si ritrovi esattamente nello stato da cui era partita. È bene capire che ciò non significa solo raggiungere il punto di partenza ma arrivarci anche con la medesima orientazione perché, ricordiamo, nella Geometria della Tartaruga conta lo “stato” che comprende sia posizione che direzione della Tartaruga. Il concetto di stato è fondamentale per tutte le scienze ed è importante approfittare di questa occasione per proporlo in modo semplice ai bambini.

Aiutiamoci con un disegno per comprendere il senso di questo teorema.

percorsi

Quali sono i percorsi aperti? Provate a immaginare i valori R dei percorsi chiusi. In fondo al post trovate la soluzione.

Teorema del percorso chiuso semplice: La deviazione totale lungo un qualsiasi percorso chiuso semplice è di 360°.

Qui, oltre alle definizioni precedenti va aggiunta quella di percorso chiuso semplice, che è un percorso senza alcun incrocio. Il segno è determinato dal verso di rotazione: positivo il senso orario, negativo quello antiorario.

Questo teorema è un caso particolare del precedente ed è quello che serve, ad esempio, per il calcolo degli angoli di deviazione nel disegno di un poligono regolare: essendo la deviazione totale sempre pari a 360°, dato il numero N di lati del poligono, e il fatto che tutte le singole deviazioni sono eguali fra loro, ciascuna di esse risulterà pari 360/N.

Teorema di chiusura di una procedura POLY: Un percorso tracciato da una procedura POLY si chiude esattamente quando la deviazione totale raggiunge un multiplo di 360°.

Ecco, qui Abelson e diSessa si pongono sostanzialmente la stessa domanda di Marta, ma a proposito di una “procedura POLY”, anziché di una casetta. Vediamo cos’è una procedura POLY e qual è il nesso con le casette di Marta. Una procedura POLY è del tipo

TO POLY LATO ANGOLO
REPEAT [
FORWARD LATO
RIGHT ANGOLO
]
END

oppure del tipo

TO POLY LATO ANGOLO
FORWARD LATO
RIGHT ANGOLO
POLI LATO ANGOLO
END

Le due versioni differiscono unicamente per il fatto che la prima usa il costrutto
REPEAT mentre la seconda impiega la ricorsione. È utile osservare che, dei due parametri richiesti da POLY, il primo, LATO, determina solo la scala del disegno, mentre il secondo, ANGOLO, determina la forma della figura. È su questo parametro che ci concentremo quindi nel seguito. Il parametro LATO può essere utilizzato liberamente per aggiustare la scala della figura ma non influenza in alcun modo la sua forma né, di conseguenza, la questione della chiusura della medesima.

Qui richiamo l’attenzione sul come un matematico non esiti a enunciare e dimostrare un teorema fra i cui elementi compare un frammento di codice, quale è POLY. Questo lo dico a coloro che amano dividere il mondo in pezzi: il coding non serve ma occorre concentrarsi sui fondamentali, matematica ecc. Sono atteggiamenti superficiali, dannosi e francamente irritanti.

Vediamo alcuni esempi realizzati con la procedura POLY, dove sotto ad ogni disegno è riportato il valore della variabile ANGOLO con cui è stato ottenuto.

poly1

Si invita il lettore a copiare uno dei semplici codici di POLY e a sperimentarli in LibreLogo.

Facendo girare la procedura POLY, la Tartaruga non si ferma dopo avere disegnato la figura ma la ripassa all’infinito perché è priva di un criterio di stop. Ma quand’è che la figura si chiude, nel senso che viene completata? Questo teorema fornisce il criterio fondamentale per rispondere alla domanda. Guardando i casi particolari raffigurati, vediamo che quando l’angolo è un sottomultiplo di 360 allora la figura è un poligono regolare. In questi casi il fatto è intuitivo: il poligono si chiude quando sono stati disegnati tutti i suoi lati, in pratica in un numero di passi pari a 360/ANGOLO. Quando invece l’angolo non è un sottomultiplo di 360 non è così semplice ma il teorema ci dice che in ogni caso la figura si chiuderà la prima volta che il numero di passi sarà eguale a un multiplo di 360.

Ma possiamo utilizzare questo teorema per rispondere al nostro quesito? Di fatto no, perché POLY non riproduce la struttura dei disegni di Marta, basati sul tracciamento della classica casetta più una deviazione finale. Tuttavia, fortunatamente, la Geometria della Tartaruga contiene anche un lemma (i lemmi sono teoremi che derivano molto direttamente da un altro teorema, non ci serve sapere altro a riguardo qui) che è, finalmente quello che fa al caso nostro:

Lemma: Qualsiasi programma costituito dalla ripetizione di un ciclo di base composto da comandi alla Tartaruga si comporta come un programma POLY al quale sia stato assegnato un angolo pari alla deviazione totale T di un singolo ciclo.

Conviene qui figurarsi cosa sia un “programma costituito dalla ripetizione di un ciclo di base composto da comandi alla Tartaruga”. Comandi alla Tartaruga sono per esempio quelli di direzione, RIGHT e LEFT, e quelli di movimento, FORWARD e BACK. Questi sono detti comandi di “cambiamento di stato”, perché sono in grado di alterare lo stato della Tarturga, determinato da posizione e direzione. Se chiamiamo GPOLY questo tipo di programma, questo ha una struttura del tipo seguente:

TO GPOLY LATO ANGOLO
REPEAT [
Qualsiasi sequenza di comandi di ”cambiamento di stato”
]
END

Come in POLY qui abbiamo i parametri LATO e ANGOLO ma non è affatto detto che siano necessari. Potremmo avere una sequenza di comandi di “cambiamento di stato” fissa, che non ha bisogno di parametri, come nell’esempio della casetta di Marta:

REPEAT [
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 30
FORWARD 100
RIGHT 120
FORWARD 100
RIGHT 30
]

dove l’ultima istruzione è quella con cui Marta “perturbava” il ciclo di ripetizione delle casette. Inseriamo quindi questo frammento di codice in GPOLY:

TO GPOLY LATO ANGOLO
REPEAT [
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 30
FORWARD 100
RIGHT 120
FORWARD 100
RIGHT 30
]
END

Con questo siamo arrivati in fondo alla storia, perché abbiamo ricondotto il quesito di Marta nell’ambito di una teoria dimostrata. Qui mi limito a enunciare il risultato, chi vuole sapere di più può andare a leggere le sezioni 10.3 e 10.4 del Piccolo Manuale di LibreLogo.

Il numero di cicli n necessari per chiudere la figura è data da

n=\mathrm{MCM}(T_m,360)/T_m

dove \mathrm{MCM}(n,m) rappresenta il minimo comune multiplo dei numeri interi n e m e T_m rappresenta la deviazione totale prodotta da ciascun ciclo.

Questa condizione di chiusura può essere facilmente codificata in Logo. Chi ci vuole provare può scaricare il programma GPOLY.odt che chiede la deviazione finale da usare nel codice di Marta poi calcola il numero di rotazione e disegna la figura. Il codice è visibile anche nella sezione 10.4 del Piccolo Manuale di LibreLogo.

Ci abbiamo messo più di un anno a rispondere alla domanda di Marta ma ne è valsa la pena perché abbiamo approfondito molti fatti interessanti.



Risposta alla domanda sui percorsi chiusi: 1: aperto; 2: $R=0$; 3: $R=3$; 4: $R=1$; 5: $R=3$; 6: $R=2$; 7: aperto; 8: $R=-1$.

Invito a contribuire ad un censimento sul coding a scuola

Traggo da un post di Stefano Penge su Facebook:

Abbiamo raccolto delle domande (e delle risposte) sul coding e il pensiero computazionale.
Abbiamo iniziato a esporre delle tesi che esplicitano il nostro punto di vista.
Stiamo raccogliendo delle risorse (bibliografie ragionate, tutorial, articoli, buone pratiche).
Stiamo costruendo degli esempi di attività didattiche in diversi linguaggi.

Tutto questo, a dire il vero, richiederebbe una conoscenza del quadro reale un po’ più estesa di quella che ci deriva dalle esperienze personali di ciascuno e da quanto andiamo raccogliendo sul web. D’altra parte, non abbiamo trovato da nessuna parte delle informazioni significative.
Chi sta facendo coding? In che scuole, a che età? Con che strumenti? Che tipo di conoscenze e formazione pregressa hanno i docenti? Che obiettivi si pongono, e come monitorano le attività?
Quali sono i risultati, sia in termini di outcomes che di valutazione da parte dei partecipanti (studenti o altri docenti)?

Abbiamo perciò preparato un censimento anonimo che trovate linkato sotto e chiediamo a quanti hanno sperimentato con il coding a scuola di compilarlo. Non tutte le informazioni richieste sono obbligatorie, ma più ne inserite, meglio è per tutti. Non servono a valutarvi, ma ad avere un quadro più preciso possibile.
I dati elaborati verranno pubblicati su queste stesse pagine.
Un grande grazie fin da ora a chi vorrà contribuire oppure diffondere il questionario tra i propri contatti.

Questo è il link al censimento.

Aggiornata la bibliografia ragionata su coding e pensiero computazionale

Ho aggiornato la bibliografia ragionata sul coding, soprattutto per quanto riguarda la sezione (4) sul pensiero computazionale. Può essere scaricata qui (PDF 154 KB). La cosa può interessare gli studenti di Scienze della Formazione Primaria ( Università di Firenze), in particolare coloro che mi hanno chiesto di seguirli nella tesi ma non solo, gli studenti di Innovazione Educativa e Apprendimento Permanente (IUL), la comunità che orbita intorno a codingmonamour.org, e in generale coloro che sono interessati a questi argomenti. Il documento è largamente imperfetto ma ci sto lavorando continuativamente, esplorando la letteratura.

Qui sotto riporto l’estratto della parte che è cambiata sostanzialmente. È la sezione 4, dedicata al pensiero computazionale. Lascio la numerazione del documento originale.


4.1 Sherin (2001) – A comparison of programming languages and algebraic notation as expressive languages for physics

Questo non si presenta esplicitamente come un lavoro sul pensiero computazionale ma in realtà dice molto a riguardo. Un articolo di grande interesse, sia sperimentale che teorico. Sessanta pagine, 57 voci bibliografiche, spessore tecnico e pedagogico. Lo studio è indirizzato all’insegnamento della fisica. In tale contesto è naturale occuparsi di un tema del genere. Da un mezzo secolo a questa parte settori sempre più ampi della scienza hanno visto la luce grazie a nuove tecniche computazionali: Applied computer science is now playing the role which mathematics did from the seventeenth through the twentieth centuries: providing an orderly, formal framework and exploratory apparatus for other sciences. (Djorgovski, 2005). A partire dal Seicento fino alla prima metà del Novecento l’analisi matematica ha rappresentato il sistema di rappresentazione fondamentale di tutta la scienza, sviluppandosi di pari passo e in modo dialettico con le varie e rapidamente crescenti esigenze delle scienze classiche, fisica e chimica in primis. Poi, già nel primo Novecento, la scienza si è dovuta occupare di sistemi sempre più complessi, difficilmente descrivibili con il linguaggio dell’analisi matematica. All’inizio i sistemi complessi e i fenomeni che presentavano caratteristiche intrattabili, se non caotiche, venivano considerati “eccezioni intrattabili”. Tuttavia presto si è dovuto riconoscere che invece tali sistemi rappresentavano la norma mentre erano proprio i casi che potevano essere affrontati con il linguaggio matematico classico ad essere le eccezioni. È in questo stato di cose che sono apparsi i computer digitali, che con un processo dirompente, dall’essere immaginati da menti visionarie (Turing, von Neumann) negli anni 40-50 sono diventati i protagonisti del mondo scientifico e commerciale già a partire dagli anni 60. Da lì il ruolo del digital computing è letteralmente esploso, generando campi di ricerca del tutto nuovi in tutte le scienze di base. Ma il ruolo del “pensiero computazionale” che si è sviluppato intorno al digital computing non deve essere visto in concorrenza alla matematica classica, bensì deve essere visto come un ulteriore e possente arricchimento dell’armamentario matematico a disposizione dei ricercatori. Amplissime branche della scienza odierna si sostengono oggi esclusivamente sul digital computing. Esemplari sono tante storie della mia generazione. Io durante i quattro anni di studio della fisica, fra il 1974 e il 1978, non avevo mai sentito parlare di niente che avesse a che vedere con il mondo digitale. Se fosse stato per i 18 insegnamenti universitari non avrei avuto idea di cosa ci fosse dentro a un computer e non avrei avuto idea di cosa fosse un bit. Ma già lavorando alla tesi entrai in contatto con queste nuove, e assai costose a quei tempi, macchine digitali. Non solo, per arrivare in fondo al progetto di tesi, mi ritrovai a studiare e applicare un metodo dei calcolo di parametri fisici che faceva ricorso alla possibilità di simulare fenomeni casuali con i computer digitali, il cosiddetto metodo Monte Carlo. Sherin nel suo articolo affianca – non contrappone – la programming-physics all’algebra-physics. Nelle note precedenti ho parlato di analisi matematica perché questo è lo strumento più potente e generale; Sherin, occupandosi di fisica a livello di scuola secondaria superiore, può fare riferimento più semplicemente alla rappresentazione algebrica della fisica. L’impianto teorico del suo lavoro si fonda sul ruolo giocato dalle rappresentazioni strumentali e simboliche che supportano la conoscenza nella formazione stessa di tale conoscenza – concetti a cui abbiamo accennato commentando il lavoro di Weintrop e Wilensky (2015). L’autore documenta i propri argomenti con alcuni esercizi di fisica presentati sia nella forma algebrica convenzionale che nella forma computazionale. Per quest’ultima riferisce di esperienze svolte con l’ambiente Boxer, sviluppato da Sherin stesso e di Sessa, sulla base di Logo. Con questo lavoro l’autore sostiene la tesi che sistemi di rappresentazione diversi influiscono in modo differente sui meccanismi del pensiero e possono indurre un diverso tipo di comprensione dei medesimi fenomeni. In capo a un’analisi minuziosa di esperimenti didattici, condotti su gruppi di studenti sia mediante l’algebra-physics che la programming-physics, giunge alla conclusione per cui con la conoscenza algebrica si tende a enfatizzare gli equilibri mentre con quella computazionale si è portati a comprendere meglio gli aspetti dinamici. È estremamente interessante la prospettiva nella quale Sherin pone questa conclusione. Non si tratta, dice, di giudicare l’effetto di un metodo o dell’altro secondo una singola metrica e di confrontarli sulla base di tale metrica – ovvero non si tratta di stabilire quale sia “meglio” – bensì di accettare, comprendere e utilizzare proficuamente il fatto che il nuovo paradigma offra una mutata visione della conoscenza degli stessi fenomeni e di come, in ultima analisi, la cosa più sensata da fare sia quella di affiancare questa nuova forma di conoscenza a quelle preesistenti. E non si può evitare di osservare che la nuova prospettiva computazionale – qui nel senso della programming-physics di Sherin, possa essere di grande giovamento per la comprensione dei fenomeni fisici. Infatti lo strumento matematico costituisce indubbiamente il fondamento imprescindibile delle scienze di base – il linguaggio che consente di porre domande alla natura, per dirla con Galileo – ma il processo con il quale un giovane giunge a creare senso compiuto a partire da un linguaggio formale è molto complesso e faticoso. Pochi studenti arrivano ad apprezzare il formalismo matematico come uno strumento utile per comprendere e esprimere pensieri sul mondo fisico o altro. Per la grande maggioranza i formalismi matematici rappresentano al più una quantità di regole da applicare a memoria negli specifici contesti creati dalla scuola: qual era la formula da usare qui…? A questo proposito è interessante ricordare un noto articolo scritto da Enrico Persico (Persico, 1956), maestro di Enrico Fermi, dove ci si domandava cosa non andasse con quella studentessa che procedeva come una locomotiva quando sciorinava le equazioni di Maxwell alla lavagna ma che non sapeva dire perché, con quel certo valore di corrente, una lampadina si sarebbe fulminata – non a caso Sherin rileva esattamente lo stesso problema a pag. 43 del suo lavoro, e proprio a proposito delle equazioni di Maxwell. La questione della comprensione dei fenomeni attraverso il linguaggio matematico non è, e non da ora, semplice. È esattamente qui che il “nuovo” approccio computazionale, nel quale peraltro vengono declinati settori sempre più ampi della fisica e delle altre scienze, può venire in aiuto. Infatti, l’approccio computazionale induce ad analizzare e scomporre i fenomeni fisici nella dimensione temporale, enfatizzandone così la natura dinamica, spesso più accessibile all’intuizione. Non solo, l’analisi computazionale costringe ad utilizzare precisi valori numerici da assegnare ai parametri fisici coinvolti e questa è una pratica che induce più facilmente gli studenti a ricavare un senso da ciò che studiano.

4.2 Weintrop et al (2016) – Defining Computational Thinking for Mathematics and Science Classrooms

Il lavoro di Weintrop et al generalizza quello di Sherin. La formulazione del pensiero computazionale – perché di questo si trattava, in sostanza – di Sherin è estremamente interessante perché mostra come sia scaturito spontaneamente nel corso dell’evoluzione della disciplina: oggi la fisica è pensata e creata sia mediante gli strumenti matematici tradizionali che con quelli computazionali. Il fenomeno concerne anche la matematica, dove nel corso del ‘900 sono nate intere nuove branche che trovano la ragione della propria esistenza solamente per il fatto che si sono resi disponibili computer, reti di collegamento e sistemi di memorizzazione sempre più pervasivi e potenti. Ad esempio, a fianco dell’analisi matematica si è evoluta molto l’analisi numerica e la maggior parte degli sviluppi di questa sono funzionali alla risoluzione di problemi caratterizzati da grandissime quantità di dati numerici, che sono trattabili solo attraverso macchine di calcolo. È in queste discipline che il pensiero computazionale si è formato, già a partire dalla metà del secolo scorso. Ma quasi immediatamente tutti gli altri campi scientifici hanno visto la proliferazione di metodi numerici. E, successivamente, non solo scientifici, perché oggi l’impatto degli approcci computazionali investe settori come quello della linguistica e delle scienze sociali in generale, specialmente in questo caso attraverso il trattamento dei big data. In questa luce, è difficile pensare che la scuola, nel suo insieme, possa rimanere indifferente a tutto questo.

Weintrop et al affrontano il tema del pensiero computazionale nell’ambito delle discipline scientifiche alla larga – le cosiddette discipline STEM: Science, Technology, Engineering, Mathemathics. Gli autori, sulla base di una ricca messe di riferimenti bibliografici, documentano come le tecniche computazionali abbiano avuto da mezzo secolo a questa parte un ruolo crescente in tutti i campi della scienza. Successivamente descrivono un lavoro sistematico di ampio respiro con il quale hanno cercato di definire una tassonomia di riferimento del pensiero computazionale. Concludono con alcuni esempi di attività in classe esemplificative dell’applicazione di alcune delle categorie definite in tale tassonomia.

Quindi quello di Weintrop et al rappresenta uno di quei lavori con i quali si cerca, ancora oggi, di definire l’identità del pensiero computazionale, quando lo si voglia estendere al di là di quei contesti scientifici ben circoscritti nei quali è invece naturalmente e perfettamente definito. Un lavoro esteso: oltre 20 pagine sostenute da 147 voci bibliografiche con l’obiettivo di produrre una definizione del pensiero computazionale per la matematica e le scienze nella forma di una tassonomia composta da quattro tipi di pratiche: manipolazione di dati, realizzazione di modelli e simulazioni, soluzione di problemi computazionali, pensiero sistemico. Il lavoro si inquadra nella tendenza generale tesa a introdurre il pensiero computazionale nell’insegnamento di tutte le discipline scientifiche nella scuola secondaria.

Il processo con cui gli autori hanno costruito la loro tassonomia è articolato in quattro fasi. Nella prima fase gli autori hanno condotto un’ampia ricognizione della letteratura in materia di pensiero computazionale in ambito scientifico, giungendo a definire un primo insieme di dieci abilità fondamentali di pensiero computazionale. Successivamente, da questo materiale hanno estratto una varietà di pratiche didattiche destinate all’introduzione del pensiero computazionale nell’insegnamento della matematica e delle scienze; in questa fase, due revisori indipendenti, hanno analizzato 208 aspetti diversi desunti da 34 diverse attività, selezionandone 45. La tassonomia così ottenuta è stata proposta a 16 insegnanti di matematica e scienze nell’ambito di un workshop estivo per progettare nuove attività nelle proprie classi. Sulla base dei feedback ricevuti da questi insegnanti, oltre quelli ottenuti da altri esperti di curricula nelle discipline STEM, la tassonomia è stata ulteriormente sintetizzata in 22 pratiche, suddivise nelle quattro summenzionate categorie. Nel corso dell’intero processo la messe di feedback sulla tassonomia che andava formandosi è stata ulteriormente arricchita mediante una serie di interviste a ricercatori dell’accademia, dell’industria e a studenti nell’ambito STEM.

Gli autori passano quindi a discutere in dettaglio le caratteristiche delle pratiche emerse dal punto di vista dei vari portatori di interesse – studenti, insegnanti, progettisti di curricula, amministratori – chiudendo con l’esposizione di tre di tali pratiche situate in contesti reali. Nel corso di tale sezione finale emergono alcuni concetti interessanti. La pratica di lavorare con modelli computazionali ha un valore didattico rilevante perché, in ultima analisi, la scienza non spiega nulla e a fatica interpreta i fenomeni, più che altro formula modelli (von Neumann, 1955, p. 628). Oggi la computer science applicata gioca lo stesso ruolo che era della matematica fra il VII e XX secolo, fornendo il contesto formale ordinato e lo strumentario per l’esplorazione necessari alle altre scienze (Djorgovski, 2005). La ricerca ha ormai appurato che mediante pratiche di problem solving computazionale, sviluppo di algoritmi e astrazioni computazionali gli studenti possono sviluppare una conoscenza profonda dei fenomeni e dei fatti matematici. Pur non dovendosi ovviamente aspettare che tutti gli studenti diventino esperti di programmazione, una preparazione base di programmazione è una componente importante nell’indagine scientifica del XXI secolo. La capacità di pensare in modo sistemico è un atteggiamento mentale importante non solo per coloro che si dedicheranno a professioni tecnico-scientifiche ma anche per formare la cultura scientifica (ancora largamente assente) di qualsiasi cittadino. I concetti caratterizzanti il pensiero sistemico, come retroazione, emergenza, stock e flussi, sono trasversali e li possiamo ritrovare in campi assai diversi come la fisica, l’economia e la storia.

4.3 Kalelioğlu et al (2016) – A Framework for Computational Thinking Based on a Systematic Research Review

Anche questo articolo è espressione di quel pensiero computazionale che insegue la propria identità, ma in maniera meno mirata rispetto al lavoro di Weintrop et al, estendo l’indagine al di là delle discipline STEM.

Si tratta di una review della letteratura sul tema del pensiero computazionale aggiornata al 2015. I tre ricercatori autori dell’articolo, F. Kalelioğlu, Y. Gülbahar e V. Kukul, si sono suddivisi il compito di analizzare qualitativamente i 125 lavori, scremati in base alla pertinenza al tema del pensiero computazionale a partire da un totale di 274 reperiti nelle librerie digitali Ebscohost, ScienceDirect, Web of Science, Springer, IEEE Digital Library e ACM Digital Library. La maggior parte di tali contributi sono dedicati a attività che promuovano il pensiero computazionale nei curricula, il contesto prevalente è quello della scuola primaria e secondaria. Game-based learning e costruttivismo sono i riferimenti teorici principali.

L’obiettivo degli autori è quello di definire un “framework” di riferimento che faciliti l’innesto di pratiche relative al pensiero computazionale nei curricula. Qui di seguito riporto il framework risultante.

Identificazione del problema Raccolta, rappresentazione e analisi dei dati Generazione, selezione e pianificazione delle soluzioni Implementazioni delle soluzioni Verifica delle soluzioni e aggiornamenti successivi
Astrazione Raccolta Ragionamento matematico Automazione Testing
Decomposizione Analisi Costruzione di algoritmi e procedure Simulazionioni e creazione di modelli Debugging
Rilevazione di schemi, modelli Parallelizzazione Generalizzazione
Concettualizzazione
Rappresentazione

Confrontando questo framework con la tassonomia di Weintrop et al, seppur riferita alle sole discipline STEM, si vede come vi sia una certa convergenza ma vi siano anche delle differenze, a testimonianza della fluidità del concetto. Kalelioğlu et al rilevano come la letteratura sull’argomento non sia ancora matura, anche per la necessità di estendere il concetto di pensiero computazionale ad altri campi, al di là delle discipline STEM. È una letteratura che risale a non più di dieci anni fa, ammontando, dicono gli autori, a circa 500 contributi – un valore molto piccolo rispetto a settori più consolidati. Di conseguenza manca sia di supporti teorici adeguati che di sostanziali riscontri sperimentali.

Sia il lavoro di Kalelioğlu che quello di Weintrop aiutano a chiarire molti aspetti del pensiero computazionale ma non consentono di delimitarne esattamente il dominio nell’ambito dell’istruzione, questione che rimane ancora sostanzialmente aperta.

4.4 Bocconi et al (2016) – Developing computational thinking in compulsory education

Quello di Bocconi et al non è un articolo scientifico ma un documento programmatico della Commissione Europea dedicato allo sviluppo del pensiero computazionale nella formazione obbligatoria. Lo includo perché l’ho visto citare in vari gruppi di discussione. È un buon documento per avere un’idea dello stato dell’arte, che gli autori hanno scritto a partire dallo studio delle azioni in corso presso i ministeri dell’istruzione di tutto il mondo, della letteratura scientifica e da una serie di interviste a esperti del settore.

Leggendo la descrizione degli autori del concetto di pensiero computazionale si percepisce come oggi il mondo corra ad una velocità eccessiva rispetto alla nostra capacità di metabolizzare il nuovo che incalza. Il caso del pensiero computazionale è emblematico. Mentre da un lato i Ministeri dell’Istruzione di tutti i paesi, e la medesima Unione Europea, sentono la cogenza della questione sino al punto di intraprendere azioni concrete, dall’altro, ancora oggi, non esiste un consenso su cosa si debba intendere di fatto per pensiero computazionale. Per la loro analisi gli autori fanno riferimento a cinque review di autori di riferimento: Barr e Stephenson (2011), Lee et al (2011), Grover e Pea (2013), Selby e Woollard (2013), Angeli et al (2016). Sulla base di queste e delle ultime proposte di Jeannette Wing, colei che per prima ha introdotto, nel 2001, questo termine, propongono la seguente definizione: il pensiero computazionale descrive i processi del pensiero connessi con la formulazione di un problema in maniera tale da poter individuare una soluzione computazionale che richieda astrazione, pensiero algoritmico, automazione, decomposizione, debugging e generalizzazione. Questi ultimi concetti sono gli aspetti che secondo la maggior parte degli studiosi caratterizzano l’idea di pensiero computazionale. Anche qui vediamo una discreta ma non perfetta sovrapposizione con le definizioni proposte nei due articoli precedenti.

In particolare, intersecando i cinque articoli citati da Bocconi et al vediamo, che tutti includono il concetto di astrazione e 4 su 5 includono pensiero algoritmico e decomposizione. Fra i vari temi dibattuti emergono: relazione con l’alfabetizzazione digitale, ruolo del coding, modalità di inclusione del pensiero computazionale nei curricula, pratiche di insegnamento, valutazione degli studenti, preparazione degli insegnanti e inclusione di formazione non formale.

Gli autori rilevano come nella letteratura l’alfabetizzazione digitale venga prevalentemente discussa in chiave critica e come l’interesse verso il pensiero computazionale derivi proprio dall’insufficienza di un insegnamento che si è troppo concentrato sull’impiego superficiale di strumenti specifici. Con l’introduzione del pensiero computazionale si intende condurre i giovani verso la conoscenza della scienza e delle idee che sottendono le nuove tecnologie.

Per quanto riguarda il coding, si rivela come questo venga spesso erroneamente identificato con il pensiero computazionale. Invece quest’ultimo è un concetto molto più generale. Con il coding si intende l’attività di comporre una serie di istruzioni in un linguaggio di programmazione per eseguire determinate operazioni mediante un computer, localmente o attraverso un apposito servizio Web. Il coding è ovviamente un’attività necessaria per creare un software ma non è sufficiente. La creazione di un software comporta attività di analisi, progettazione e infine implementazione. Quest’ultima comprende effettivamente il coding ma anche il testing e il debugging. In realtà per molti autori il pensiero computazionale è un concetto più generale, che si estende al di là del dominio specifico della computer science. Ma anche questa visione allargata è ancora lungi dall’essere condivisa. Su questo tema cito ancora il lavoro di Sherin (2001) e rimando alle mie precedenti considerazioni, in particolare all’opportunità di non confrontare diversi paradigmi sulla base di una qualche metrica unidimensionale. Inclusione quindi e non dicotomia: si tratta di porre la questione in una prospettiva inclusiva e non di ricercare una dicotomia.

Riguardo all’inclusione nei curricula scolastici si distinguono due orizzonti. Uno più ampio che prevede di attivare nuove modalità di pensiero negli scolari, sviluppare la capacità di esprimersi con una varietà di media, risolvere problemi in contesti reali. L’altro invece è più orientato a concepire il pensiero computazionale come un mezzo per favorire la crescita economica e potenziare l’occupazione nel settore dell’Information and Computing Technology. L’impegno da parte delle istituzioni è sostenuto nella maggior parte dei Paesi. I Paesi che hanno intrapreso o stanno intraprendendo azioni concrete per lo sviluppo del pensiero logico in questo contesto sono Austria,, Svizzera, Cecoslovacchia, Danimarca, Finlandia, Francia, Gran Bretagna, Ungheria, Italia, Lituania, Polonia, Portogallo, Turchia. Sette di questi enfatizzano lo sviluppo del coding: Finlandia, Francia, Lituania, polonia, Svizzera e Turchia. L’attenzione dei Ministeri per l’Istruzione nei vari Paesi si focalizza, in generale, sulla promozione dei seguenti aspetti:

  1. capacità di pensiero logico
  2. capacità di problem solving
  3. percorsi verso la computer science
  4. coding
  5. occupazione nel settore dell’Information and Computing Technology.

Per quanto concerne gli aspetti pedagogici, gli autori evidenziano i metodi tipo “computer science unplugged” (attività di natura computazionale effettuate senza computer o simili), le simulazioni computerizzate di fenomeni fisici (complesse per le conoscenze matematiche avanzate che quasi sempre richiedono), modelli computerizzati (affini alle simulazioni ma molto più semplici, e quindi fattibili – vedi Weintrop et al, 2016, per questioni inerenti a simulazioni e modelli) e le questioni di inclusività, ivi comprese le questioni di genere – vedi le svariate iniziative e i movimenti per favorire il coinvolgimento femminile nel campo della computer science.

Se il concetto di pensiero computazionale non è ancora universalmente definito altrettanto si può dire per la questione della valutazione. Fra le pratiche citate troviamo: portfolio degli studenti, discussione di eventuali artefatti prodotti dagli studenti – grafici, multimediali, software – e prove su scenari dati – ad esempio progetti software da studiare, descrivere, estendere, correggere e remixare. A questo proposito, potremmo citare l’esperienza del nostro Laboratorio di Tecnologie Didattiche presso il CdS in Scienze della Formazione Primaria. Qui la valutazione si basa su un diario delle attività effettuate durante l’insegnamento, la verifica di almeno un codice prodotto autonomamente con LibreLogo (il logo inserito da ciascun studente nel diario), una discussione di tali artefatti all’esame orale, con eventuale prova di coding al computer.

Gli autori rilevano inoltre come probabilmente il problema maggiore in questa fase storica sia costituito dalla formazione degli insegnanti, che nella grande maggioranza dei casi non ha mai ricevuto una formazione intorno a questi temi nel corso dei propri studi. In tutti i Paesi si stanno cercando soluzioni ma le difficoltà sono rilevanti. Non è semplice formare masse così ampie di persone e in così breve tempo, senza nemmeno avere del tutto chiari i confini delle nozioni e delle competenze occorrenti e le modalità di intervento. Da alcune esperienze in corso pare che gli approcci più efficaci siano quelli dove gli eventi didattici vis-à-vis sono accompagnati e sostenuti da una comunità di discussione online.

Infine, in questo contesto, non si può non menzionare la disponibilità delle risorse di studio disponibili in Internet, di tipo informale. Ad esempio usare Scratch implica già l’uscita dalla classe, per certi versi, perché si tratta di un ambiente con una duplice valenza, tecnica e social. Ma sono veramente molte e diversificate le risorse disponibili in rete, quali code.org o csunplugged.org, giusto per fare due esempi fra i più noti. Da notare che csunplugged.org non è una novità in quanto risale agli anni ’90.

In conclusione, secondo gli autori il mondo della formazione si trova in una fase di rapidi e inevitabili cambiamenti. Numerose iniziative intorno ai temi del pensiero computazionale stanno emergendo in tutto il mondo, sia istituzionali che spontanee. In tale contesto pare scontato che il pensiero computazionale rientri a pieno titolo nei curricula dell’insegnamento formale. Si ritiene di fondamentale importanza che vengano presi provvedimenti adeguati per l’aggiornamento professionale degli insegnanti intorno a quella che chiamano Computational Thinking Pedagogy.


Le voci relative alla sezione 4 discusse nella presente bibliografia ragionata

Non tutti i file relativi agli articoli citati sono disponibili al pubblico. Chi desiderasse accedere ad uno di questi articoli me li può richiedere in via privata: arf(AT)unifi(DOT)it.

S. Bocconi, A. Chioccariello, G. Dettori, A. Ferrari, K. Engelhardt (2016), Developing computational thinking in compulsory education – ED. P. Kampylis e Y. Punie, Science for Policy report by the Joint Research Centre (JRC), the European Commission’sscience and knowledge service.

F. Kalelioğlu, Y. Gülbahar, V. Kukul (2016), A Framework for Computational Thinking Based on a Systematic Research ReviewBaltic J. Modern Computing, Vol. 4, No. 3, 583-596.

B.L. Sherin (2001), A comparison of programming languages and algebraic notation as expressive languages for physics, Int. Journal of Computers for Mathematical Learning, 6: 1-61.

D. Weintrop, E. Beheshti, M. Horn, K. Orton, K. Jona, L. Trouille, U. Wilensky (2016) Defining Computational Thinking for Mathematics and Science Classrooms, J Sci Educ Technol, 25:127–147


Riferimenti bibliografici relativi alla sezione 4 non discussi nella bibliografia ragionata

Non tutti i file relativi agli articoli citati sono disponibili al pubblico. Chi desiderasse accedere ad uno di questi articoli me li può richiedere in via privata: arf(AT)unifi(DOT)it.

Djorgovski (2005), Virtual Astronomy, Information Technology and the new Scientific Metodology, arXiv.org: https://arxiv.org/abs/astro-ph/0504651

E. Persico (1956), Che cos’è che non va?, Il Giornale di Fisica, 1, 64-67.

von Neumann J (1955) Method in the physical sciences. In: Bro´dy F, Va´mos T (eds) The Neumann compendium: world series in 20th century mathematics, vol 1. World Scientific Publishing Co, Singapore.

Leggendo i compiti degli studenti…

Sono sconvolto da quanto hanno lavorato molti di questi studenti nel laboratorio di tecnologie didattiche a Scienze della Formazione Primaria, centrato su Logo ma senza farsi mancare una quantità di esplorazioni diverse, anche estemporanee. Per l’esame devono inviare un diario dove narrare il percorso, esponendo i successi ma anche le difficoltà e i momenti di sconforto – come dice M.:
Il professore ci ha chiesto di scrivere un diario su questo percorso laboratoriale; deve essere un diario che non rispetti il linguaggio accademico! Deve essere un diario spontaneo, in cui emergano le emozioni, le sensazioni vere, non le idee teoriche mai messe in pratica. Questa cosa mi emoziona. Credo che sia importante interrogarsi sempre sul senso delle attività che svolgiamo all’università. Questa mi comunica sicuramente qualcosa: fare per parlare di me e parlare di me per poi fare. Mi sento immersa nel compito.
Segue il diario di M.: 52 pagine piene zeppe di esperimenti con la descrizione minuziosa degli errori e la loro successiva correzione, con riferimenti a altre discipline e esperienze.
Così molti altri.
Morale? Troppi discorsi tecnici in giro. Forse anche troppi dibattiti. Specialmente intorno a tecnologie, coding, pensiero computazionale e via dicendo. Basta uno strumento molto semplice, approfondito e sperimentato bene in pochi suoi aspetti fondamentali. Il resto, diciamo l’80%, deve essere cura della comunità di apprendimento e cura del percorso dei singoli laddove necessario, sia nella difficoltà che nell’eccellenza.

Embrione di una bibliografia ragionata sul tema del coding e del pensiero computazionale

Lo scopo di questo testo è di commentare articoli scientifici apparsi sul tema del coding a scuola. L’idea generale è quella di costruire una bibliografia ragionata su un tema ampiamente dibattuto, forse a ragione, ma spesso in maniera troppo superficiale e partigiana. Le opinioni abbondano, i fatti scarseggiano. Il motivo specifico per cui mi sono messo a analizzare questi lavori è la superficialità con cui alcuni di questi lavori sono stati citati. L’analisi vuole quindi anche suggerire maggiore cautela e maggiore riflessione nell’impiego dei cosiddetti risultati scientifici.

Si tratta solo di una bozza iniziale, scritta in fretta per circostanze contingenti, sicuramente carente, afflitta da errori e refusi. Ci sono però motivi per condividerla anzitempo, anche solamente per invitare chiunque a segnalare articoli e contributi interessanti. In futuro introdurrò una classificazione mediante tag, per facilitare la ricerca e forse utilizzerò anche un altro formato. Per ora mi sono limitato a redigere la bozza in un documento ODT e a distribuire i lavori in ampie categorie. In soldoni: meno chiacchiere su Facebook e più studio. Meno critica e più costruzione.

Il testo è disponibile in questo file PDF (115 KB).

%d blogger hanno fatto clic su Mi Piace per questo: