Coding e pensiero computazionale

“Il pensiero computazionale rappresenta un atteggiamento e un complesso di attività che sono universalmente applicabili e che chiunque, non soltanto gli informatici, dovrebbe essere desideroso di apprendere e utilizzare.” Jannette Wing

Viviamo in un mondo fortemente pervaso dal digitale, in cui la programmazione informatica si trova alla base di molti processi, dal marketing all’economia, dalla medicina alla scienza, ed è un fortissimo propulsore di produttività in molti settori e agente di innovazione.

Benché il linguaggio utilizzato si sia trasformato nel corso degli ultimi 70 anni, i principi alla base della programmazione informatica sono rimasti gli stessi, ovvero:

  1. L’importanza dell’ordine in cui la sequenza delle istruzioni è eseguita
  2. La possibilità di ripetere una sequenza di istruzioni un numero definito di volte
  3. La possibilità di testare se una sequenza di istruzioni viene o meno eseguita correttamente

Inoltre, la comprensione di come esprimere le istruzioni in modo che un computer possa eseguire un compito è molto più importante rispetto alla conoscenza di un linguaggio di programmazione in sé, dato che, qualsiasi linguaggio informatico si apprenda, esso diventerà obsoleto nel giro di pochi anni.

Alla base ogni applicazione informatica vi sono degli algoritmi che, esplicitati nel pensiero algoritmico o computazionale, specificano in maniera astratta come eseguire un compito. Si tratta di un processo logico-creativo che permette di scomporre un problema complesso in più parti per poi affrontarlo un pezzo alla volta, in modo da arrivare con più facilità alla soluzione generale.

Per gli studenti, ricevere un’introduzione alla programmazione informatica, o coding, permette loro di capire cosa può essere espresso e creato grazie alla tecnologia, di immaginare nuovi dispositivi e applicazioni digitali e, soprattutto, di sviluppare competenze legate alla risoluzione dei problemi.

Sin dal 2013, il coding è stato posto, a livello internazionale, al centro di diverse campagne di sensibilizzazione le quali, inizialmente concepiti per ridurre lo skill e il gender gap, già dal 2014, si sono trasformate in vere e proprie campagne di alfabetizzazione funzionale orientate alla diffusione del pensiero computazionale come competenza trasversale e fattore di crescita personale.

In Italia, grazie ad una partnership con Code.org, nel 2014 parte il progetto ministeriale “Programmare il Futuro”, seguito, nel 2015, dall’assegnazione dell’incarico relativo al coordinamento di Europe Code Week e, nel 2016, dal successo di CodeMOOC e il suo riconoscimento come primo impegno concreto della nuova Agenda per le Competenze per l’Europa.

L’insegnamento del coding a scuola non è una semplice manovra a sostengo dell’utilizzo del computer in classe, dato che la tecnologia non è necessariamente richiesta per esercitare il pensiero computazionale. Piuttosto, si tratta di un modo per favorire lo sviluppo di competenze trasversali, quali il problem solving, il ragionamento logico e la creatività, richieste indipendentemente dal futuro settore di impiego professionale degli studenti. Non si tratta, dunque, di incoraggiare gli alunni a diventare sviluppatori, bensì a essere creativi e passare dall’essere meri consumatori di tecnologia a creatori e promotori di un’economia digitale.

Agli insegnanti, d’altra parte, non viene chiesto di trovare, all’interno della propria programmazione, del tempo da dedicare al coding, bensì—in un approccio simile a quello utilizzato per il CLIL—di applicare quest’ultimo durante l’insegnamento di qualsiasi disciplina, laddove possa essere utile a supportare determinate attività.

Il coding si presta ad essere introdotto in qualsiasi fascia d’età scolare in quanto:

  • fra i 5 e i 6 anni, i bambini possono apprendere cosa sono gli algoritmi—una “serie di istruzioni”—e sviluppare competenze di ragionamento logico, attività che non richiedono necessariamente l’utilizzo di un computer;
  • a 7-11 anni, gli studenti possono creare e debuggare programmi più complessi e acquisire dimestichezza con nuovi concetti (variabili, sequenze, selezione e ripetizione nei programmi, etc.);
  • a 11-14 anni, i ragazzi sanno applicare la logica Booleana, lavorano con i numeri binari, possono aver appreso uno o più linguaggi di programmazione e sono così in grado di creare le proprie applicazioni e a far interagire hardware e software.

Il tutto, sempre con un’attenzione particolare rivolta alla sicurezza informatica e di rete.

Per fare un esempio concreto di applicazione del coding, gli studenti possono apprendere come “animare” oggetti e personaggi, virtuali o meno—in questo caso vengono utilizzati dei robot—per raggiungere un determinato obiettivo, superando diversi ostacoli e impegnandosi a trovare una soluzione che, una volta ottenuta, avrà permesso loro di scrivere, inconsapevolmente, righe e righe di codice informatico generato dal semplice spostamento di blocchi colorati, ai quali corrispondono funzioni e codici specifici, come nella programmazione a blocchi. Questo particolare tipo di programmazione, come approfondiremo prossimamente, offre un approccio esperienziale e intuitivo al coding, riducendo le regole sintattiche a semplici incastri tra elementi e permettendo di sperimentare immediatamente l’effetto delle istruzioni impartite.

Per concludere, vi sono numerosi ambienti, in rete, che insegnano a scrivere e utilizzare il codice di programmazione. Fra essi ricordiamo:

  • Code.org – una piattaforma di giochi e video istruttivi che portano a ragionare e a trovare la soluzione a un problema per far sì che il proprio personaggio raggiunga l’obiettivo.
  • Scratch – nato da un’idea del Lifelong Kindergarten Group del MIT Media Lab di Boston nel 2003, è una piattaforma pensata per assecondare lo sviluppo cognitivo, emotivo e sociale dei bambini e che permette di creare storie interattive e videogiochi utilizzando la programmazione a blocchi.
  • com – permette di seguire corsi di programmazione in remoto.
  • CoderDojo – club extrascolastici gratuiti in cui viene insegnata la programmazione informatica attraverso il gioco.