steve's

Poeti, navigatori, santi e cuochi: cosa insegna la linguistica computazionale al coding?

Gen
31

L’incontro tra informatica e letteratura avviene ufficialmente, almeno in Italia, quando nel 1949 Padre Busa SJ si dedica all’immane compito di compilare un Index Thomisticus, cioè un repertorio di tutti i termini utilizzati dall’Aquinate nelle sue opere. Per farlo, chiede il supporto dell’IBM (parlando con il suo fondatore, Watson) e inizia un lavoro di lemmatizzazione durato trent’anni. Dopo la versione cartacea (1980) e quella su cdrom (1989), nel 2005 nasce la versione web (http://www.corpusthomisticum.org/it/index.age).

La linguistica computazionale si presenta così con un aria seriosa, doppiamente sostenuta dall’oggetto (il testo classico) e lo strumento (il programma di lemmatizzazione e ricerca), per non parlare dello scopo scientifico.

Ma ci sono stati altri incontri meno nobili, come quello tra il libro cartaceo Cent Mille Miliards de Poèms di Raymond Queneau e il web. Per chi non avesse avuto la fortuna di sfogliare quel meraviglioso oggetto, si tratta di un libro pubblicato nel 1961 che raccoglie dieci sonetti di quattordici versi ognuno. La peculiarità che lo rende unico è la pagina è tagliata in orizzontale in modo da rendere ogni verso un oggetto autonomo; è possibile così leggere (e costruire con la mente) un sonetto costituito, poniamo, dal primo verso della prima pagina, il secondo dalla decima, il terzo dalla quinta, e così via. Le possibilità totali sono 1014, cioè appunto 100.000.000.000.000. Di questa macchina per generare sonetti ne esistono varie versioni consultabili su web, come per esempio questa: http://www.growndodo.com/wordplay/oulipo/10%5e14sonnets.html

Queneau realizza (cioè “dimostra la possibilità”) di qualcosa che nel cielo delle invenzioni letterarie era ben nota. A partire per lo meno dalla macchina creata dagli scienziati dell’Accademia di Laputa:

La superficie risultava di vari pezzetti di legno, grossi press’a poco come dadi, alcuni di maggiore dimensione degli altri. Erano tutti congiunti da esili fili di ferro. Incollata sopra le quattro facce dei pezzetti di legno era della carta, e su questa si trovavano scritte tutte le parole della loro lingua, coniugate nei diversi modi e tempi e declinate nei vari casi, ma senza ordine veruno. Il professore m’invitò a prestare attenzione, ché appunto s’accingeva a mettere in moto la macchina. Ciascun discepolo prese, al cenno del maestro, un manico di ferro (ce n’erano quaranta fissati intorno agli orli della macchina) e d’un tratto lo fece girare. Naturalmente la disposizione delle parole cambiò in tutto e per tutto. Il maestro ordinò allora a trentasei scolari di leggere pian pianino i vari righi così come apparivano sulla macchina; e quando quelli trovavano tre o quattro parole unite insieme che potevano far parte d’una sentenza, le dettavano ai quattro rimanenti discepoli che fungevano da scrivani (Jonathan Swift, I viaggi di Gulliver, Traduzione di Carlo Formichi, a cura di Masolino d’Amico, Mondadori, Milano, 1982, p. 393).

passando, naturalmente, per Borges, Levi, Landolfi e Dahl. Molti altri esempi sono citati in questa trascrizione di una bellissima conferenza del 2015 tenuta da Paolo Albani (a meno che non sia anche questo un testo generato automaticamente) che potete leggere qui: http://www.paoloalbani.it/Letteraturacombinatoria.pdf.

Cosa mostra davvero questo strano artefatto, nella versione cartacea come in quella digitale? Che la letteratura (e in particolare la poesia) non è tutta intuizione ed espressione libera. Che il gioco tra sistema e creatività, tra regola ed eccezione, non è proprio così chiuso come sembra. La poesia, in particolare, nasce proprio dal vincolo (tematico, formale), come orizzonte e come sfida. Non lo dico io, lo dice Calvino: la letteratura è

“un’ostinata serie di tentativi di far stare una parola dietro l’altra seguendo certe regole definite, o più spesso regole non definite né definibili ma estrapolabili da una serie di esempi o protocolli, o regole che ci siamo inventate per l’occasione cioè che abbiamo derivato da altre regole seguite da altri” (Cibernetica e fantasmi. Appunti sulla narrativa come processo combinatorio, in: Una pietra sopra. Discorsi di letteratura e società, Einaudi, Torino, 1980, pp. 164).

E cosa fa il poeta quando crea, se non andare a pescare nella sua memoria linguistica e scegliere combinazioni di parole, vincolate da regole precise (come il metro o la rima)? Certo, la scelta è anche governata dal significato – in maniera difficile da precisare. Il poeta parte con l’idea da esprimere e cerca le parole più adatte? Oppure si lascia guidare dalle parole stesse, sfruttando somiglianze fonetiche, rimandi per analogia o opposizioni? O ancora, più probabilmente, attua un misto delle due strategie? Insomma: come si scrive, praticamente, una poesia?

E di qui l’idea di proporre delle attività didattiche di coding intorno ai temi della forma e della variazione, delle categorie, dell’accettabilità. In un periodo in cui il machine learning sembra riproporre il vecchio mito dell’intelligenza artificiale, viene voglia di ragionare intorno ai processi creativi anche utilizzando paradossi, e di provare a costruire un automa in grado, se non di scrivere poesie originali (come questo: http://thinkzone.wlonk.com/PoemGen/PoemGen.htm, o quest’altro fatto addirittura in Scratch che lavora per sottrazione da una poesia di Walt Whitman: https://scratch.mit.edu/projects/12331423/) almeno di inventare ricette sempre nuove, che tutto sommato sono sempre forme di testo vincolate, come questa: http://www.lynxlab.com/staff/steve/public/ricette.

Per restare nel dominio letterario, due modesti esempi di macchine figlie di quella di Queneau (ma che pescano nel testo di due classici sempreverdi come l’Inferno di Dante Alighieri e l’Orlando Furioso di Ludovico Ariosto) li trovate qui http://www.lynxlab.com/staff/steve/public/inferno e qui http://www.lynxlab.com/staff/steve/public/orlando. Oltre a Queneau, questi due oggetti digitali si ispirano più precisamente a “Il centunesimo canto. Philologica dantesca“di Luca Chiti, che è un meraviglioso esempio di centone umoristico che “crea” un intero canto giustapponendo versi esistenti ma dandogli un senso completamente nuovo. Per realizzarli, ho dovuto affrontare problemi letterari, come la definizione di rima, di struttura metrica, di novità e ripetizione (oltre che qualche problema informatico, come il loop infinito o la conversione dei caratteri in UTF-8). Non ho seguito alla lettera le indicazioni di Nanni Balestrini, ma ci sono andato vicino. Ed ecco apparire terzine più o meno improbabili come la seguente:

Parlando cose che ‘l tacere è bello
rispuosemi: «non omo, omo già fui
venimmo al piè d’un nobile castello

o come questa:

Nel nome che sonò la voce sola
poscia vid’io mille visi cagnazzi
cosí vidi adunar la bella scola

Una valutazione estetica del risultato? Non è l’obiettivo, anche se può essere divertente provare e riprovare, fino a far emergere dei frammenti di senso che possono essere anche divertenti. Ma quelle che mi paiono importanti, come sempre, sono le domande che emergono ogni volta che si prova a realizzare un modello funzionante di una teoria: come si riconosce una rima? Come si produce una struttura metrica? Come si ottiene un testo casuale sempre diverso? Come si riconosce che il testo non è stato scritto da un poeta umano?

Mi sembrano tutte domande legittime da porsi in una classe che studia letteratura: portano con sé riflessioni e discussioni che integrano, anche se non sostituiscono, l’apprendimento di nomi di forme di testo come “trimetro scazonte” o “endecasillabo sciolto” o di opere particolari.

E ancora una volta mostrano come la costruzione reale di un programma possa essere un’attività didattica sensata al di là di ogni mitologia computazionale.

 

Scuole e monopolio della carta igienica: il caso Paapre

Nov
22

La doverosa attenzione dell’ente pubblico per il bilancio è sicuramente meritoria. In un Paese dove si spende troppo e male, ancora di più.

Quando si decide di utilizzare un servizio gratuito, di qualità, dal punto di vista del bilancio va tutto bene, e anche dal punto di vista della funzionalità.
Però occorrerebbe pensare agli effetti collaterali – non solo a quelli immediati all’interno della scuola. Perché la scuola pubblica ha anche un piede nella società e nel futuro.
Quando il servizio è virtuale, digitale, sembra che questi effetti non ci siano. Invece non si vedono, ma ci sono.

 


Prima parte
Facciamo allora un esempio più concreto: prendiamo la carta igienica. Ogni scuola ha una voce di budget annuale per la pulizia, immagino, che comprende anche la carta igienica. Un tot per ogni bagno? Le scuole superiori ne consumano di più, di meno? non importa. Facciamo sia 100.
Quei 100 € vengono dallo Stato, o dai Comuni, o dalle Regioni? non lo so, ma ipotizzo derivino dalle tasse pagate dai cittadini e dalle imprese.
Immaginiamo il flusso di quei 100 €. Marchiamoli come fa la polizia per i soldi dei riscatti e seguiamo la strada che fanno.
Ogni anno viene contattato un fornitore e gli vengono dati 100 €.
Il fornitore di quei 100 € ne trattiene una parte (per pagare stipendi, furgoncino, benzina), e una parte la dà al grossista.
Della sua parte, il grossista ne tiene una quota (per pagare stipendi, magazzino), e il resto la dà al produttore, per esempio alla fabbrica di carta igienica di Lucca.
La fabbrica di Lucca con la sua quota compra la materia prima e produce la carta igienica.
Ognuno di questi attori spende parte del proprio incasso in stipendi, in affitto di mezzi.
Poi su quel 100 € vanno calcolate le tasse, cioè la parte di denaro che torna nella casse dello Stato, delle Regioni etc. Sembra che la pressione fiscale in Italia sia alta, è una bella fetta che torna indietro.
Insomma c’è un flusso di denaro dal cittadino allo stato al cittadino.

Ci sono dei limiti.
Si potrebbero selezionare i fornitori, o tutta la filiera, per garantirsi che non ci sia sfruttamento minorile, che la carta sia riciclata e non vengano tagliati troppi alberi, o inquinati fiumi; o che l’elettricità sia presa da fonti rinnovabili, etc etc. Ma questo farebbe aumentare il costo della carta igienica.
Non solo: quei 100 € sono probabilmente insufficienti per coprire il bisogno effettivo di carta igienica della scuola.
Cosa fa allora il dirigente accorto? Inventa.
1. Affigge un regolamento che limita i centimetri quadri di CI a disposizione dell’utente per ogni seduta
2. Ricicla le circolari
3. Lancia il piano BYOTP (Bring Your Own Toilet Paper)
4. Produce della carta con  le stampanti 3D
etc.

Ora immaginiamo che il signor Paapre, multinazionale di QualchepostoLand, decida di regalare carta igienica quadruplo velo, profumata alla lavanda, a tutte le scuole italiane.
Perché lo fa? sono affari suoi, possiamo immaginare che non sia per altruismo, ma per ora ignoriamolo.
Per quanto tempo lo fa? Non lo sappiamo. Certo non si impegna a farlo per sempre.
Intanto le scuole sono contente perché risolvono il problema e risparmiano. La carta igienica è di ottima qualità e viene consegnata direttamente alla scuola.
Si può discutere sul fatto che gli studenti si abituino alla carta quadruplo velo profumata alla lavanda e poi in futuro – ma anche a casa – vogliano usare solo quella.
Ma il punto è un altro: si crea una situazione di monopolio. Anche potendo scegliere, chi comprerebbe mai carta igienica se si può avere gratis?
Che succede? che quel flusso di denaro si ferma. O meglio, i 100 € vengono utilizzati altrimenti (forse per cose più utili) ma gli attori prima elencati hanno un ammanco rispetto alle entrate previste.
Cosa fanno? Ricordate che non è UNA scuola, ma TUTTE le scuole. Cambiano settore, mettono a part time gli operai, licenziano, chiudono….
Diminuiscono anche le entrate del fisco. Forse quella voce di bilancio scolastico viene cancellata.
Sono eventi che non riguardano la scuola?
Quella scuola che preparava gli studenti ad un mercato del lavoro, che però grazie (anche) all’operato della scuola piano piano scompare?
E che succederà quando il signor Paapre decidera di far pagare 1 € (invece di 100) la sua fornitura? Niente, sempre economia per la scuola. Ma siccome c’è un monopolio, da 1 € si può passare anche a 100 €, senza che nessuno possa fare niente. Tornare indietro? ma ormai il tessuto imprenditoriale non c’è più. Niente più fornitori locali, niente grossisti.

Ora cosa c’è di diverso se invece di carta igienica parliamo di servizi digitali (software, connettività, cloud, antivirus, ….)?
Economia e praticità possono davvero bilanciare il danno che si fa all’ecosistema delle imprese digitali locali?


Seconda parte
Ma allora come la metti con il software opensource, che è gratis? Neanche quello va bene? Si. Ma non perché è gratis.
Anche qui possiamo fare una simulazione. Su 100  € di licenze di software Megasoft, una quota (piccola) va al fornitore; la maggior parte va al produttore, che ha sede a Vattelappesca City. Siccome il fornitore ha un piccolo margine, deve moltiplicare le vendite; tendenzialmente deve acquisire il monopolio. Quindi spinge, fa sconti, fa formazione sulla versione Educational di Megasoft, quella adatta per il Coding. Un giorno anche quella sarà a pagamento, ma per ora va bene…

Invece su 100 € di servizi connessi con il software opensource (formazione, installazione, adattamento, hosting), tutto va al fornitore locale. Il quale paga le tasse, paga gli stipendi etc etc. Il fornitore locale NON ha bisogno di monopolizzare il mercato, perché ha margine a sufficienza. C’è spazio per soluzioni diverse  e fornitori diversi.
I servizi sono di qualità inferiore? Forse, ma visto che il software è aperto si possono migliorare. Si possono unire le risorse di più scuole per sviluppare migliorie e funzionalità di cui tutti beneficeranno.

Quando la scuola decide di installare Moodle per l’e-learning (perché è gratis) e WordPress per il sito (perché è gratis) e poi di gestirli internamente, fa un’opera meritoria dal punto di vista del bilancio. Meno meritoria dal punto di vista dell’economia del Paese.

Programmi e problemi

Nov
02

La definizione di “programma” su Wikipedia Italiana è la seguente:

programma (dal lat. tardo programma -mătis, gr. πρόγραμμα -ματος, der. di προγράϕω, propr. «scrivere prima») è la definizione del percorso per raggiungere un determinato obiettivo tenendo conto delle risorse disponibili, delle condizioni al contorno, delle attività da intraprendere e dei tempi necessari per realizzarle.

Bello, no? C’è dentro il progetto, l’anticipazione, la scrittura. Manca l’aspetto pubblico, l’impegno, ma insomma mi sembra molto pregnante e dice tutto quello che è essenziale. Inoltre prende in considerazione le risorse e in generali i limiti (non esplicitamente, ma anche il tempo). Ma attenzione: qui non si parla di “programmi per computer”. Una didascalia avverte gli interessati e li consiglia di andare altrove.

Infatti la definizione di Programma_(informatica) è:

Un programma per computer, o semplicemente programma, in informatica, è un software che può essere eseguito da un elaboratore per ricevere in input determinati dati di un problema automatizzabile e restituirne in output le (eventuali) soluzioni. […] Il problema deve essere risolvibile attraverso un algoritmo, affinché un programmatore possa codificarlo in istruzioni per il più adeguato linguaggio di programmazione.

 

In questa definizione saltano agli occhi (a me, si capisce) due o tre cose:

  • programma viene definito mediante “software”. Che è un termine che a volte sembra un sinonimo, altre un super-insieme di programma (comprende anche i dati), e in ogni caso non aiuta molto a capire
  • si inseriscono alcuni altri elementi chiave che vanno precisati: un input, un problema “automatizzabile” (?), un output e delle soluzioni.
  • “Automatizzabile” viene definito in qualche modo dalla frase seguente: un problema è automatizzabile se esiste un algoritmo che lo risolve.
  • L’algoritmo viene codificato nel “più adeguato” linguaggi di programmazione.

Mmmh… se ho un input e un output, ma non un problema, allora non ho un programma? Un programma che non termina (un loop infinito) non è un programma? I programmi producono solo soluzioni? E i programmi sbagliati, che non risolvono nulla, non sono programmi? E che dire dell’adeguatezza dei linguaggi di programmazione? Come si misura e da che dipende? Se codifico un algoritmo in un linguaggio non adatto non sto scrivendo un programma?

Vado a curiosare nella versione inglese e trovo invece:

A computer program is a collection of instructions that performs a specific task when executed by a computer.

Più semplice. Qui non ci sono né algoritmi, né problemi, solo un insieme di istruzioni che, se eseguite da un computer, porterebbero all’esecuzione di un compito.


Anche a prescindere da Wikipedia, che in questo caso non è di grande aiuto, la definizione che si trova più spesso (per esempio nei manuali o nelle slide dei corsi introduttivi di programmazione) è comunque composta di quattro parti:

Un programma è:

1. la rappresentazione

2. in qualche linguaggio di programmazione

3. di un algoritmo

4. che risolve un problema

Definizione che comporta, secondo me, più problemi (scusate il gioco di parole) di quelli che risolve.


Intanto c’è l’algoritmo: è una cosa? Esiste in natura? È un oggetto mentale?

O è un oggetto linguistico, a sua volta una rappresentazione di qualcosa? Esistono dei linguaggi per rappresentare algoritmi (i diagrammi di flusso sono uno di questi); significa che l’algoritmo consiste in una serie di operazioni, che si può (la serie) rappresentare, memorizzare, comunicare con uno o più linguaggi alternativi?

La pagina di WP che parla di algoritmi ammette che non esiste una definizione formale di algoritmo. Tuttavia introduce un’idea intuitiva di algoritmo:

una sequenza ordinata e finita di passi (operazioni o istruzioni) elementari che conduce a un ben determinato risultato in un tempo finito“.

Chiaramente sorge la domanda: solo una sequenza? No, immagino anche un ciclo o una scelta.

Il programma sarebbe allora la codifica di una rappresentazione, cioè una traduzione da un linguaggio (più generale) ad un altro (più specifico e leggibile/eseguibile da un computer). L’unica differenza tra algoritmo e programma è che il secondo è eseguibile da un computer, il primo da un umano (anche se evidentemente gli umani possono leggere i programmi). Ma posso immaginare un programma che legge un algoritmo (comunque scritto, anche in Italiano) e lo esegue? Si, direi di si. Questo fa di ogni algoritmo un programma almeno possibile? Allora la distinzione non è chiarissima.

Oppure tutto dipende dal linguaggio: un algoritmo scritto in un linguaggio di programmazione si chiama programma. Non è una grande definizione, se i linguaggi di programmazione sono quei linguaggi che permettono di scrivere algoritmi in modo che siano eseguibili da un computer.


Poi i programmi avrebbero a che fare solo con problemi. Ma che cos’è un problema? L’etimologia ci aiuta poco (problema, letteralmente, significa ostacolo).

Se restringiamo il significato ad un dominio astratto come quello matematico, tipicamente un problema si presenta nella forma di una serie di dati, una serie di relazioni tra i dati e nella richiesta di produrre altri dati (la soluzione), oppure nella dimostrazione che tale soluzione non esiste. Soluzione che deve essere analiticamente contenuta, direbbe Kant, nel problema stesso, cioè non deve richiedere l’aggiunta di nuove informazioni. La soluzione è lì, solo che io non la so. Almeno, questi sono i problemi matematici scolastici.

Se estendiamo il dominio nella direzione del concreto e parliamo di problemi fisici, o chimici, spesso si tratta di determinare lo stato di un sistema nel futuro partendo dalle informazioni sullo stato presente. Qui la soluzione è ricavata dai dati, ma è qualcosa del tutto nuovo. Per arrivare ai problemi insoluti della fisica la cui soluzione può essere un’intera nuova teoria.

Se arriviamo fino alla vita reale, un problema è una situazione incerta che vogliamo determinare meglio. Qui “problema” è inteso in un senso talmente generale da comprendere ogni situazione in cui qualcuno voglia fare qualcosa che non si presenti come immediatamente raggiungibile senza qualche scelta. “Ho un problema” nel senso di “ho un obiettivo da raggiungere e mi domando come fare”. Non c’è una situazione (oggettiva) con un buco, ma sono io che mi propongo di cambiare la situazione, e per farlo devo effettuare delle operazioni, fisiche o mentali.

A quale di questi problemi si fa riferimento quando si dice che “un programma risolve un problema”? A volte – nelle definizioni – sembra che si abbia in mente solo il primo tipo: dati in ingresso, dati in uscita, regole note.


L’informatica nasce come simulazione delle situazioni della vita, per fare meglio e prima cose che si facevano altrimenti. Lo fa trattando in maniera automatica le informazioni che rappresentano alcuni aspetti della situazione che ci sembrano più significativi. In questo senso, l’informatica nasce per risolvere i problemi della vita, non solo quelli matematici. Creare una rappresentazione trattabile di una situazione in modo da poter usare un computer per simularla e anticiparne il comportamento è uno dei task più difficili.

Ma con l’informatica, da tempo, si fanno anche altre cose. Si creano delle situazioni che non sono più simulazioni di altro. Si producono nuovi oggetti, alcuni utili, altri meno. Qui la nozione di problema sembra chiaramente fuori posto. Che problema risolve Facebook? E viceversa, se un programma fa una cosa diversa da risolvere un problema (per esempio, raggiunge semplicemente un obiettivo, esegue un task o produce un risultato inaspettato) non è un programma? Un programma che disegna ricorsivamente un cristallo? O che produce haiku casuali?

Definire meglio “programma” sarebbe un primo passo, ma insegnare a programmare partendo da una visione più ampia sarebbe ancora meglio.

 

Curriculi digitali opensource

Ott
25

Il bando http://www.istruzione.it/scuola_digitale/curricoli_digitali.shtml per i curricoli digitali attualmente in corso (scade il 10 Novembre 2016) prevede 4,3 M€, riservati alle reti di scuole pubbliche e paritarie, destinati alla produzione di 25 curricoli digitali su 10 tematiche, divise in Fondamentali e Caratterizzanti, secondo il seguente schema:

Fondamentali:

  • diritti in internet
  • educazione ai media (e ai social)
  • educazione all’informazione

Caratterizzanti:

  • STEM (competenze digitali per robotica educativa, making e stampa 3D, internet delle cose)
  • big e open data
  • coding
  • arte e cultura digitale
  • educazione alla lettura e alla scrittura in ambienti digitali
  • economia digitale
  • imprenditorialità digitale

Dal mio punto di vista, non è troppo condivisibile questa biforcazione: da un lato le “educazioni a…”, dall’altro il coding, la robotica, i dati aperti. Così si introducono già nei temi e nei curricoli le separazioni che poi è difficile recuperare: tra riflessione teorica e attività tecnica, tra aspetti etici (diritti, doveri) e pratici, tra apprendimento cognitivo e affettività. Ma pazienza, in qualche modo si doveva distinguere.

Il dettaglio dei possibili contenuti dei curriculi è descritto nell’Allegato 2 (http://www.istruzione.it/scuola_digitale/allegati/2016/Allegato_2_Avviso_Curricoli_Digitali.pdf). A mio avviso, si tratta di testi non particolarmente omogenei, perché scritti da persone diverse, come si capisce dal linguaggio utilizzato e dalla formattazione libera. Si può supporre quindi che sia stato dato l’incarico di definire i contenuti a esperti di dominio che non si sono parlati tra loro. Noto che di opensource non si parla mai, e pazienza (ma anche no).

Non mi è chiarissimo il processo di valutazione delle proposte di curriculo. Da quanto ho capito io, ci saranno tre fasi: in una prima vengono richieste solo poche slide di presentazione e un formulario in cui vengano definite le scuole partecipanti, di cui almeno una deve avere esperienze dimostrabili nel settore (solo una?). In una seconda fase, viene stilata una graduatoria e vengono selezionate 125 proposte. Ai soggetti selezionati viene chiesto di inviare il progetto con un esempio, e solo 25 proposte vengono alle fine finanziate, con un massimo di 170.000 € per proposta. Ci sono poi altri 50.000 € per la migliore proposta di comunicazione del progetto (mi è sfuggito come si partecipa a questa speciale categoria).

La commissione di valutazione verrà scelta solo dopo la chiusura della prima fase. I dettagli delle altre due, come pure i processi di monitoraggio, verranno, si spera, chiariti in seguito. Potrebbe succedere, ad esempio, che i curricoli prodotti si sovrappongano oppure che lascino scoperte delle aree? Che seguano modelli completamente diversi? Che lo sviluppo non rispetti le premesse? Speriamo di no, speriamo che sia prevista anche una fase di aggiustamento in corsa.

Ma a prescindere da questi dettagli, ci sono molti aspetti che giudicherei positivi: la sottolineatura dell’importanza degli aspetti di cittadinanza digitale, la richiesta esplicita che i curricoli siano rilasciati come OER (peccato non si diano indicazioni di licenze specifiche: i contenuti prodotti si potranno usare gratis, ma si potranno anche modificare?), la citazione almeno della possibilità di analytics ovvero di raccolta dei dati di utilizzo.

Nel passato, il Ministero dell’Istruzione aveva scritto e pubblicato Programmi e Indicazioni per i vari ordini di scuola. Con la “scuola dell’autonomia”, con il passaggio dalla scuola dei programmi alla scuola dei curricoli, questo compito spetta alla scuola. Le indicazioni ministeriali però esistono ancora, e quattro anni fa per esempio sono state sottoposte ad un processo di verifica pubblica quelle per la scuola dell’infanzia e del primo ciclo, cioè fino alla scuola secondaria di primo grado inclusa. Per altro, nel documento finale (http://hubmiur.pubblica.istruzione.it/alfresco/d/d/workspace/SpacesStore/162992ea-6860-4ac3-a9c5-691625c00aaf/prot5559_12_all1_indicazioni_nazionali.pdf , mi spiace ma non c’era un link più corto) la parola digitale compare solo quattro volte: due nel conteste delle competenze chiave raccomandate dall’Europa, e due nell’area Tecnologia. Leggendo i risultati della consultazione, si capisce che secondo il 24% degli intervistati il digitale avrebbe dovuto essere più presente.

Comunque: in questo caso, forse per la prima volta, si chiede ai diretti interessati, cioè alle scuole – o meglio, a reti di scuole coadiuvate da esperti universitari o altri scelti dalle scuole stesse – di realizzare dei curricoli di livello nazionale, da condividere con le altre scuole.

E’ una buona maniera di affrontare la questione? Non lo so, ma non mi convince in generale la logica dei bandi, che permette di distribuire soldi alla Scuola – anzi, ad alcune scuole – che poi magari le usano come possono, sulla base della loro abilità a scrivere progetti. Bandi che si limitano a finanziare la creazione di un oggetto digitale (che so, un sito, una piattaforma di collaborazione o di e-learning), ma non il suo mantenimento e sviluppo futuro, col risultato che il suddetto sito muore dopo poco. Bandi che stimolano migliaia di proposte, ma ne finanziano solo una piccola percentuale, per cui il lavoro della maggioranza è sprecato. Bandi i cui risultati non sono soggetti a verifica se non contabile. Bandi in cui la coerenza dei prodotti viene cercata a posteriori, magari con un bando ulteriore.

E’ una maniera democratica? Non so nemmeno questo. Va avanti la scuola che ha al suo interno docenti capaci di progettare, nel senso specifico di “scrivere progetti finanziabili”. E si procede in maniera discontinua, per gettiti intermittenti. Per esempio, mi domando: ma una volta creati i curriculi, quali risorse verranno impiegate per aggiornarli? E chi lo farà? O si pensa che in campo come questo si possa creare IL curriculo definitivo?

Si poteva fare diversamente? Io penso di si. Faccio un piccolo esercizio di immaginazione.

1. Si poteva creare un piccolo gruppo di lavoro (di cui venissero pubblicati i nomi dei partecipanti) con almeno quattro compiti diversi:

  • raccogliere buone pratiche da paesi dove questi curricoli esistono e sono già stati sperimentati con successo
  • valutare i risultati dei Piani Ministeriali passati sul tema dell’IT, luci e ombre
  • esaminare le esperienze già realizzate nelle scuole o dalle associazioni
  • raccogliere idee tramite una ricerca non solo sul materiale cartaceo, ma anche su quello digitale, compresi i social network system.

Alla fine di questo lavoro preliminare, il gruppo di superesperti avrebbe potuto produrre un documento che indicasse obiettivi, limiti, metodi, errori da evitare, buone pratiche. Il documento avrebbe dovuto evidenziare, tra l’altro, gli incroci tra le aree tematiche. Non solo un elenco di argomenti, quindi.

2. Poi il MIUR avrebbe potuto convocare un piccolo numero di esperti, tre per ogni area tematica (per esempio uno di estrazione universitaria, un docente e un esperto di dominio), scelti mediante una procedura concorsuale pubblica, fornirgli il quadro generale e dargli modo di produrre una versione alfa del curriculo.

3. Le versioni alfa avrebbero potuto essere condivise preliminarmente tra tutti i gruppi, per verificarne la coerenza e l’omogeneità e la rispondenza al quadro generale.

4. La versione beta, risultante dal lavoro di omogeneizzazione, sarebbe potuta essere diffusa presso un numero più grande di docenti, dei quali si sarebbero raccolti i commenti. Si sarebbe potuta immaginare una piccola sperimentazione per tutti i curricoli, per permettere ulteriori aggiustamenti.

5. La versione RC (release candidate), risultato della sperimentazione, sarebbe stata pubblicata in una piattaforma aperta dove tutti gli utenti potessero suggerire miglioramenti. Non essendo necessaria una “versione finale” congelata, i curriculi avrebbero potuto essere aggiornati in maniera continua, o “forkati” come si fa nei repository di software opensource.

Costo totale: quasi sicuramente inferiore ai 4,3 milioni investiti nel bando. Immaginando trenta persone che lavorino per un anno a tempo pieno, fanno più o meno un milione di €, più il costo del gruppo iniziale dei superesperti (che voglio sperare non costerebbe altri tre milioni di €…). Con i soldi avanzati si regalava carta igienica a tutti…

Coinvolgimento degli utenti finali: sicuramente maggiore, direi. Nella modalità scelta dal MIUR, supponendo che ogni team di progetto sia composto da 20 tra docenti ed esperti, il numero totale delle persone coinvolte è di 500. Che è meno dei docenti intervistati per le Indicazioni del 2012.

Qualità dei prodotto finale: non so dirlo, ma il processo descritto sarebbe servito a controllarla a più riprese. E la prassi dell’opensource insegna che questo modo funziona abbastanza bene.

Ma perché non sono nato là?

Ott
09

La citazione (che dovrebbe essere chiara per chi ha almeno cinquant’anni) è da Claudio Baglioni, ebbene si, “Viva l’Inghilterra”, anno 1973.

Si riferisce al fatto che mi danno (voce del verbo dannare) almeno dal 1999 intorno alla necessità di un’analisi (socio)linguistica del codice sorgente e non trovo un cane disposto ad ascoltarmi. O quasi, come si vede da http://steve.lynxlab.com/?p=73

Invece in USA e in Canada ci lavorano sul serio, dentro l’università, mettendo insieme ricercatori di linguistica e di informatica. E quest’articolo, pubblicato  nei Proceedings di una conferenza annuale del Psychology of Programming Interest Group che si tiene nel’UK, è finalmente (finalmente?) un esempio pratico di un tentativo reale di applicazione di modelli e strumenti sociolinguistici al codice sorgente da parte di un gruppo di ricercatori dell’Università di Lethbridge. Molto minimale ed embrionale, ma insomma esiste.

Schermata da 2016-10-10 21-59-45

Il tema è quello del genere. Si può riconoscere solo leggendo il codice se l’autore è uomo o donna? Pare di si. E che ce ne importa, diranno i miei piccoli lettori. Ci importa, perché come premettono le autrici, è il primo passo per vedere se nel codice ci sono tracce anche della lingua materna, delle conoscenze pregresse di altri linguaggi, del livello sociale o della cultura generale. E allora? Allora è il primo passo per riconoscere che il codice sorgente è un testo, risultato di un’attività di scrittura, e quindi può contenere  tutte le varianti possibili che una scrittura permette: stili, personalità, mode, esperienze trascorse. Non importa che il lessico sia limitato (ma estensibile a piacere) e che la grammatica sia molto restrittiva (ma permette forme alternative). Un programma, definitely, is not just an implementation of an algorithm which solves a problem. Si scrivono programmi per scopi diversi: per gioco, per sfida, per sperimentazione, per produrre un effetto artistico, per imparare. A monte si sceglie il linguaggio in cui scriverli, il che ha un effetto sull’orientamento generale del programma, su come viene letto, come verrà modificato e come sarà punto di partenza per nuovi programmi.

Ne deriva che quando si insegna a scrivere codice, come quando si insegna a scrivere – ma a scrivere bene – non basta insegnare la grammatica e il lessico. Ci vuole molto, moto di più. Ci vogliono buoni esempi (lettura), modelli, obiettivi, strumenti di valutazione. Ne deriva, probabilmente (ma questa è solo una mia ipotesi) che chi legge e scrive molto, programma meglio; che introdurre lo studio di come si crea e sviluppa una storia permetterebbe di ottenere dei codici sorgenti migliori, che come le buone storie “si reggono”. Le buone storie si tramandano nei secoli, come le fiabe; forse è così anche per i buoni programmi.

Rice, J. E., I. Genee, and F. Naz. “Linking linguistics and programming: How to start?(work in progress).” Proc. 25th Annual Psychology of Programming Interest Group Conference-PPIG. 2014.

Monitoraggio, brutta parola

Ott
09
Sul sito Programma il Futuro sono scaricabili dei report sui dati sulle attività svolte nel primo (http://programmailfuturo.it/media/docs/Rapporto-monitoraggio-settembre-2014-gennaio-2015.pdf) e nel secondo anno di progetto (http://programmailfuturo.it/media/docs/evento-celebrativo/programma_futuro-MIUR-26mag2015.pdf). Numero di ore, numero di insegnanti per regione e per disciplina, numero di classi e studenti coinvolti, e poi gradimento, valutazioni, osservazioni, tutti corredati di grafici. Dati raccolti in parte grazie a Google Analytics (altrimenti perché si attiva ogni volta che apro una pagina in Code.org?) e in parte grazie a questionari.
Questa cosa mi solletica.
Dieci anni fa, quando lavoravo a Scienze della Comunicazione, ho fatto una ricerca sui forum del corso concorso per dirigenti scolastici di INDIRE (2006). Siccome la piattaforma usata non prevedeva nessun tipo di monitoraggio fine (e peraltro non esisteva più…), siamo partiti da una copia del DB Oracle e siamo riusciti a ricostruire i profili, le conversazioni, i temi, le modalità comunicative. Il risultato principale è stato forse però l’insieme di query SQL che avrebbero permesso di analizzare allo stesso modo i dati di altri forum che usavano la stessa struttura dati, ad esempio per vedere se c’erano invarianti legate alla dimensione geografica, all’età, alle esperienze pregresse. Non mi risulta che siano stati mai usati, ma pazienza.
Cinque anni dopo, il MIUR ci affidò una ricerca per valutare il risultato di tre piani di formazione nazionali. La cosa anche qui fu piuttosto difficile, perché non c’erano dati originali, ovvero il progetto delle attività non contemplava la raccolta di dati prima, durante e dopo. Sono stati analizzati fondamentalmente i risultati di questionari somministrati ai docenti. Il che come si può immaginare non è la stessa cosa di avere accesso alle informazioni primarie.
Nella recente formazione per gli Animatori Digitali del Lazio, che mi ha coinvolto solo come tecnico fornitore di piattaforme, ho proposto di impostare un piano di monitoraggio all’inizio delle attività. Non per valutare nessuno, ma perché quando domani qualcuno arriverà a chiedersi se e come ha funzionato avrà bisogno di qualche informazione in più rispetto ad un sondaggio finale.
 
Insomma la fatica per ottenere dei risultati di qualche qualità mi pare inversamente proporzionale alla lungimiranza di chi gestisce un progetto. Se poi i dati raccolti (naturalmente anonimizzati) venissero resi disponibili come opendata (oltre alle elaborazioni in PDF), si potrebbe lasciare a chi ne ha voglia e competenze il compito di far emergere qualche idea buona (qui ho esagerato, vabbè).
 
Se ogni attività di coding fosse preceduta da una raccolta di informazioni (chi è il docente, che competenze ha, che lavori sono stati fatti con quella classe in precedenza) e magari da un test di ingresso, se durante le ore di coding si potesse registrare lo scambio tra gli studenti e con il docente o il processo di acquisizione di nuove forme sintattiche, se le attività fossero seguite da un test finale, se se se… ci sarebbero alla fine dati su cui riflettere. Anche senza avere per forza la pretesa di dimostrare che il coding serve (o non serve) ad un obiettivo specifico.
Magari verrebbero fuori delle connessioni a cui non si era pensato. Per esempio, l’influenza della famiglia o dell”ambiente sociale, o della lingua materna; il peso delle competenze informatiche del docente (o delle dimensioni dello schermo, o del tempo atmosferico, o del segno zodiacale del docente, o che so io). O magari non viene fuori niente. Ma senza quei dati non si saprà mai. Non mi sto inventando i Learning Analytics: se ne occupa tanta gente, la Microsoft nell’accordo con il Ministero dell’Educazione Nazionale Francese ha specificato che il suo intervento sul coding prevede anche questo tipo di attività di monitoraggio e analisi dei dati (http://cache.media.education.gouv.fr/file/Partenaires/17/7/convention_signee_506177.pdf, pag 4). Se lo fa Microsoft, a qualcosa servirà, no?
 
Quello che voglio dire non è tanto che ci deve essere un quiz alla fine che ci permetterà di dire se Mario ha imparato il pensiero computazionale (o uno strumento di analisi degli elaborati come DrScratch, http://drscratch.org/, – grazie Massimo per la segnalazione – che pure potrebbe essere utile); ma che una Piano Nazionale dovrebbe dotarsi dall’inizio di un protocollo e di strumenti per valutare la qualità di quello che fa, e non solo la quantità e le opinioni. Se Google ha costruito la sua fortuna sull’analisi dei testi e dei comportamenti della popolazione mondiale, ci sarà pure una ragione. Che, nel nostro caso, non è poter vendere pubblicità e servizi mirati, ma valutare globalmente un piano nazionale (non il coding), e per una volta non a posteriori.
E’ un suggerimento per il terzo anno…

Dietro il coding

Set
25

copertina

In occasione dei due seminari in Piemonte (Ivrea e Torino), di cui qui trovate maggiori informazioni, ho preparato delle slide. Troppe slide. Alla fine mi hanno fatto notare che più che una presentazione stava diventando un libro.

 

 

E allora ho colto l’occasione, reimpaginato, aggiunto, corretto, e ho realizzato un piccolo ebook dal titolo “Dietro il Coding”. Non è una difesa del coding né una sua condanna. E’ semplicemente una raccolta di domande e di riflessioni che hanno lo scopo di stimolare quelle degli altri, soprattutto di quelli che intendono dedicare qualche ora al Coding con i propri ragazzi. Riflessioni che partono da lontano, da almeno venticinque anni fa, ma che ho cercato di aggiornare andando a caccia di opinioni, di proposte e di alternative. Una parte importante è dedicata al progetto “Programma il Futuro” e a Scratch, ma purtroppo solo poche righe al nuovo tema dei curricoli digitali, che andrà seguito con attenzione.

Questo è l’indice:

Come nasce questo testo
1. Che cos’è il Coding
2. Perché è così importante
3. Una valutazione storica
4. Come si parla del Coding?
Primo Intermezzo: che significa opensource?
5. A che serve il Coding?
6. Chi può insegnare il Coding?
Secondo Intermezzo: le differenze tra linguaggi
7. Che linguaggio?
8. Il modello didattico dietro Scratch
9. Come andrà praticato il Coding
10. Un po’ di storia…
11. E oggi?
12. Come potrebbe funzionare davvero
Suggerimenti di lettura

L’ebook è rilasciato con licenza CC BY/SA e lo potete scaricare da  qui.

Intelligenza artificiale: media

Mag
23

Il tema dell’IA sta facendo capolino sempre più spesso sui media digitali.
Mi hanno colpito alcuni articoli.

1. Il docente robot
I fatti: al prestigioso Georgia Institute of Technology gli studenti del MOOC su IA hanno difficoltà a trovare le pagine  con i voti o i compiti e scrivono ai tutor chiedendo lumi.
I tutor a loro volta hanno difficoltà  a rispondere a tutte le email.
C’erano varie possibilità:
– migliorare l’interfaccia del MOOC mettendo in evidenza i link a alle pagina utili
– creare delle FAQ con le domande più frequenti e le risposte sensate.

Invece i gestori del corso hanno deciso di creare un BOT, cioè un utente automatico del forum che si basava sulle parole chiave e sulla somiglianza delle domande per fornire delle risposte. Dopo qualche esitazione, il software ha cominciato a funzionare bene e gli studenti non si sono accorti della differenza. Bravi, bell’esercizio.
Il primo commento che mi viene in mente (ma penso sia ovvio per tutti): beh, quel MOOC era proprio progettato malino. Se l’interazione studenti-tutor è talmente limitata che gli studenti non trovano nessuna differenza tra le consuete risposte umane e quelle di Jill Watson (il bot), significa che il corso non è era un granché interattivo. Vuol dire che va migliorato il modello didattico del corso, no?

Il titolo dell’artico però è: “L’insegnante è un robot. Ma non se ne accorge nessuno
Sottotitolo: “Si chiama Jill Watson, e fa l’assistente in un corso di programmazione. Nessuno degli studenti, però, si è accorto che è un computer.
Nel testo: “La piaga più grande dei corsi online”, ha spiegato Goel [Ashok Goel, il docente], “è l’alto tasso di abbandono da parte degli studenti. La causa principale è che gli studenti stessi lamentano di non avere abbastanza interazioni con gli insegnanti. Abbiamo creato Jill per fornire risposte e feedback più veloci. […] ”
Commento dell’articolista: “Chi meglio di un software per insegnare a programmare algoritmi di intelligenza artificiale?” Davvero. Ma qui non c’è nessun docente software…
Battuta finale: “E nessuno degli studenti si è accorto di avere a che fare con un computer. Qualcuno ha chiesto addirittura a Jill un appuntamento dal vivo. Impossibile, peccato.”

Insomma, il MOOC non brilla per la modernità del modello didattico – e gli studenti se ne accorgono –  ma il modo per riparare è fornire risposte più veloci? Si prende un compito ripetitivo di supporto, lo si automatizza: e questa sarebbe la formazione gestita da un’Intelligenza Artificiale? Una confusione tra docente, tutor, FAQ, supporto, insegnamento che non aiuta a promuovere una cultura dell’apprendimento digitale, ma la allontana sempre di più.

http://www.repubblica.it/tecnologia/2016/05/20/news/insegnante_robot-140220189/

2. Machine learning for all

Titolo dell’articolo: “Soon We Won’t Program Computers. We’ll Train Them Like Dogs
Sotto (anzi, sopra)titolo: “The rise of Artificial Intelligence and the End of Code
Si parla delle reti neurali (che in realtà sono in giro da un bel po’) e di big data: tantissimi dati vengono proposti ad un algoritmo che cerca di riconoscere strutture invarianti. Dall’accento sul codice si passa all’accento sui dati. Questo modello di software viene presentato come il futuro: presto tutti i programmi saranno di questo tipo, e non ci sarà più bisogno di programmatori che scrivono codice.
Con le parole di Monaghan: “Our machines are starting to speak a different language now, one that even the best coders can’t fully understand. If you want to teach a neural network to recognize a cat, for instance, you don’t tell it to look for whiskers, ears, fur, and eyes. You simply show it thousands and thousands of photos of cats, and eventually it works things out. […] Programming won’t be the sole domain of trained coders who have learned a series of arcane languages. It’ll be accessible to anyone who has ever taught a dog to roll over. “For me, it’s the coolest thing ever in programming,” Thrun says, “because now anyone can program.”

Ora, a parte il fatto che di programmi che scrivono programmi ce ne sono sempre stati (i compilatori fanno appunto questo, con grande modestia), il machine learning si applica solo ai casi in cui esistono milioni di istanze che si possono confrontare – e non tutti i problemi cui si applica il software sono di questo tipo. A me pare che l’articolista si sia divertito a fare l’apocalittico (perderemo il controllo dei nostri software, tutti i programmatori a casa…) ma faccia finta di non sapere che i programmi si progettano, si producono, si valutano, si modificano, si biforcano. Prospettare un futuro di sole reti neurali significa ridurre tutte le attività dei programmatori alla sola scrittura di codice che implementa algoritmi.
Ancora, un riduzionismo mascherato da visione futuribile. Certo non aiuta a formare una generazione di coders creativi.

http://www.wired.com/2016/05/the-end-of-code/