#codingmonamour

Le 25 domande sul coding (con qualche risposta a caldo)

1. Pensiero computazionale e pensiero logico/matematico sono sinonimi? se no, quali sono le differenze?

Stefano

Sono diversi, almeno a giudicare dalla maniera in cui viene inteso pensiero computazionale nei testi che ne parlano. Il pensiero computazionale fa riferimento ai concetti di limite e di risorsa. Computabile significa risolvibile nei limiti e con le risorse assegnate. E' chiaro che l'informatica (la pratica dell'informatica) utilizza la logica e la matematica, ma non significa che si possa ridurre ad esse. In informatica ci sono altri concetti (lo stato di un sistema all'istante T) che sono costitutivi, mentre in matematica possono esistere solo come derivati di un'operazione di astrazione.

Alfonso

Non voglio dilungarmi su cosa sia il pensiero e in una lunga classificazione. Più che di pensiero, però, qui parlerei di ragionamento. Il ragionamento matematico è deduttivo, quello fisico è induttivo, quello computazionale utilizza questi ragionamenti, ma se parliamo di programmazione , allora ci accorgiamo che sfrutta termini, oggetti creati ad hoc, quindi da un pensiero preesistente. Insomma se parliamo di coding allora non parlerei di pensiero “nuovo” ma di preesistente e di tipo matematico, a questi resta connesso anche quello computazionale (il che non eslude che possa essere presente in altre discipline vedi Filosofia)

Massimo

Non si dovrebbe compartimentizzare ed occorrerebbe parlare di pensiero umano e basta. Come sfaccettature di questo sono diversi e complementari. Il pensiero computazionale non è solo logico/matematico ma ne usa le caratteristiche. Qui è la differenza per esempio tra i soliti citati Papert e Wing.

Francesca

Nella scuola primaria occorre attivare il pensiero, in generale.

Walter

Credo che la scelta di una parola come "computazionale" cozzi con lo sforzo che vedo di fare finta che non si stia parlando di programmare computer. La definizione della Wang, secondo cui dovrei esplicitare un problema come se dovessi farlo eseguire da un'altra persona è fuorviante, perché con un interlocutore umano non ho alcun bisogno della profonda del problema che mi è invece necessaria per creare un programma risolva il problema. Nel merito, no. Il pensiero logico-matematico è più formale ma può permettersi di tralasciare moltissimi dettagli senza i quali la programmazione rimane solo "specifiche di alto livello". Penso al tempo e alle risorse, per esempio.

Sono d'accordo con Massimo: c'è il pensiero e basta, il resto sono solo contesti d'uso.

2. Imparare a programmare a scuola è utile in sé, oppure solo nel contesto di un dominio (fisica, geometria, …)?

Stefano

non credo nella necessità che la scuola (soprattutto primaria) si occupi in maniera preferenziale di insegnare il pensiero computazionale, non più di altri modi di affrontare la vita, né che il pensiero computazionale sia più educativo di altre discipline o arti. Credo invece che la didattica (se impostata in maniera costruttivista) può averne un grande vantaggio perché programmare consente di fare ipotesi, di costruire modelli, di condividerli e verificarli. Queste attività però richiedono che si abbiano competenze di programmazione.

Alfonso

Da fisico credo sia utile in un contesto scientifico ma sarei ovvio. La questione è, quanto di pensiero computazionale già si fa a Scuola ma non lo si chiama così? Secondo me tanto…

Massimo

Imparare a programmare i computer è utile in sé ed uno dei primi vantaggi possibili (tralasciando il pensiero computazionale questo sconosciuto) è che stimola la consapevolezza di come è fatto un software e ottimisticamente ne limita il suo uso passivo. Chi programma si rende conto più di altri sulla tendenziale malevolenza di un software.

Francesca

Imparare a programmare è utile per la pianificazione di attività, la soluzione di problemi, la visione delle risorse disponibili. Programmare non è sinonimo di programmare software.

Walter

Programmare software è utile in sé. La pianificazione è anch?essa utile, ma è un'altra cosa. Programmare software è utile perché, a differenza di qualsiasi altra cosa (forse con la sola eccezione della dimostrazione di teoremi) richiede una comprensione assoluta del problema in ogni suo dettaglio.

Chi scrive un programma per il problema X  diventa un esperto di X. Questo è utile in modo diretto perché sviluppa la capacità di concentrazione, di analisi e di gestione della complessità; e in modo indiretto perché fa scoprire la distanza fra "conoscere una cosa" e "conoscere una cosa". 

3. Il coding è utile solo in campo scientifico? Se no, in quali altri campi?

Stefano

Vedi sopra. Non c'è motivo di limitarsi alle discipline "dure". Si possono costruire modelli funzionanti di una lingua vera o immaginata, di periodo storici, di specie esistenti o aliene.

Alfonso

Se il coding è programmazione allora esso nasce da un sostrato scientifico, la matematica è utile in campi non scientifici? Decisamente sì, lo stesso vale per il coding.

Massimo

Occorre mettersi d'accordo su cosa sia 'coding' per prima cosa. In ogni caso credo sia utile in molti campi anche non scientifici, in fondo l'informatica tratta della automazione delle informazioni qualunque esse siano. Ne fa sicuramente una branca del sapere trasversale.

Francesca

Se intendiamo la “macchina” come automa in grado di ripetere le stesse operazioni, occorre ricercare quali sono le variabili “ripetitive” nelle diverse discipline e se abbia senso e ricadute sugli apprendimenti spendere tempo e risorse per realizzare progetti.

Walter

Il computer è uno strumento universale, ovvero applicabile a qualsiasi contesto. La programmazione è la quarta gamba dell'istruzione dopo "leggere, scrivere e far di conto".

4. È più importante risolvere problemi dati o creare strutture originali con comportamenti emergenti?

Stefano

Vale la pena impegnare risorse per aiutare gli studenti a costruire non solo soluzioni nuove a problemi dati ma anche soluzioni a problemi ancora da trovare. Non si chiede agli artisti di risolvere problemi – i problemi li incontrano per strada.

Alfonso

E’ più importante porre domande nuove e poi risolverli in un approccio di problema aperto

Massimo

Ambedue. La creazione di strutture originali porta a problemi da risolvere, come esistono problemi da strutture non originali.

Francesca

L’esecuzione del “compito” assegnato non porta necessariamente ad un incremento della capacità di porre domande. E’ importante sviluppare, nel corso del ciclo della scuola primaria, la capacita di problematizzare la realtà.

Walter

Io vedo che con "coding" si cerca di promuovere un approccio del tipo "traduci questo procedimento in codice". Il che spiega perché aborro il termine (peraltro non usato dagli informatici). Mentre quello che sembra venire proposto fa molto "fabbrica del software", approcciare la soluzione di un problema tramite un programma è un'attività assolutamente creativa e allo stesso tempo assolutamente rigorosa, quindi la distinzione della domanda non si pone.

5. È più importante saper progettare un algoritmo o saperlo scrivere correttamente? E da dove bisogna cominciare?

Stefano

Se il processo fosse sempre e solo dal progetto alla realizzazione, non ci sarebbe invenzione ma solo applicazione. Però nella pratica della programmazione non è sempre così. Pur essendo considerata una maniera "sporca" di procedere, nei fatti il progetto viene rivisto sulla base di nuove intuizione che arrivano solo quando si scrive il codice. Soprattutto in contesti collaborativi, in cui certe soluzioni proposte da alcuni studenti possono far scattare una visione generale diversa in altri.

Alfonso

Molti fisici e matematici non sanno programmare eppure sanno progettare algoritmi. Scrivere un algoritmo la vedo una operazione necessaria ma pur sempre da tecnici

Massimo

Si deve saper progettare un algoritmo in prima istanza, lo scriverlo correttamente è una fase successiva. Vero è che spesso progettare un algoritmo è un processo iterativo per susseguenti raffinamenti concettuali. Un algoritmo che in astratto può sembrare perfetto facilmente incontra problemi implementativi e dovrà essere adattato. La nostra mente ragiona in termini di potenza di calcolo assoluto e l'algoritmo dovrà essere inevitabilmente 'compresso' per poter entrare in una macchina finita.

Francesca

Nella scuola primaria comprendere semplici algoritmi, descriverli e/o riprodurli attraverso la programmazione potrebbe avere una valenza positiva e utile.

Walter

Ideare un algoritmo e implementarlo (scusate il puntiglio linguistico) sono due attività distinte, che possono essere affrontate in momenti distinti. Inoltre, il fatto di ideare un algoritmo non implica la capacità di implementarlo, né che la propria implementazione sia migliore di un'altra. Spesso, anzi, implementazioni successive di uno stesso algoritmo producono miglioramenti in termini di tempo di calcolo e di risorse.

6. La capacità di leggere un codice sorgente scritto da altri è uno degli obiettivi del coding?

Stefano

Dovrebbe esserlo. Esattamente come in tutte le altre attività di apprendimento di un codice: lingua madre, matematica, lingua 2. La modalità visuale di creazione di un programma (vedi 9) non introduce un linguaggio diverso, come in alcuni linguaggi veramente visuali, ad esempio ToonTalk. Peraltro andrebbe approfondita: leggere un codice rappresentato da blocchi è più semplice di leggere un codice scritto? Scattano dei meccanismi di riconoscimento diversi da quelli abituali della lettura di un testo (destra-sinistra-altro-basso)? I colori – che sono presenti anche negli editor di codice testuali, ma con una differente grammatica – sono aiuti efficaci? Che rapporto c'è tra l'inclusione dei blocchi in blocchi più grandi e gli equivalenti scritti (indentazione, parentisi)? Mi rendo conto che sono altre domande e non risposte.

Alfonso

Leggere codici di altri è spesso una impresa laboriosa in termini di tempo, spesso inutile perché ognuno ha il suo codice in testa. Il coding dovrebbe avere come obiettivo primo quello di razionalizzare e modellizare un problema, in termini di codice

Massimo

Non mi pare lo sia, ma dovrebbe esserlo. Come si è in grado di leggere libri scritti da altri. Un linguaggio di programmazione è espressione del pensiero umano sia nelle sue caratteristiche che nella sua applicazione. Saper leggere il codice di altri è un arricchimento.

Francesca

Imparare a leggere un codice sorgente programmato da altri (parliamo di cose semplici!!) può aiutare la comprensione del codice stesso.

Walter

Io devo ancora capire cosa sia questo "coding". Se parliamo, come dovremmo, di programmazione, allora sì. Leggere codice di altri è un modo per imparare a collaborare, per imparare a creare materiali che non siano del tipo "ma io lo capisco", e per imparare a programmare meglio.

Il codice è un linguaggio, e come tale riflette lo stile cognitivo di chi lo usa. Leggere codice scritto da un'altra persona è come leggere un libro: apre una finestra sull'anima dell'autore.

7. Quanto conta nell'efficacia delle attività di coding l'aspetto affettivo (l'entusiasmo, il divertimento, la piacevolezza, la facilità, il rafforzamento dell'autostima)?

Stefano

Conta, come conta nelle altre attività. Ma bisognerebbe fare attenzione almeno a due aspetti: quanto diventa centrale il rafforzamento dell'autostima dei docenti (che si trovano a condurre il gioco) e quanto è pericolosa la presentazione della facilità come valore assoluto. Infine: c'è un piacere nel creare un universo di cui si è demiurghi che può confinare con una forma di autismo.

Alfonso

Sarebbe possibile fare una attività senza essere emotivamente coinvolti? Direi di no. Il coding ha in se il germe del facilitatore iconico, ma l’immediatezza rischia a volte di banalizzarlo

Massimo

Molto, la gratificazione è un molla imprescindibile. La gratificazione però non deve essere immediata, o meglio, stadi di gratificazione diversi per età diverse. La gratificazione immediata può essere un'arma a doppio taglio perché pone lo studente in una fase euforica da sovrastima. La troppa gratificazione porta ad una stasi di apprendimento ed evoluzione ritenendo di aver raggiunto lo scopo prefisso. È anche uno dei problemi negli sviluppatori professionisti che tenderanno per esempio a scrivere codice sempre con lo stesso linguaggio anche se a conoscenza di alternative migliori.

Francesca

Con i bambini l’aspetto ludico ha un grande peso, soprattutto all’inizio delle attività percepite come “games”. Di fronte allo sforzo cognitivo che l’attività necessariamente richiede quando diventa più complessa, l’entusiasmo generale si ridimensiona.

Walter

C'è l'entusiasmo della novità e del divertimento, e c'è l'entusiasmo della sfida intellettuale. Il primo non è strettamente necessario, perché la programmazione non è una forma di intrattenimento; il secondo sì. L'aspetto affettivo superficiale (il solo che viene promosso dal movimento del "coding") può essere utile se porta il ragazzo a scoprire il fascino di una sfida intellettuale. 

8. Gli aspetti di genere vanno presi in considerazione? Se si, come?

Stefano

E' uno degli aspetti meno studiato. In Paesi come gli Usa il superamento del gap tra programmatrici e programmatori è addirittura uno degli obiettivi dell'introduzione del coding a scuola. Ma donne e uomini affrontano problemi e soluzioni negli stessi modi? In culture in cui ai poli maschile e femminile sono associati stereotipi forti la competitività, il gioco, l'identificazione con un avatar vanno studiati e utilizzati in maniera più attenta.

Alfonso

E’ solo una sovrastruttura sociale, di fatto il gap tra uomini e donne nel coding è quasi nullo (e tendente verso una migliore efficacia da parte delle donne)

Massimo

Quale genere? Se maschile e femminile non vedo intellettualmente differenza.

Francesca

Nella scuola primaria non si pone il problema con gli alunni. Potremmo porlo come insegnanti 99% femminile. Bogliolo ne ha creato il suo target con successo.

Walter

È un problema che si pone solo dopo la primaria. In effetti, il solo motivo fondato per proporre programmazione e/o informatica alla primaria potrebbe essere lo sruttamento della grande disparità cognitiva fra ragazzi e ragazze nella primaria e secondaria di I grado, a favore delle seconde. Scoprire di essere brave in attività che più avanti sarebbero classificate come "da maschi" potrebbe essere un incentivo a non abbandonarle una volta che l'identità sociale propone una più rigida distinzione di genere.

Superata la secondaria di I grado è necessario sottolineare il contributo femminile alla disciplina, che è stato enorme, e possibilmente incentivare la partecipazione femminile.

9. La modalità cosiddetta "visuale" è fondamentale solo per i più piccoli o introduce vantaggi in generale (es. l'impossibilità di commettere errori di sintassi)?

Stefano

L'impossibilità di commettere errori non è necessariamente un plus. L'errore è un potente motore di apprendimento. Inoltre se c'è un pensiero linguistico che precede la formalizzazione, potrebbe essere più efficace la conversione da un linguaggio all'altro che da un linguaggio verbale a uno iconico.

Alfonso

E’ solo una delle possibili rappresentazioni.
Alcuni studenti sono più propens alla geometria, altri all’algebra, personalmente non amo il corrispettivo visuale. E’ solo uno dei tanti facilitatori

Massimo

La modalità visuale può essere adatta in bambini piccoli con capacità di scrivere limitata. L'errore di sintassi (viene catturato dal compilatore od interprete ed evidenziato) è meno problematico dell'errore logico però ed i linguaggi visuali non proteggono dall'errore logico, oltretutto se troppo limitati pososno introdurre distorsioni logiche.

Francesca

Per i più piccoli è un facilitatore.

Walter

Il visuale abbassa i requisiti iniziali ma poi presenta alcuni ostacoli:

  1. catalizza l'attenzione sugli aspetti visuali del contenuto (e.g. ogni attimo disponibile per sprite, sfondi e suoni, il minimo indispensabile e controvoglia per lo script) 
  2. rende più lento lo sviluppo una volta acquisita una certa pratica 
  3. rendendo trasparente e immediato il livello sintattico, non abitua a considerare necessaria l'attenzione, perché l'atto motorio dopo un po' diventa automatico. Questo rende molto più difficile (e più oneroso, perché stravolge la modalità acquisita) affrontare gliinevitabili errori di livello logico
  4. mentre i meno portati per la programmazione hanno questi problemi, quelli più portati si sentono presto limitati da uno strumento che percepiscono "da bambini" (e che viene proposto come tale) 

10. Vanno usati ambienti (e linguaggi) diversi in base all'età? se si, secondo quale principio (es. andare verso linguaggi "veri" e richiesti dal mercato, oppure linguaggi più potenti, o più specifici per un certo dominio)?

Stefano

Se si parla di coding per tutti, nella scuola primaria, lo scopo non è preparare dei futuri programmatori, ma di fare una didattica più efficace. Quindi va scelto un linguaggio semplice, ma abbastanza potente da poter permettere almeno l'astrazione, che non sia necessario cambiare (in termini di modello, soprattutto) quando si accresce la complessità.

Alfonso

Il linguaggio specifico è una applicazione, punterei verso i costrutti generali e se proprio dovessi scegliere verso linguaggi “nudi”

Massimo

Ogni età può avere il suo linguaggio. Visuale all'inizio ma testuale od al massimo ibrido poi. Ho sempre affermato che: scrivere porta a rileggere e rileggere porta a comprendere. Vanno evitate le DSL perché troppe specifiche per il dominio da risolvere ed invece orientarsi verso linguaggi completi e general purpose. I linguaggi ad uso comune ed industriale potrebbero portare vantaggi in termini pratici ma non sono fondamentali, un linguaggio di programmazione deve essere espressivo e completo nella sua classe paradigmatica di appartenenza e stimolare il pensiero.

Francesca

Ambienti diversi, ma semplici, possono essere utilizzati anche per mostrare rappresentazioni diverse per gli stessi scopi.

Walter

Se il mercato richiede specifiche figure, può pagare per formarle; l'ultima volta che ho controllato, "mercato" significava questo. Lo scopo della programmazione e dell'informatica nella scuola non è formare futuri programmatori, ma includere nel programma la principale modalità intellettuale di questo secolo. Il computer è uno strumento per pensare. La programmazione è costruzione ed esplorazione di mondi, il resto è regolazione del termostato.

In questo senso, la programmazione richiede strutture cognitive che non sono presenti prima del livello della secondaria di I grado. Lo scopo di introdurre alcune attività, in particolare quelle che richiedono una maggiore manualità, nella scuola primaria, dovrebbe essere di abituare a un rapporto con le macchine attivo anziché passivo.

11. Il coding senza computer (unplugged) è un passaggio necessario o facoltativo?

Stefano

Non saprei, ma il coding unplugged è molto diverso, in termini di vincoli e risorse da quello normale. E' vero che mette in gioco il corpo, permette l'identificazione (ma vedi domanda 12), però restringe il modello di programmazione a quello imperativo. Non ho visto esempi basati su un modello conversazionale (Object Oriented) o funzionale, o logico.

Alfonso

Necessario

Massimo

Rimane il dubbio su cosa sia 'coding'. Nel suo significato originario forse no, in quanto il processo deve terminare nella esecuzione da una macchina automatica. Le attività unplugged, sono certamente importanti nella definizione e comprensione di un algoritmo che poi dovrà essere implementato in un linguaggio di programmazione ed eseguito su una macchina automatica.

Francesca

Nella scuola primaria riprenderei principalmente il vecchio flow chart. Unplugged, di semplice realizzazione e ottima simulazione del “programma”.

Walter

Nelle prime classi della primaria, trovo che l'unplugged sia preferibile. Coinvolge di più, non fa perdere tempo con apparecchiature, ed ha ampi spazi di manualità. Per contro, riduce tutto a una programmazione non solo imperativa, ma perfino banale (niente variabili, strutture dati ridotte all'osso). Dal punto di vista dell'informatica, diciamo che l'unplugged può servire a introdurre i concetti fondamentali sequenza-decisione-iterazione del teorema di Böhm -Jacopini, ma poco di più.

12. Quanto è importante la possibilità di identificazione dello studente con un avatar (tarturuga, gatto, robot)?

Stefano

Domanda complessa. Chi programma professionalmente tende a identificarsi con un agente astratto che, più o meno, è la CPU, o meglio il flusso di controllo delle operazioni. Il robot, fisico o virtuale, introduce un altro personaggio sulla scena. D'altra parte, il modello OO o quello ad agenti sembrerebbe invitare a identificarsi con più soggetti, anche paralleli. Questo porta anche ad una riflessione sul parallelismo che di solito non viene introdotto come concetto primario nel coding (lo è invece in ambienti educativo come NetLogo)

Alfonso

Non è necessario, ma potrebbe facilitare alcuni

Massimo

Lo studente deve mantenere le distanze e comprendere che un avatar è un avatar, la vita reale è più importante. Oggi i ragazzi probabilmente confondono troppo i due aspetti. L'insegnamento della programmazione potrebbe stimolare questa presa di coscienza. L'uomo è uomo, la macchina è macchina per quanto intelligente possa sembrare. Il rapporto affettivo con la macchina è personale ma devono essere chiari i limiti.

Francesca

Al di là di quello che può sembrare, l’avatar mette una distanza emotiva tra l’alunno e il programma, e potrebbe reggere meglio la frustrazione dell’errore.

Walter

Per i primi esercizi di avviamento, penso in particolare alla definizione di percorsi o a contesti in cui le metafore spaziali siano di aiuto (il che copre quasi tutto quello che si fa attualmente con Scratch) l'avatar è utile. Questo non implica alcuna particolare sofisticazione grafica, una semplice figura geometrica come un triangolo è sufficiente.

Ma mentre l'identificazione con un oggetto computazionale è sempre concettuale, è solo raramente visuale o fisica. Con l'uso di molteplici strutture dati complesse e la creazione di una molteplicità di oggetti computazionali interagenti, non parlerei più "identificazione", ma di "immedesimazione", che permetta al programmatore di spostre la propria attenzione dal punto di vista dell'oggetto a quello di un altro, a seconda del flusso computazionale che sta emulando nella propria mente.

13. Che rapporto c'è fra coding e robotica educativa (sono indipendenti, sono uno dentro l'altro, sono connessi)?

Stefano

Non ho abbastanza conoscenze di robotica educativa per rispondere.

Alfonso

La robotica educativa può essere fatta anche senza programmazione (pensiamo solo aad un problema del tipo: come dovrebbe essere fatto un rover marziano che decide di atterrare sul pianeta rosso?) Il rapporto è di interconnessione, ma entrambi possono esistere senza l’altro

Massimo

Sempre il problema di cosa sia il 'coding'. Potrebbero essere indipendenti o connessi.

Francesca

Il termine “robotica educativa” non lo capisco. parliamo di macchine (anche costose) pensate per essere vendute alle scuole e che potrebbero diventare educative… ma anche diseducative. In questo occorre proporre attività educative amplificate dall’utilizzo di automi programmati.

Walter

Se con "robotica educativa" intendiamo la programmazione di robot, ragazzi che già dispongono di competenze di programmazione possono trasportarle in questo ambito che però, al di là delle attività più semplici, propone difficoltà notevoli. Fare reale robotica è più che programmare un Lego Mindstorm o un mBot per fargli percorrere un dato percorso o attraversare un labirinto.

I BeeBot sono accessibili anche a bambini della materna, ma propongono una programmazione molto limitata di tipo imperativo che non offre nessun vantaggio rispetto alla stessa attività realizzata (con molto più divertimento) in modalità unplugged.

La robotica educativa, prima della secondaria di II grado, nasconde sotto il glamour degli strumenti utilizzati un tentativo di banalizzare e addomesticare il potenziale creativo e di pensiero critico-analitico della programmazione. 

14. Quanto è importante che il software usato abbia una licenza opensource?

Stefano

Discorso ampio. La questione qui non è quella della gratuità dell'ambiente ma quella della modificabilità e della sicurezza. Un ambiente OpenSource può essere personalizzato (semplificato, arricchito, tradotto). Di un ambiente OpenSource si può essere sicuri che i dati degli utenti non vengano fatti uscire da porte di servizio.

Alfonso

Fondamentale direi

Massimo

Importantissimo. Bisogna stimolare nello studente l'eticità del software e bisogna mettere tutti nella condizione di poterlo usare senza distinzioni. Il software open source nella scuola non dovrebbe avere alternative e nessuna soluzione proprietaria dovrebbe essere adottata anche se superiore. È nota l'estrema fidelizzazione che il software porta e non si devono preparare futuri clienti ma futuri cittadini critici e responsabili.

Francesca

Tanto. Troppo software che sta entrando nella scuola è di proprietà.

Walter

Molto importante. Per una attività cruciale come le tecnologie informatiche, la scuola pubblica non può dipendere dalle scelte di questo o quel produttore, né la sua attività educativa deve essere ridotta a un banale "addestramento", per quanto questo sia desiderabile dal "mercato". Detto in termini più diretti, a scuola si deve imparare cosa è un documento strutturato e come costruirlo, non a usare Word o Google Docs. Si deve imparare cosa sono email e cloud, non cosa sono Outlook, Gmail, OneCloud e GDrive. Inoltre è importante che sia la scuola pubblica a trasmettere il senso politico ed etico dell'Open Source: che la "proprietà intellettuale" non è realmente una "proprietà" e che il software è troppo importante per non essere sottoposto allo scrutinio di chiunque lo utilizzi.

15. Quanto è importante poter lavorare fuori rete, oppure poter installare un ambiente su server delle rete locale?

Stefano

C'è sia la questione della ristrettezza della banda in alcune scuole (o case), sia quella della sicurezza, sia della personalizzazione (vedi domanda 14). Lavorare offline è più complesso in termini di setup iniziale ma consente di essere indipendenti. D'altra parte la questione delle comunità di apprendimento (domanda 24) non può essere separata da questa.

Alfonso

Fondamentale

Massimo

Se si parla della rete Internet, oggi sarebbe importante averla disponibile e di buona qualità. Se si intende affrontare il problema cloud, questo dovrebbe essere tenuto fuori dalla scuola per evidenti problemi di sicurezza e privacy.

Francesca

Poter lavorare fuori rete semplifica diversi aspetti.

Walter

La reale differenza non è cloud/non cloud ma locale/condiviso. Personalmente utilizzo soltanto servizi via browser, ma se la scuola fosse in una situazione di digital divide, potrei riportare quegli stessi servizi su un server locale e lavorare sulla rete locale.

Il problema è piuttosto un altro: possiamo continuare ad avere scuole in cui non esiste né la figura di un responsabile informatico né un budget adeguato?

16. Che rapporto ci può/deve essere tra coding e sviluppo di app per il mobile?

Stefano

Importante da vari punti di vista. Uno è quello per cui il coding serve anche praticamente, per insegnare a chiunque a risolvere i propri problemi (almeno alcuni di questi). L'altro è quello per cui la piattaforma mobile è oggi percepita come più "propria, personale" da parte dei ragazzini.

Alfonso

Se parliamo in termmini di progettazione, di risoluzione etc., qui vedrei i 2 strettamente connessi

Massimo

Cosa è il 'coding'? Le applicazioni per il mobile si sviluppano comunque.

Francesca

Nella scuola primaria?

Walter

Mi sembra che anche questa tendenza, come quella della robotica, risponda più a criteri di moda che di utilità didattica. Che senso ha mettere dei ragazzini a sviluppare app, considerando che la maggioranza dello sforzo di sviluppo ricade sulla parte grafica e di interfaccia anziché sulla parte di funzionalità? Forse quella di ottenere il plauso dei genitori che riescono a "toccare con mano" qualche risultato? Vale quando ho detto alla domanda 14: la scuola pubblica deve insegnare competenze generali, non seguire la moda del momento (e le "app" indiscutibilmente lo sono –peraltro, in calo).

17. Da che età è possibile cominciare?

Stefano

Non lo so dire con certezza. Probabilmente una competenza già avanzata sul linguaggio scritto è un prerequisito importante. Però la domanda è anche "perché" bisognerebbe cominciare il più presto possibile. E' tutto da dimostrare che chi comincia presto a programmare diventi un migliore programmatore (potrebbero esserci delle complessità che non si possono affrontare prima di una certa età senza darne una soluzione banale), o che queste attività precoci abbiano effetto sull'apprendimento di competenze in altri campi.

Alfonso

Non esiste un limite inferiore e superiore

Massimo

Penso che si possa non appena si siano acquisite delle competenze in lettura e scrittura con i dovuti strumenti adatti alle singole età. In ogni caso pare che il pensiero logico deduttivo (Piaget) si inizi a formare intorno agli 11 anni. Prima l'azione del pensiero dovrebbe essere prevalentemente intuitiva.

Francesca

Ragionare sulla soluzione dei problemi non necessariamente attraverso il coding e non solo di tipo matematico permette anche agli alunni più piccoli un approccio più pragmatico al mondo.

Walter

I primi rudimenti di pensiero analitico si possono proporre come attività unplugged anche alla materna o nei primi anni di primaria. Dalla mia esperienza, fin verso la IV/V Primaria si riesce ad andare poco oltre lezioni molto direttive, con scarso apporto da parte dei ragazzi al di là di questioni di grafica o di effetti. Questo non per limitazioni della tecnologia, ma per il fatto che la programmazione è una attività intellettuale estremamente sofisticata, che richiede strutture mentali altrettanto sofisticate. Risultati reali (ossia il gioco vale la candela) di un qualche significato didattico li vedo dalla I o II Secondaria di I Grado. Ma "coding alla primaria" suona molto più disruptive.

18. Il coding a scuola va affidato ad un'ora speciale o va praticato all'interno delle altre "ore"?

Stefano

A mio parere andrebbero distinte le attività di apprendimento delle tecniche da quelle degli utilizzi, essendo le secondo quelle davvero importanti. Se l'ideazione e la realizzazione di un programma è un modo di affrontare l'apprendimento in maniera significativa, condivisibile, personale, allora andrebbe introdotta in ogni materia. Perché sia anche un'attività soddisfacente e si possa svolgere in tempi ragionevoli, occorre un minimo di padronanza tecnica che va forse (sottolineo fors) acquisita separatamente.

Alfonso

Il coding potrebbe diventare curricolare ma va fatto all’interno delle altre discipline

Massimo

L'applicazione può essere trasversale ma ci vorrebbero ore dedicate per la formalizzazione dei concetti.

Francesca

Il coding è uno strumento o un obiettivo?

Walter

Se stiamo pensando di comprimere le ore dedicate alle tradizionali per includervi il "coding" siamo prigionieri dello storytelling del marketing tecnologico. Anche in un mondo ideale, prima di affrontarlo dal punto di vista della programmazione occorre conoscere il dominio di studio. È chiaro che la programmazione sia applicabile a qualsiasi ambito. Ma un conto sono possibili progetti transdisciplinari, un conto è pretendere che tutti gli insegnanti possiedano le competenze di programmazione che permettano loro di applicarla nel loro perciso ambito di competenza: questo semplicemente  non è possibile prima di un completo ricambio generazionale, e forse nemmeno allora.
A meno che, nel"coding" non si faccia ricadere l'uso di questa o quella webapp. E allora occorre ripetere che non è lo strumento che conta, ma l'abilità che viene sviluppata. Il docente di Storia deve insegnare la storia. Se lo fa con l'ausilio di un software bene, ma la misura del suo lavoro sono le competenze di Storia degli alunni. L'uso di strumenti "nuovi" non può assolutamente scusare una compressione del programma svolto.

19. Deve esserci un "curriculum" uguale per tutti, o ogni scuola (ogni insegnante) può definire quello più adeguato al contesto?

Stefano

C'è, o ci dovrebbe essere, un curriculum per i docenti (cosa devono imparare per poter affrontare il coding con i ragazzi) prima di quello per gli studenti. Il curricolo per gli studenti dovrebbe contenere una parte generale, ma soprattutto dovrebbe essere immerso nelle altre materie, non procedere per proprio conto. Quindi ogni docente dovrebbe avere la libertà di adattare al proprio contesto, pur avendo dei riferimenti in termini di età, dei modelli da riusare, degli obiettivi raggiungibili e credibili.

Alfonso

Ogni docente può definire il contesto ma manterrei un 30% di strutture comuni

Massimo

Penso che ogni insegnante debba valutare il proprio contesto pur all'interno di indicazioni comuni.

Francesca

Un curriculum digitale sì. Un curricolo di coding no.

Walter

Prima di tutto occorre definire un curricolo per i docenti, sia che si voglia includere programmazione come materia sia che non si voglia farlo. Cosa deve sapere di "digitale" e di programmazione un docente oggi? Fino a che la programmazione non diventa materia di studio, il curricolo può al massimo essere "digitale", nel senso di tecnologie e non di strumenti. Dopodiché il curricolo deve essere definito a livello Ministeriale, e al suo interno ogni docente dispone della propria libertà didattica.

20. Può insegnare il coding chiunque? se no, solo chi ha ricevuto una formazione specifica, oppure solo chi ha una competenza informatica più generale?

Stefano

Se ogni studente deve saper programmare, ogni insegnante dovrebbe sapere insegnare a programmare? Il che significa che non può limitarsi a saper avviare delle attività senza nessuna idea di come portarle avanti. Esattamente come l'insegnante di scuola materna deve avere una conoscenza completa della lingua materna, non solo del sottoinsieme che insegna. Prima di un curricolo dello studente andrebbe costruito un curricolo dell'insegnante.

Alfonso

Chiunque può insegnare il pensiero computazionale, il coding per me resta programmazione, pertanto di forte connotazione scientifica, decisamente non lo si improvvisa

Massimo

Non può insegnarlo chiunque (ma sempre rimane la domanda su cosa sia il coding). Ogni persona ha delle proprie competenze, questo non vuol dire che un informatico sia in grado di insegnare a ragazzi e bambini solo per il fatto di esserlo.

Francesca

Concordo con chi ha detto che prima di un curriculum dello studente deve essere previsto un curriculum per gli insegnanti.

Walter

Se con "coding" si intende la programazione, che senso ha questa domanda? Uno storico può insegnare chimica? In compenso sappiamo che un informatico non può insegnare matematica, per effetto di che non ci sono informatici nella scuola, salvo qualche istituto tecnico dove l'insegnamento esiste. Inoltre cosa sarebbe la "competenza informatica più generale", l'ECDL? Andiamo avanti così, facciamoci del male.

Mi sembra comunque necessario che esista anche un curricolo di competenze digitali (a costo di ripetermi, non legate a specifici prodotti) per i docenti.

21. L'approccio per problemi di complessità successiva è l'unico possibile?

Stefano

Certamente no. Sia perché la programmazione non serve solo a risolvere problemi ma anche a costruire strutture originali di cui per il momento non si vede lo scopo utilitaristico (problemi come ostacoli sulla strada di un progetto), sia perché può essere più efficace confrontarsi con situazione complesse di cui si affronta solo una parte.

Alfonso

Assolutamente no! Spesso si parte, nella fisica, proprio da problemi complessi e li si suddividono in sotto problemi più semplici

Massimo

Non necessariamente, si potrebbero proporre strade per complessità crescente ma anche per domini diversi non necessariamente il primo meno complesso di quello dopo. Si deve abituare il ragazzo all'analisi ed a pensare fuori dagli schemi prefissati come all'astrazione, la complessità implementativa è un dettaglio superabile.

Francecsca

No.

Walter

Per nulla. Anzi, un problema che non si risolvere immediatamente è il modo migliore per incoraggiare l'esplorazione.

22. La valutazione delle attività degli studenti va fatta in maniera simile a quanto si fa nell'insegnamento tradizionale della programmazione? Se no, quali aspetti vanno valutati e come?

Stefano

Siccome l'obbiettivo non è (solo) insegnare a programmare bene, ma rendere sensibile la relazione tra regole e risultati, in ambiti diversi, la valutazione andrà progettata in questa direzione. La competenza da valutare è la capacità di applicare le risorse nel modo migliore, ma soprattutto la capacità di analizzare, formalizzare, interpretare e correggere.

Alfonso

Non vedo grossa differenza con le valutazioni che già si fanno
Ah dimenticavo nel mio caso valuto in itinere, ex ante, valuto le attività di gruppo, i progetti etc.

Massimo

Credo che debbano essere valutati per le strutture analitiche prodotte e non per la semplice implementazione che può variare da linguaggio a linguaggio e nello stesso. La valutazione di un codice è una operazione molto complessa (ad oggi ancora discutibile) che deve tenere conto di molti fattori. Un codice viene scritto anche in maniere diverse in base al contesto.

Francesca

Verificare i lavori fatti e la loro efficacia è di per sé una valutazione rispettosa della crescita individuale.

Walter

La valutazione di un progetto software avviene necessariamente su più fronti, come peraltro avviene anche in altre materie (à la "il procedimento è corretto, ma hai sbagliato i conti"). Siccome l'obiettivo non è soltanto fornire competenze di programmazione ma avvicinare all'uso del computer come protesi cognitiva, almeno i seguenti questi aspetti devono entrare nella valutazione:

23. Serve un docente/tutor nelle attività di coding?

Stefano

Si. Perché l'oggetto del coding va calato nelle attività di classe, non può essere preso da una sequenza di problemi prefissati. Il docente non è solo qualcuno che sta a guardare, è quello che immagina un utilizzo del coding per far capire qualcosa che altrimenti resterebbe solo astratto.

Alfonso

Un tutor lo consiglierei, ma non scelto tra i docenti ma tra gli studenti stessi (anche di altre classi)

Massimo

In affiancamento al docente? Se si parla di ragazzi lasciati da soli il docente serve come rapporto umano diretto per un confronto bilaterale, ma se il docente non ne è in grado un tutor serve (all'insegnante).

Francesca

Dipende dal docente e dalla sua preparazione.

Walter

Se si tratta di affrontare un'altra materia con strumenti informatici e di programmazione, e il docente non è in grado di farlo da solo, allora occorre che il docente sia affiancato da un tutor. In questo caso però potrebbe essere preferibile svilupare un progetto interdisciplinare. Se invece si parla di un progetto dove la programmazione è centrale, allora deve esserci un docente specifico.

24. Se no, è sufficiente un ambiente predisposto per gradi di difficoltà crescenti con adeguati help on line, oppure è fondamentale che ci siano delle comunità di apprendimento online?*

Stefano

Comunità di apprendimento significa non solo avere esempi (spesso drammaticamente identici) di artefatti costruiti da altri, ma poter condividere progetti più complessi, discutere su soluzioni, condividere parti, confrontare processi e non solo prodotti. Un ambiente online in cui ci si trovi da soli con tutorial ed help online è asfissiante.

Alfonso

Le comunità di apprendimento sono quasi necessarie

Massimo

Non credo sa sufficiente, il rapporto umano immediato è fondamentale. Si rischia con l'apprendimento online il mio mitico 'programming by example'. L'apprendimento online è fondamentalmente un tutoraggio in cui non essendoci rapporto umano diretto è unidirezionale. Il ragazzo si limiterà a ripetere i passi anche non comprendendoli senza nessun confronto diretto sedimentando convinzioni che potrebbero essere errate.

Francecsca

Nella scuola primaria?

Walter

Nella mia esperienza nei CoderDojo vedo che bambini di IV o V Primaria possono tranquillamente fare da tutor a bambini di III. Il problema è che non è chiaro come questo possa accadere durante un normale orario scolastico, in cui ciascuna classe deve seguire il proprio programma.

In generale, occorre sviluppare modalità di lavoro che superino l'orribile "imparo al computer" à la MOOC/help online, che nelle scuole dell'obbligo non può fare altro che addestrare alla passività. Occorre educare alla produzione di software come sforzo comune, mai solo individuae. Nelle mie classi impongo il lavoro in coppie miste per genere, proprio per evitare che l'unità atomica sia il singolo.

25. Che ruolo possono avere gli studenti più avanzati?

Stefano

Un ruolo molto importante, non solo per i più piccoli (per i quali possono rappresentare un modello più vicino del docente) ma anche per loro stessi. Se insegnare significa comprendere meglio (presupposto su cui si basa la metafora del Logo), nello spiegare ai più piccoli si capisce meglio.

Alfonso

Di facilitatori (li uso come tutor e come trasnfer)

Massimo

Gli studenti dovrebbero essere stimolati al confronto ed alla collaborazione. Gli studenti più avanzati potrebbero svolgere anche un ruolo di 'consulenti' per gli altri. Va stabilito anche cosa significhi più avanzati. Più avanzati ad implementare algoritmi? Più avanzati nell'astrazione mentale? Più avanzati nella comunicazione del sapere? Altro?

Francesca

Il tutoraggio tra pari è di stimolo e consolidamento per gli alunni più in difficoltà al di là del coding.

Walter

Nella mia esperienza, imparare da uno studente più grande è molto più efficace che imparare dal maestro. In questa modalità entrambe imparano: il "grande" la responsabilità, la capactà di esposizione e di adattarsi a un ritmo non proprio. Il "piccolo" non solo impara ciò che gli viene illustrato, ma anche il suo amor proprio ne viene rafforzato perché il "grande" che gli dedica il suo tempo è magari lo stesso che poi all'intervallo non gioca coi "piccoli". Gli stessi effetti positivi ci sono se il più avanzato è più giovane. Ho visto maschi di dodici anni in religiosa ammirazione di una femmina di 9.