OiLab summer Camp, l’informatica da toccare con mano

Si è concluso l’Open innovation lab Summer Camp: la prima edizione ha coinvolto, per una settimana, una ventina di ragazzi e ragazze tra i 12 e i 18 anni in attività di gioco e programmazione insieme a tutor e consulenti di Imola Informatica.

I ragazzi hanno potuto scegliere tra diverse attività:

  • sviluppare un gioco online per imparare i principi architetturali di una applicazione a tre livelli;
  • realizzare un cluster di Rancher su Raspberry per lavorare a container e giocare con i principi di alta affidabilità tipica alle infrastrutture di rete moderne;
  • programmare delle macchine Arduino, dotate di sensori per seguire un percorso prestabilito alla massima velocità possibile.

 

I ragazzi hanno optato quasi tutti per lo sviluppo del gioco online o per la la programmazione delle macchine Arduino. Solo uno ha scelto di lavorare al cluster di Rancher su Raspberry.

attività di programmazione

Il gioco online era una versione leggermente rivista di Slither (http://slither.io/), in cui ogni giocatore comanda un serpente cercando di fargli mangiare piccole caramelle colorate che lo fanno crescere, aumentandone le dimensioni. Muovendosi, ogni serpente ne incontra altri, se avviene uno scontro il gioco termina. Attraverso questa simulazione si sono potuti introdurre temi di grafica, di comunicazione online e di posizionamento vettoriale.

In particolare ho curato le attività di programmazione Arduino. L’obiettivo finale era risolvere il problema follow line, ovvero prendere una macchinina e farle seguire una linea. Si tratta di un caso d’uso in cui il codice ha un impatto immediato nel mondo reale. Si uniscono aspetti di programmazione e oggetti reali che i ragazzi possono toccare con mano, superando così la natura astratta dell’informatica. La soluzione dei problemi non si limita all’analisi del codice e dell’algoritmo applicato, ma passa anche dall’osservazione del comportamento della macchina nel mondo reale. Una curva troppo stretta o le batterie scariche possono mettere in crisi un algoritmo scritto alla perfezione.

test della macchina

I ragazzi hanno vissuto momenti di grande entusiasmo, in cui si sfidavano con le loro auto in gare sul circuito, e momenti di sconforto in cui tornavano al pc dopo aver visto la loro auto uscire, senza nessun apparente motivo.

Il primo giorno il gruppo si muoveva “a due velocità” in quanto alcuni ragazzi sapevano già programmare, mentre altri erano alle prime esperienze. Tuttavia, grazie alla collaborazione reciproca e all’aiuto dei tutor, già dal secondo giorno tutti sono stati in grado di programmare la propria soluzione.

Il primo algoritmo implementato prevedeva l’utilizzo di 2 sensori e la macchina doveva tenere la linea nera tra i due sensori.

Il secondo algoritmo estendeva il precedente, introducendo altri 3 sensori (per un totale di 5). La linea nera poteva danzare sotto i sensori e la macchina doveva comportarsi di conseguenza.

L’ultimo algoritmo era il PID, un algoritmo che cerca di ottimizzare il mantenimento della macchina sulla linea nera lavorando su:

  • misura dell’errore rispetto alla linea ideale;
  • derivata dell’errore rispetto alla linea ideale;
  • integrale dell’errore rispetto alla linea ideale.

Quest’ultimo aspetto lo abbiamo accantonato per lo scarso impatto sul comportamento della macchinina.

Molti ragazzi non avevano idea di cosa siano le derivate e gli integrali. I pochi che conoscevano questi concetti sono rimasti stupiti di come “cose tanto noiose” possano essere così utili e dare risultati così impressionanti.

Per implementare il PID c’è voluto tempo. Il codice era complicato e abbiamo dato molto supporto ai giovani partecipanti. La fatica è stata ripagata già al primo giro in pista: la macchina correva il doppio delle altre.

Abbiamo lasciato a tutti la possibilità di seguire le proprie inclinazioni e qualcuno ha provato altri sensori. In base alle inclinazioni e alle capacità di tutor e studenti abbiamo creato una integrazione via bluetooth  tra appMobile e Arduino. Questa attività non era programmata, ma si è dimostrata molto utile per modificare i parametri del PID, giro dopo giro, senza dover riprogrammare la macchina.

Uno degli aspetti più interessanti del Camp è stato che man mano che si manifestavano esigenze, si aggiungeva ciò che occorreva: tecnologie, algoritmi, matematica, batterie, sensori, etc. Non sempre tutto era già pronto e a disposizione, quindi la sera ci fermavamo per risolvere gap di conoscenza, di materiali oppure problemi hardware delle macchine.

Un bel momento per i ragazzi è stato la consegna delle magliette e degli attestati di partecipazione del primo OiLab Summer Camp. Tutti i ragazzi erano un po’ intimiditi, ma allo stesso tempo contenti e orgogliosi di aver preso parte a queste giornate.

Un altro aspetto, particolarmente gratificante per noi, è che i ragazzi hanno chiesto di andare avanti con altre iniziative del genere. Questo loro riscontro immediato ha messo in evidenza i risultati positivi dell’edizione pilota dell’OiLab Summer Camp. Ora stiamo ragionando su come continuare e migliorare questa esperienza educativa, dal punto di vista organizzativo e logistico, coinvolgendo le scuole del territorio.

foto di gruppo


 

Mi diverto con i computer sin da bambino, prima per gioco, poi come studente e infine per lavoro. Ho lavorato in molti ambiti: coaching, insegnamento, sviluppo e l'enterprise architecture. Ho ricoperto tutti i ruoli presenti nell'IT: sviluppatore, tester, architetto IT, team leader, scrum master, manager, stakeholder, committente ... Un giorno insegnavo a dei bambini a creare dei piccoli videogiochi: ho scoperto che un bambino era riuscito a programmare senza aver prima imparato a leggere e scrivere. Non immaginavo fosse possibile. Quel bambino mi ha fatto capire che per trovare soluzioni innovative ai problemi, a volte serve cambiare punto di vista. Ogni giorno accendo il computer per realizzare le aspettative dei nostri clienti, conscio che c'è sempre un modo di fare le cose, anche se queste sembrano difficili o impossibili.