Automazione dell'apprendimento, automatizzata
Gli studenti del corso PDM4AR (Planning and Decision Making for Autonomous Robots) dell'ETH imparano a scrivere algoritmi per gestirei processi decisionali autonomi, ad esempio insegnando ai veicoli autonomi a guidare. Tradizionalmente, corsi di questo tipo sono tenuti con esercizi scritti, risolvendo alcune iterazioni di un algoritmo con carta e penna. Inizialmente anche il corso PDM4AR veniva insegnato in questo modo. Ma questo tipo di esercizi è molto diverso dal lavoro reale nel campo della robotica e non è molto divertente. Esiste un modo migliore per mostrare agli studenti la vera magia di questi algoritmi e risvegliare la loro passione per la materia.
Credendo fermamente nel valore del lavoro pratico, il Prof. Emilio Frazzoli ha deciso di avvicinare l'esperienza al mondo reale e di fornire un’opportunità di apprendimento che vada oltre il materiale di base del corso. In collaborazione con il collega del NCCR Automation Alessandro Zanardi e con l'ingegnere informatico Shengjie Hu ha creato un'esperienza di apprendimento completamente nuova che permetta agli studenti e alle studentesse di trasformare la teoria imparata in codice operativo. Le persone che partecipano al corso possono accedere a strumenti e casi di test da un archivio condiviso, elaborare una soluzione, caricare il lavoro finito su Github per sottoporlo ad un confronto con casi di test segreti che non hanno visto. La valutazione finale viene generato automaticamente in base alle prestazioni ottenute in questi test.
Anche se a prima vista può sembrare artificioso utilizzare una valutazione automatica, in realtà è molto più realistico del feedback individuale manuale. Dopo tutto, non è raro che il codice fallisca quando viene messo alla prova e, per quanto sia frustrante, nel mondo reale i programmatori e le programmatrici non ricevono spiegazioni accurate su dove hanno sbagliato. Bisogna solo capirlo.
“Molto più stimolante di un corso convenzionale”.
Alessandro, responsabile della progettazione degli esercizi di prova, è entusiasta di questo approccio innovativo. “Il coding vero e proprio è molto più difficile, ma anche più stimolante dei soliti esercizi con carta e penna”, afferma. Il modo migliore per ottenere l' “effetto wow” è quello di lavorare con fatica al processo di implementazione della teoria e alla fine vedere il proprio codice risolvere problemi reali sulla scala che i computer moderni sono in grado di raggiungere”.
“E oltre a essere esposti in questo modo a strumenti moderni, come Docker e Github, gli studenti beneficiano anche di molti insegnamenti di vita che sono insiti nella robotica”.
Come ad esempio la differenza tra i casi di test e il mondo reale e i costi d'implementazione.
“I collaudi su hardware reale sono costosi. Per questo è necessario riflettere attentamente su tutti i requisiti, le specifiche e i possibili casi limite”.
In questo corso, le studentesse e gli studenti della classe Github ricevono una copia privata dell’archivio delle esercitazioni e possono dedicare del tempo allo sviluppo delle proprie soluzioni. Solo quando ritengono che il loro codice sia pronto, lo sottopongono a valutazione e i risultati vengono pubblicati automaticamente sul loro archivio e su una classifica condivisa. È possibile riprovare se i risultati non sono soddisfacenti, ma non all'infinito: è consentito un numero limitato di invii per ogni esercizio. Questo impone una disciplina simile ai vincoli di costo.
Un'altra abilità del mondo reale che viene sottolineata in questo corso è la collaborazione, con gli ultimi due compiti svolti in piccoli gruppi. Le università tendono a concentrarsi sulla valutazione dei singoli, ma in ambito industriale il lavoro di squadra è essenziale. Gli studenti hanno l'opportunità di esercitarsi a lavorare insieme sulla stessa base di codice, come dovranno fare in ambito commerciale.
Come per molte innovazioni, questo modo di fare le cose sembra ovvio... una volta che è già stato adottato. Ma arrivare a questo punto non è stato semplice. Alessandro e Shengjie hanno dovuto affrontare un compito difficile: creare l'infrastruttura software necessaria per funzionare in modo affidabile su tutte le macchine che gli studenti e le studentesse avrebbero potuto utilizzare, ognuna con la propria architettura e il proprio sistema operativo. Inoltre, progettare esercizi e funzioni di punteggio che fossero equi e che riflettessero ragionevolmente la comprensione del materiale ha richiesto una grande attenzione e creatività.
Ma ne è valsa la pena. Zhengyu Fu, uno dei tester che ha partecipato alla prima edizione di questo nuovo corso automatizzato, conferma che questa “esperienza di codifica gratificante e coinvolgente” gli ha insegnato molto. “È necessario comprendere a fondo ogni aspetto del materiale per poterlo trasformare in codice funzionante. Inoltre, viene richiesto alle studentesse e agli studenti di scrivere parti fondamentali da zero, anziché limitarsi a riempire gli spazi vuoti”.
I progettisti del corso sono convinti del valore che il loro duro lavoro ha creato.
“Si tratta di qualcosa che va ben oltre l'insegnamento convenzionale della robotica”, afferma Emilio. “Dopo aver avviato e fatto crescere la mia azienda di robotica, volevo assicurarmi che gli studenti e le studentesse imparassero non solo le basi teoriche del settore, ma anche le competenze per implementare e distribuire codice pronto per la produzione utilizzando strumenti standard del settore. Non ci limitiamo a fornire materiale didattico: stiamo preparando le nuove generazioni ad avere un impatto in questo campo. È impegnativo, ma divertente. E non deve nemmeno rimanere tra le mura dell'ETH: il materiale è tutto su Github. Chiunque può provarlo da solo”.