Umberto Talamo, insegnante e ingegnere, spiega come il pensiero computazionale si possa insegnare anche ai più piccoli, con Scratch
Faccio una piccola premessa. Vorrei esprimere a tutti voi la mia personale interpretazione relativamente all’insegnamento del Pensiero Computazionale introdotto nella legge detta “la buona scuola”, che dal punto di vista dei contenuti didattici, ritengo “una buona legge”. Premetto che per più di venti anni, oltre ad insegnare elettronica ed informatica negli Istituti Superiori, ho praticato la professione di ingegnere nel campo dell’automazione industriale e la robotica occupandomi in particolare di software. Ho sviluppato sia applicazioni per PC, PLC, sistemi SCADA, e MOTION SYSTEMS sviluppando software per impianti industriali, macchine di vario tipo e robot industriali. E’ stato bello e ritengo utile, anche alla mia professione di insegnante perché ho potuto riportare l’esperienza esterna nella scuola e quindi ai miei alunni.
Una inversione di paradigma
Chi insegna la materia informatica negli Istituti Tecnici di Istruzione Superiore conosce bene il concetto di paradigma di programmazione un insieme di idee scientifiche collettivamente accettato per dare un senso al mondo dei fenomeni [T.S. Kuhn]. La questione si è posta già negli anni ’60 con la programmazione funzionale, ma il contributo più decisivo in questo senso è stato dato probabilmente negli anni ’70 dalla cosiddetta programmazione logica prima, e dal boom di quella ad oggetti, dopo. Oggi i paradigmi di programmazione citati con una certa frequenza sono almeno una decina, anche se non sempre sono chiari i loro confini o la loro indipendenza. I paradigmi offrono una chiave di classificazione dei linguaggi: diremo che un linguaggio afferisce ad un paradigma se consente di scrivere i programmi in accordo ad esso.
Il pensiero computazionale
La competenza principale di un buon informatico è quella di saper programmare: così come il modo corretto e canonico per un buon docente di informatica è quello di insegnare che
non è corretto scrivere direttamente il codice senza una serie documentata di passaggi fatti a monte
Bene, questi passaggi, che poi portano alla fase finale che è la “codifica” rappresentano quello che viene definito “il pensiero computazionale”.
In sintesi sono:
- Decomposition
- Pattern Location
- Abstraction
- Algorithm
I bravi insegnanti (ma anche professionisti nel mondo del lavoro) hanno sempre detto: “Se fai tutti questi passaggi, la codifica ti viene gratis”, cioè facile. La legge 107, art 1 comma 7 ci parla di Pensiero Computazionale e nella stessa non troverete la parola “coding ” o “programmazione” in senso informatico. Ed è giusto che sia così, concordo pienamente con gli autori della legge. In realtà potremmo insegnare il pensiero computazionale senza programmare, cosa tra l’altro possibile attraverso l’utilizzo di metodi cosiddetti “Unplugged”.
Ma una strada più bella e creativa, più vicina sicuramente alla realtà che vivono i nostri alunni (nativi digitali) è quella di utilizzare il Computer o le altre tecnologie disponibili (SmartPhone, Tablet, ecc.) e quindi il “coding”, cioè la programmazione. Sembra, la mia una considerazione, banale, scontata, ma se ci pensate bene non lo è, soprattutto per gli esperti della materia. Perché questo rappresenta un vero e proprio cambio di paradigma:
Metodo tradizionale:
Dalla costruzione del pensiero computazionale alla codifica finale (lo troverete in tutti i libri di informatica)
Inversione:
Dalla codifica alla costruzione del Pensiero Computazionale
Il linguaggio semplice: Scratch
Sembra un cosa complicata e contraddittoria, ricordate (se fai tutti questi passaggi, la codifica ti viene facile e gratis) questo perché i linguaggi di programmazione letterali (es. il C, C++, Java e quant’altro) sono complessi in se, con una sintassi che richiede un tempo di apprendimento specifico e una età minima di 15-16 anni (sperimentazione effettuata su una e seconda classe di Liceo durante un corso di Robotica educativa ). La difficoltà di scrivere programmi con linguaggi letterali e quindi “la possibilità di liberare il pensiero computazionale” è dimostrata anche dal fatto che nel mondo dell’automazione e della robotica industriale, se pure per finalità differenti (mancanza di tempo relativa alla progettazione di software, tempi stretti di messa in servizio, necessità di chiarezza del software stesso a fini manutentivi), si usano quasi esclusivamente linguaggi a blocchi ed è quasi sempre “vietato” dalle specifiche dei clienti l’utilizzo di tali linguaggi letterali. Quindi se avessi un linguaggio che mi permettesse di programmare in modo semplice, intuitivo e scorrevole, che non fosse un ostacolo, ma indicasse in modo naturale al computer le azioni che voglio compiere, potrei utilizzarlo come strumento di insegnamento e non come finalità del mio insegnamento. Per fortuna, questo strumento esiste, si chiama Scratch ed è anche OpenSource. Esiste anche un ambiente chiamato Blockly che è in realtà una libreria di funzioni per programmatori esperti (sulla quale si basa es. il sito code.org oppure l’applicazione WEB “MIT App Inventor” che serve a creare app per smartphone…) ma io preferisco Scratch e i suoi derivati.
La robotica con Arduino
Questo tipo di approccio può essere usato anche per il Phisical Computing e la Robotica educativa utilizzando mBlock (derivato da Scratch) insieme alla piattaforma Hardware Arduino. Aggiungo in particolare che Arduino rappresenta un buon “entry level” per l’insegnamento dell’elettronica del Phisical computing e della Robotica educativa, a partire dalla scuola primaria, sino al 5° anno della scuola secondaria di secondo grado (negli istituti di indirizzo specifico, si dovrebbe entrare nel merito di sistemi elettronici e informatici più complessi). Spero che questo mio piccolo contributo sia di aiuto ad orientarsi nel complesso mondo di innovazione tecnologica e didattica nel quale ci stiamo addentrando.*
*articolo precedentemente pubblicato su CoderdojoTaranto.it
Umberto Talamo