Dietro il coding/Come va praticato il Coding

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search
Indice del libro

Dicevamo che la maniera di organizzare il coding può variare molto tra le attività proposte su Code.org, quelle proposte dagli sponsor e quelle organizzate da volontari (ad esempio nei Coder Dojo). Questa situazione è destinata a cambiare.

Un bando MIUR del Settembre 2016 destina 4,3 milioni di euro alle reti di scuole per produrre 25 curricoli su 10 tematiche del “digitale”. Le tematiche sono sicuramente interessanti, a partire da quelle definite Fondamentali, ovvero:

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

Seguono le tematiche “Caratterizzanti”, che comprendono anche il coding:

  • 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

Più avanti nel bando vengono descritti degli esempi dei contenuti per ogni area. Per il coding, in particolare per la scuola primaria, troviamo questa descrizione:

“[...] Educazione  e  sviluppo  del  pensiero  computazionale  sia  tramite  attività unplugged (senza  calcolatore) sia tramite linguaggi di programmazione visuali (scuola primaria)."

Si tratta quindi di attività del tutto omogenee a quelle proposte da Code.org. Nel seguito, però, si danno indicazioni più precisi sugli argomenti:

  • coding by gaming, percorsi di apprendimento condivisi in classe; uso di strumenti di coding by gaming online;
  • competenze computazionali di base; il codice binario; identificare e scrivere istruzioni sequenziali;
  • esecuzione di sequenze di istruzioni elementari; programmazione visuale a blocchi;
  • capire lo sviluppo e l'utilizzo di strumenti informatici per la risoluzione di problemi;
  • calcolare espressioni logiche con gli operatori AND e OR;
  • riconoscere nel procedimento di soluzione algoritmica di un problema gli elementi strutturali fondamentali: sequenza, scelta condizionata, iterazione;
  • conoscere e saper applicare nella vita quotidiana metodologie di ricerca sequenziale, dicotomica e hash e comprenderne i limiti di applicazione e il grado di efficienza;
  • conoscere le strategie per l'ordinamento di oggetti (selezione/inserimento, partizionamento) e comprendere, in modo intuitive, l'efficienza della strategia adottata;
  • saper eseguire semplici algoritmi su grafi di ridotte dimensione, quali la ricerca di cammini e di matching;
  • saper rappresentare i dati o i risultati di un problema mediante l’uso di tabelle, alberi o grafi; oggetti programmabili;
  • verifica e correzione del codice;
  • conoscere il concetto di ipertesto, il suo ruolo nel world wide web, e la struttura a rete di calcolatori su cui esso è basato”

Come si vede, a parte le due righe in cui si citano il “coding by gaming” e la “programmazione visuale a blocchi”, qui si sta parlando dei contenuti classici di un corso di introduzione all’informatica (come quello del testo del professor Batini citato). Il che lascia un po’ perplessi.

Ma soprattutto, è chiaro che il coding appartiene all’area delle pratiche, non a quella delle riflessioni. Quando si gioca con Scratch, quando si pilota un robot, non si deve riflettere?

Questa separazione tra riflessione e tecnica, tra aspetti etici e pratica, è indizio di un'altra grande separazione che è più difficile cogliere: quella tra aspetti cognitivi e affettivi.

In generale, il rapporto affettivo con le macchine digitali (computer, tablet, robot) e con gli artefatti digitali (programmi) è davvero poco studiato.

Ne può essere esagerata l’importanza (Papert) o può essere stigmatizzato come simulacro pericoloso dei rapporti con le persone (Turkle); ma è questo che fa funzionare il coding (e che fa amare ai programmatori il proprio lavoro).

Non è detto che docenti e famiglie condividano questa tonalità affettiva particolare. Ma non è un aspetto che si può trascurare. Però questo non significa che occorre che tutte le attività di coding debbano essere puzzle e giochi.

Mi sembra che ci sia un errore pedagogico alla base della maniera di proporre, e di pensare, gli ambienti di apprendimento come Scratch. E’ come se ci fosse un sillogismo:

  1. L’apprendimento tramite un gioco è più divertente
  2. Bisogna insegnare il pensiero computazionale
  3. Quindi facciamolo con un ambiente giocoso (“coding by gaming online”), così non sembra nemmeno scuola.

Apprendere, nel senso di procedere gradualmente – se possibile - in un percorso di maggior comprensione del mondo, è gratificante di per sé.

Creare un (piccolo) mondo, assegnargli delle regole e modificarle, poi dargli vita e vederlo evolvere, è un modo molto efficace – e piacevole - di imparare.

Questa creazione di un piccolo mondo è, appunto, la programmazione. Che è parente della creazione narrativa e di quella musicale.

Visuale o verbale, non fa molta differenza. Anzi: paradossalmente: più si aggiungono “gadget”, meno il bambino è concentrato sul processo di costruzione vera e propria del mondo artificiale. L’identificazione del bambino con l’avatar (tartarughe o pupazzetti), tipica del videogioco, è solo uno dei possibili rapporti che si possono istituire.

Il programmatore, junior o meno, è il Demiurgo del suo programma, non semplicemente uno degli eroi.

Note[modifica]