Coding. Con il termine coding si intende la stesura di un programma, cioè di una sequenza di istruzioni.
Robotica educativa. La robotica porta il coding nel mondo reale, collegando la programmazione a oggetti reali sui quali gli studenti possono agire: si utilizza il coding per ‘’comunicare’’ con un modello meccanico, dotato di elettronica programmabile, con l'obiettivo di istruirlo ad un compito. L'aspetto elettronico è completamente trasparente e si riduce al collegamento, tramite connettori obbligati, della parte intelligente ai motori ed ai sensori. L'aspetto meccanico richiede lo sviluppo di particolari capacità solo in una fase avanzata in cui, ad es., si richiede allo studente di partecipare a gare.
Pensiero computazionale. E' evidente che non è sufficiente portare i ragazzi in laboratorio per utilizzare un word processor o cercare dati e informazioni su Internet, per affermare di aver fatto “un'ora di informatica”. Ma anche l'apprendimento di alcune tecniche di programmazione è solo un aspetto secondario. Infatti il coding consente:
Una didattica più efficace e completa
Il pensiero computazionale si riferisce all'utilizzo del coding per la soluzione di problemi non limitati esclusivamente all’ambito informatico. Si tratta di utilizzare le strutture logiche della programmazione per insegnare agli studenti a risolvere problemi complessi. Quando parliamo di coding a scuola parliamo perciò, principalmente, di metodologie e strumenti utili a sviluppare e consolidare il pensiero computazionale. La programmazione non è il fine: i ragazzi programmando, imparano ad apprendere.
La soluzione di un problema secondo la logica informatica, in genere, ha il grande vantaggio di non essere discutibile in termini di correttezza: il risultato, ad es. grafico, dimostra immediatamente se il ragionamento è corretto e solo la piena comprensione del problema porta alla soluzione. Dopo si può discutere su eventuali ottimizzazioni. Inoltre la soluzione non è unica e quindi ci sono ampi spazi per la creatività.
Un altro aspetto da non sottovalutare è che un calcolatore esegue esattamente i comandi impartiti e nulla mette di suo, anche se questa esecuzione è estremamente precisa e veloce. E' facile istruire una persona che, dotata di intelligenza ed interpretazione dei comandi, riesce a rimediare a imprecisioni ed errori. Più difficile è comandare una macchina che diventa quindi una banco di prova ideale per testare un algoritmo.
Certamente l'uso di linguaggi che favoriscono un forte ricorso a metodi euristici e alla costruzione di proprie strategie di approccio ai problemi, gioca un ruolo davvero importante nello sviluppo di competenze generali.
Un pensiero più completo per tutte le professioni di domani
Lavorare sul pensiero computazionale significa sviluppare una forma mentis che un domani sarà utile non solo a ingegneri e programmatori, ma anche a medici, avvocati, dirigenti di azienda, architetti, … che ogni giorno devono affrontare problemi complessi perché aiuta a:
• Sviluppare il pensiero laterale, creativo e di gruppo
• Ipotizzare soluzioni che prevedono più fasi
• Capire l’importanza di una descrizione e di una comunicazione chiara di cosa fare e quando farlo, senza lasciare spazio all’equivoco
Lo sviluppo di un pensiero critico sul mondo di oggi
Spesso si dice che i cosiddetti ‘’nativi digitali’’ sono bravissimi con le nuove tecnologie. E’ un assunto fuorviante: nella maggior parte dei casi di fronte a un computer o a un tablet i nativi digitali hanno un approccio puramente passivo. Quando però questi ragazzi si avvicinano al coding diventano soggetti attivi della tecnologia e maturano una vera presa di coscienza sul mondo che li circonda e sui dispositivi che usano ogni giorno
L'acquisizione di conoscenze necessarie ad una nuova cultura generale
Nella società contemporanea la cui tecnologia dipende in misura fondamentale dall’informatica, avere familiarità con i concetti di base dell’informatica come materia scientifica è un elemento critico del processo di formazione dei cittadini. Per essere adeguatamente preparato a qualunque lavoro vorrà fare da grande, a uno studente è ormai indispensabile una comprensione dei concetti di base dell’informatica (com’è accaduto nel secolo passato per l’italiano, la matematica, la fisica, la biologia, la chimica,…)
La comprensione della basi della tecnologia, pressoché costanti, per adattarsi alla continua innovazione
Da un punto di vista più propriamente educativo, è primaria una scelta che indirizzi i giovani ad assumere, nei confronti della tecnologia digitale, un atteggiamento di partecipazione attiva e, per quanto possibile, consapevole, abbandonando un ruolo (sempre molto criticato, almeno a parole) di consumatori–utilizzatori passivi ed acritici.
L'apprendimento delle strutture logiche di controllo fondamentali del pensiero informatico
Come da piccoli si impara da soli a parlare, così nell'ambiente di gioco, grazie all'ambiente di programmazione grafico che non pone problemi di sintassi, si imparano le strutture logiche fondamentali dell'informatica:
La sequenza consente di individuare le varie operazioni che devono essere eseguite e il loro ordine.
La selezione consente di stabilire sequenze alternative dipendenti dal verificarsi di una condizione.
L’iterazione consente di ripetere una sequenza finché è vera una determinata condizione.
Il ruolo dell'informatica
Informatica come oggetto di studio in sé oppure come strumento per lo studio in generale di tutte le discipline?
Papert ritiene che, mentre ogni disciplina sostiene d’insegnare agli studenti a pensare, l’informatica lo fa in modo operativo e concreto. Per questo non si deve insegnare la programmazione fine a se stessa, ma ad usare le conoscenze legate alla programmazione per creare contesti nuovi ed inesplorati per lo studente in modo da valutare il livello di competenze raggiunto; ad es. esplorare idee potenti come il calcolo differenziale o il feedback con i robot LEGO. Le idee di Papert sono ancora attuali, ma la loro attuazione richiede un profondo cambiamento della didattica da trasmissiva a laboratoriale, strutturata per progetti, che incentivi la collaborazione e la discussione.
Spunti attuativi per la robotica educativa
montaggio del veicolo educativo suggerito dal SW EV3 education, eventualmente accessibile in pdf all'indirizzo http://robotsquare.com/2013/10/01/education-ev3-45544-instruction/
spostamento in avanti ed indietro variando i parametri disponibili nei blocchi di comando motore. Sequenza.
quadrato ed introduzione al ciclo
riconoscimento colore: blocco su una linea colorata. Concetto di “feedback”
selezione: percorso lungo una linea colorata curva
uso sensore distanza, touch e giroscopio
aggancio di un oggetto e gara finale.
utilizzo dei sensori: attesa, ciclo, gestione della variabile acquisita
SPUNTI ATTUATIVI PER IL CODING
Inizialmente si procede utilizzando i corsi di autoformazione di alta qualità disponibili free su https://code.org/ e https://www.madewithcode.com che permettono all'insegnante anche un accurato controllo sull'apprendimento del singolo studente.
Successivamente con Scratch, che utilizza un ambiente di programmazione molto simile al precedente anche se più versatile, si sviluppano le inclinazioni personali nei riguardi dell'elaborazione all'immaginazione, rispettando gli interessi degli studenti ed enfatizzando i potenziali creativi.
In una terza fase si approfondiscono le competenze di base sulla programmazione strutturata, attraverso l'analisi e il debug del codice tramite i diagrammi di flusso.
Infine si collegano le competenze informatiche con altre materie, in particolare Matematica e Fisica per educare al "pensiero informatico" in contesti interdisciplinari e problemi variegati.
Introduzione: autoapprendimento
https://studio.code.org corso rapido
https://www.madewithcode.com/projects/insideout?lang=en&level=1
Getting Started with Scratch; Create a Pong Game
Scratch: disegno di poligoni:
struttura di un algoritmo: inizializzazione ed esecuzione
cicli annidati
introduzione alle variabili
Scratch: simulazione del sistema solare.
Scratch: remix del videogioco flappy
Scratch: clonazione di sprite
Scratch: output e input di variabili:
esercizi dati tramite testo: perimetro e area di figure geometriche
input condizionato (dati positivi...)
cicli condizionati: controllo della condizione all'inizio o alla fine del ciclo
Diagrammi di flusso e scratch:
inizio e arresto
output
input: output di richiesta inserimento dato + attesa dell'invio
ciclo:
controllo condizione all'inizio o alla fine
forever
contatore
ripeti N volte
selezione
Comprensione di semplici algoritmi dati in forma testuale:
individuazione delle variabili di I/O
comprensione dell'algoritmo
traduzione in linguaggio matematico del problema
Mblock: Scratch + Arduino collegati con Elettronica
gestione di led, button e joystick
cenni sulla programmazione a stati per gestire con pulsanti reali costumi diversi dello stesso sprite
grandezze analogiche e digitali
Scratch: collegamento con Matematica:
piano cartesiano: cicli indicizzati
rappresentazione di curve con la funzione stampa
Scratch: collegamento con Fisica:
rappresentazione vettoriale in coordinate rettangolari
rappresentazione vettoriale in coordinate polari
scomposizione della forza peso nelle componenti parallela e perpendicolare ad un piano inclinato
moto di un proiettile