Coding ai licei

L'insegnamento del CODING al Liceo

 

Il contributo della materia al percorso scientifico e a quello umanistico 

L'obiettivo è quello di diffondere conoscenze scientifiche di base per la comprensione della società moderna.
Le competenze acquisite mediante il pensiero computazionale sono di carattere generale perché insegnano a strutturare una attività in modo che sia svolta da un qualsiasi “esecutore”, che può essere certo un calcolatore ma anche un gruppo di lavoro all’interno di una azienda o di un’amministrazione.
Inoltre, la conoscenza dei concetti fondamentali dell'informatica aiuta a sviluppare la capacità di risoluzione di problemi e la creatività.
Cédric Villani, recentemente vincitore della Medaglia Fields, anche lui un convinto sostenitore dell’importanza di insegnare l’informatica nelle scuole, accosta il linguaggio della programmazione a quello della matematica, come “lingue che aiutano l’uomo nella sua battaglia per la comprensione del mondo” e le distingue dalle lingue come l’inglese o il tedesco “che servono nella comunicazione tra le persone”.
Parla poi delle lingue come il latino che si imparano attraverso le regole (invece che attraverso il dialogo) per sottolineare come il loro valore formativo risieda “nella disciplina mentale che bisogna avere, nella ginnastica intellettuale che costringe ad integrare i vari insiemi di regole, combinazioni e configurazioni”. Questo esercizio, continua, è benefico per i nostri circuiti neuronali esattamente come quello praticato nello studio della matematica o nell’esercizio del pensiero computazionale
Questo termine è quello che usiamo quando vogliamo sottolineare gli aspetti culturali dell’informatica, indipendentemente dalla tecnologia digitale in cui essa si manifesta ormai dovunque intorno a noi.

La metodologia

Il pensiero computazionale è un processo mentale per la risoluzione di problemi costituito dalla combinazione di metodi caratteristici e di strumenti intellettuali, entrambi di valore generale.
I metodi caratteristici (problem solving) includono:
  • analizzare e organizzare i dati del problema in base a criteri logici;
  • rappresentare i dati del problema tramite opportune astrazioni;
  • formulare il problema in un formato che ci permette di usare un “sistema di calcolo” (nel senso più ampio del termine, ovvero una macchina, un essere umano, o una rete di umani e macchine) per risolverlo;
  • automatizzare la risoluzione del problema definendo una soluzione algoritmica, consistente in una sequenza accuratamente descritta di passi, ognuno dei quali appartenente ad un catalogo ben definito di operazioni di base;
  • identificare, analizzare, implementare e verificare le possibili soluzioni con un’efficace ed efficiente combinazione di passi e risorse (avendo come obiettivo la ricerca della soluzione migliore secondo tali criteri);
  • generalizzare il processo di risoluzione del problema per poterlo trasferire ad un ampio spettro di altri problemi.
Questi metodi sono importanti per tutti, non solo perché sono direttamente applicati nei calcolatori (computer), nelle reti di comunicazione, nei sistemi e nelle applicazioni software, ma perché sono strumenti concettuali per affrontare molti tipi di problemi in diverse discipline.
Gli strumenti intellettuali includono:
  • confidenza nel trattare la complessità (dal momento che i sistemi software raggiungono normalmente un grado di complessità superiore a quello che viene abitualmente trattato in altri campi dell’ingegneria);
  • ostinazione nel lavorare con problemi difficili;
  • tolleranza all’ambiguità (da riconciliare con il necessario rigore che assicuri la correttezza della soluzione);
  • abilità nel trattare con problemi definiti in modo incompleto;
  • abilità nel trattare con aspetti sia umani che tecnologici, in quanto la dimensione umana (definizione dei requisiti, interfacce utente, formazione, ...) è essenziale per il successo di qualunque sistema informatico;
  • capacità di comunicare e lavorare con gli altri per il raggiungimento di una meta comune o di una soluzione condivisa.
Anche per questi strumenti i benefici si estendono al di là della disciplina informatica.
Inoltre, l’informatica: “È praticamente la sola disciplina che permette agli studenti di correggersi da soli” (Cédric Villani).
Diversamente da altri linguaggi, nei quali in assenza di una correzione da parte del docente è facile perseverare nell’errore, un programma informatico che non raggiunge il suo obiettivo manifesta immediatamente il suo fallimento.
Anche se questa osservazione non va considerata in modo assoluto (dal momento che – come accade in molti altri contesti – si può raggiungere l’obiettivo desiderato anche con un metodo scorretto) il fatto che, nel corso del processo di apprendimento si possano insegnare i concetti fondamentali del pensiero computazionale mediante attività didattiche che segnalano subito allo studente se sta procedendo o meno in modo corretto, è estremamente utile.
Inoltre è ugualmente vantaggioso, in termini di coinvolgimento degli studenti, che quest’apprendimento possa avvenire in modo visibile e costruttivo
I contenuti. CODING “oltre l’utilizzo dell’ iPad"
L’acquisizione delle abilità e delle competenze previste dall’insegnamento sarà prevalentemente basata sull’utilizzo dell’iPad in classe attraverso le seguenti attività:
  • distribuzione di materiali didattici (presentazione degli argomenti), video tutorial (anche in lingua straniera), schemi, documenti, ebook multitouch, discussioni tematiche, riferimenti web ed immagini di approfondimento ed esemplificative, avvisi, compiti, attraverso l’app per iPad “iTunes U”, uno strumento integrato di gestione ed amministrazione di un corso.
 
  • esercitazioni sulla piattaforma org e affini, dove, seppure in un contesto ludico, ciascun studente sarà chiamato ad analizzare situazioni/sfide, e successivamente ad individuare una possibile soluzione e a tradurla in una sequenza grafica di istruzioni che verrano eseguite dai “personaggi animati” proposti dall’ambiente di programmazione. In questo contesto, la piattaforma guiderà lo studente nel processo risolutivo, eventualmente fornendo gli spunti necessari per la formulazione di procedure ottimizzate.
Progressivamente lo studente sarà chiamato ad analizzare specifiche di problemi reali e ad individuare e progettare un algoritmo risolutivo, descrivendolo con il linguaggio grafico dei diagrammi a blocchi, attraverso l’applicazione “Inspiration”.
Sarà poi in grado di tradurre gli algoritmi individuati al passo precedente, in programmi, utilizzando in primis il linguaggio supportato dall’ambiente di programmazione dell’app “Tickle” ed altre affini.
Infine verranno affrontati i temi della programmazione in un contesto multidisciplinare nel quale, per esempio, lo studente possa portare un’esperienza integrata di attività di coding, sviluppata insieme ad altre discipline, al suo esame di fine ciclo, oppure a una presentazione ufficiale, a un concorso, o a un evento.

I rapporti interdisciplinari

Gli strumenti, le metodologie, le attività e i contenuti presentanti, hanno una forte connotazione multidisciplinare, note le affinità e le intersezioni con le discipline dell’ambito scientifico/linguistico (terminologia tecnica, ambienti e linguaggi di programmazione) e condividono l’esigenza inter dipartimentale, dello sviluppo nello studente di capacità linguistiche mirate all’acquisizione della padronanza del lessico naturale (necessaria per comprendere ed esprimere specifiche informali dei problemi) e peculiare della disciplina, strumento in indispensabile per poter formulare e rappresentare gli algoritmi e successivamente per poterli tradurre in programmi.
Inoltre, tutta la logica delle strutture di programmazione è applicabile in qualsiasi contesto e per qualsiasi disciplina. Se consideriamo una didattica attiva e multicanale, fondata sulla ricerca di risposte su indagini e problem solving, le abilità e le conoscenze in ambito di coding diventano facilmente delle competenze multidisciplinari, se lo studente è in grado di utilizzarle in altri ambiti che non siano quello strettamente informatico.