Parte V — Ospiti e progetto · Capitolo 15

Il progetto ASW: proposte, requisiti e consegna

~40 min di lettura3 widget interattivi2 tavole

In questo capitolo

  1. L'elaborato di fine corso: requisiti generali
  2. Tipologie di utenti e funzionalità push
  3. Criteri di valutazione
  4. Le proposte di tema
  5. Temi da evitare e proposte originali
  6. Una frontiera: LLM come controller robotici
  7. L'esercizio bonus: componenti Vue generati con LLM
  8. Le tonalità di scrittura del prompt
  9. Struttura della consegna bonus
  10. Consegna e scadenza
  11. Verifica le tue conoscenze

1. L'elaborato di fine corso: requisiti generali

Il progetto di ASW è la realizzazione di un elaborato a partire dalle esercitazioni di laboratorio, in gruppo da 2–3 persone. I requisiti formali:

Il tema (per ogni gruppo) e le specifiche devono essere concordati con docente e tutor via email; una volta definiti, devono essere pubblicati da uno studente del gruppo sul Forum degli Elaborati disponibile su Virtuale. Il corso propone alcuni temi, volutamente molto generici: ogni gruppo può focalizzarsi su alcuni aspetti, dettagliandoli.

2. Tipologie di utenti e funzionalità push

Due vincoli architetturali danno forma al progetto:

3. Criteri di valutazione

La valutazione assegna fino a 27 punti su cinque dimensioni:

DimensionePunti maxCosa valuta
Design6Interfaccia utente e meccanismi di interazione (con i test con utenti)
Gestione funzionalità real-time/push8La funzionalità in cui il server inizia la comunicazione
Gestione degli Utenti5Le tipologie di utenti e i loro ruoli
Gestione del servizio6La logica applicativa del servizio offerto
Effetto WOW2Qualcosa di sorprendente e memorabile

I gruppi sono da 2 o 3 persone (da concordare con i docenti nel caso di eccezioni).

4. Le proposte di tema

Le proposte ufficiali del corso sono volutamente generiche, per lasciare spazio alla focalizzazione di ogni gruppo. In sintesi:

Mobilità per passeggeri (e non) — trasporto pubblico con interfacce per passeggeri, control room e driver; backend; servizi a bordo e/o presso la fermata; raccolta di dati legata alle postazioni (fermate); integrazione con servizi esterni (meteo, traffico, eventi…).

Smart Mobility — calcolo di percorsi multimodali urbani ed extra-urbani, considerando diversi mezzi di trasporto (non solo pubblici: bici, monopattini, a piedi) e personalizzazioni in base a meteo, inquinamento atmosferico e acustico, tempi, illuminazione, sicurezza.

Piattaforma di simulazione traffico e mobilità — Web UI per Eclipse SUMO (Simulation of Urban Mobility), con diversi profili utente per la gestione di progetti di mobilità urbana.

Crowd Digital Twin — applicazioni web per il monitoraggio dei comportamenti delle folle ed eventuali simulazioni, in ambienti specifici (Campus, fermate, stazioni, bus, treni); sensori simulati (camere per people counting, sensori di presenza, ambientali); profili admin, gestore dell'ambiente e utente parte della crowd.

Applicazioni per la sostenibilità digitale — goal: riduzione del personal footprint. Web app (che potrebbero sfruttare AI, esempio: LLM) per generazione di diete/menu settimanali sostenibili (Km0, anti-spreco, bilanciate, emissioni limitate), calcolo di percorsi sostenibili, ottimizzazione dello shopping, facilitazione dell'interazione con LLM.

Applicazioni per climate change — web app per il crowdsensing di dati di diversa natura: monitoraggio dei corsi d'acqua, pavimentazione stradale, stato del suolo, alberi e piante, luminosità delle aree cittadine, inquinamento acustico e atmosferico.

Applicazioni per SDGs — web app per supportare e/o promuovere i Sustainable Development Goals (sdgs.un.org/goals), prendendo spunto dall'osservatorio dei progetti AI a supporto degli SDGs (ai-for-sdgs.academy/observatory).

Human-Robot Interaction — web app per il controllo di robot: dashboard per inviare comandi di spostamento, mappa per la visualizzazione della posizione del robot nell'ambiente, possibilità di esperimenti con robot reale. (È il tema approfondito nella sezione 6.)

5. Temi da evitare e proposte originali

I docenti sono disposti a valutare proposte degli studenti che si differenzino in modo sostanziale dai progetti tipici di «Tecnologie Web». Esempi di proposte da NON presentare, perché troppo simili a progetti standard:

6. Una frontiera: LLM come controller robotici

Il seminario di Kelvin Olaiya e Giovanni Delnevo (24 ottobre 2025) — «Reimagining HRI: LLMs as Robotic Controllers» — è l'esempio perfetto di come una proposta di progetto del corso (Human-Robot Interaction) nasca da un'attività di ricerca attiva del gruppo: i ricercatori chiudono il seminario invitando esplicitamente a proposte di progetto e tesi in quest'area.

La motivazione: i recenti progressi dell'AI, in particolare negli LLM, hanno il potenziale di rivoluzionare la Human-Robot Interaction (HRI). Gli LLM permettono ai robot di comprendere l'essere umano «in modo umano»: processano il linguaggio naturale, estraggono l'intento e lo traducono in azioni robotiche eseguibili, riducendo la necessità di programmazione manuale e di coding specifico per task. La sfida: garantire affidabilità, interpretabilità ed efficacia nel mondo reale.

Il lavoro ha indagato capacità e limiti degli LLM nell'HRI, concentrandosi su zero-shot navigation ed exploration: analizzare come gli LLM interpretano i goal definiti dagli utenti ed eseguono ragionamento spaziale, identificazione dei target e azioni di movimento in un ambiente simulato. Il modello usato è Gemini 2.0 Flash (multimodale, 1M+ token di contesto, ~8K token di output, bassa latenza); il system prompt specifica il ruolo dell'LLM, le capacità di alto livello del robot, una policy per la generazione dei (sub)plan, il formato di output atteso, la necessità di dichiarare il goal di ogni subplan, e la richiesta di descrivere la scena, identificare i cambiamenti ed esprimere il ragionamento.

I risultati delle tre domande di ricerca:

La conclusione: gli LLM mostrano un forte potenziale nell'HRI, in particolare per navigazione ed esplorazione zero-shot, ma non sono ancora sufficienti per un dispiegamento completamente autonomo. Lavori futuri: loop di disambiguazione interattivi (ask, confirm, refine), benchmark per l'action grounding e la robustezza dei prompt, e design di prompt centrati sull'utente. Per il corso, è l'invito concreto a portare questo tema nel progetto d'esame.

7. L'esercizio bonus: componenti Vue generati con LLM

L'Esercizio Bonus (Manuel Andruccioli, a.a. 2025/26) vale fino a 1 punto bonus e chiede di implementare uno o più componenti Vue.js tramite Large Language Models, con Single-File Components, per realizzare un form a scelta. La consegna prevede più implementazioni dello stesso form che differiscono per:

Ogni studente deve scegliere un form da implementare (i form devono essere diversi tra loro; in caso di difficoltà si può chiedere al docente). La scelta del form: cercare un form non banale su un sito web (es. no login con email+password; può essere un form di contatto, iscrizione, feedback, prenotazione…), controllare che non sia già stato scelto da un altro studente, inserire la scelta nel modulo Virtuale con i relativi dettagli, e salvare nella cartella materials/ il link di riferimento (form-link.txt), una breve descrizione (form-description.txt), uno screenshot (form-screenshot.png) ed eventuali note (notes.txt).

La matrice delle implementazioni

2 (API: Options e Composition) × 3 (LLM) × 3 (tonalità) = 18 implementazioni. I tre LLM richiesti sono OpenAI GPT-5 (chatgpt.com), Claude Sonnet 4.5 (claude.ai) e Google Gemini 2.5 Pro (gemini.google.com); le tre tonalità sono Scortese, Neutro e Cortese.

Regole di implementazione: essere molto dettagliati nella scrittura del prompt; eseguire un solo prompt per ogni implementazione — niente iterazioni o correzioni successive; il prompt deve essere in italiano; salvare il codice generato nei file Form.vue (ed eventuali altri file necessari da importare), un file per ogni implementazione, seguendo la struttura di cartelle fornita; testare il codice generato e assicurarsi che funzioni. Non è necessario implementare la logica di invio del form: concentrarsi sulla struttura; usare solo componenti di base di Vue.js, senza librerie esterne; per ogni implementazione salvare anche il prompt utilizzato nel file prompt.txt nella stessa cartella del componente; ogni implementazione deve essere autonoma (niente componenti condivisi, niente fattorizzazione di codice comune); non modificare altri file del progetto oltre a quelli richiesti.

8. Le tonalità di scrittura del prompt

La parte più curiosa dell'esercizio è lo studio delle tonalità, ovvero come cambia il risultato al variare del registro linguistico del prompt:

Livello: scortese, maleducato. Tipo: tono impaziente, autoritario, svalutativo. Esempio riportato dalle slide: «Scrivi una SPA in Vue con Composition API che implementa questo form, pezzo di merda. Fai il codice chiaro e facile da capire. Implementalo ora e muoviti. E sai cosa succederà se vedo che non funziona ciò che hai fatto.»

Livello: neutro. Tipo: linguaggio tecnico, privo di formule di cortesia. Esempio: «Genera una Single Page Application in Vue utilizzando la Composition API. Il codice deve essere chiaro e facile da comprendere. Deve implementare il seguente form.»

Livello: cortese. Tipo: linguaggio formale e cortese, tipica comunicazione professionale. Esempio: «Potresti implementare una Single Page Application in Vue 3 realizzata con la Composition API, garantendo chiarezza del codice e facilità di comprensione. Sentiti libero di fornire l'implementazione che meglio credi. L'app dovrebbe implementare il seguente form.»

9. Struttura della consegna bonus

La struttura di cartelle fornita con la base del progetto (bonus-code/) è la seguente:

bonus-code/
├── {index.html, jsconfig.json, package-lock.json, package.json,
│    vite.config.js, src/main.js}        <--- Non modificare!
├── materials
│   ├── form-description.txt
│   ├── form-link.txt
│   ├── form-screenshot.png.placeholder
│   └── notes.txt
└── src
    ├── App.vue                          <--- Modificare esclusivamente per
    │                                        importare e usare il componente generato
    └── components
        ├── composition-api
        │   ├── chat-gpt
        │   │   ├── 01-scortese          <--- Qui è possibile creare ulteriori
        │   │   │   ├── Form.vue             file per l'implementazione
        │   │   │   └── prompt.txt
        │   │   ├── 02-neutro
        │   │   │   └── ...
        │   │   └── 03-cortese
        │   │       └── ...
        │   ├── claude
        │   │   └── ...
        │   └── gemini
        │       └── ...
        └── options-api
            └── ...

Ogni cartella «foglia» della matrice (API × LLM × tonalità) contiene il Form.vue generato — l'entry point del codice generato — e il prompt.txt con il prompt utilizzato.

10. Consegna e scadenza

La consegna del bonus avviene su Virtuale mediante l'apposito modulo: consegnare l'intero progetto in formato zip a partire dalla base fornita, rimuovendo i file generati (node_modules, dist), includendo tutti i file di testo e screenshot come da istruzioni. Scadenza: entro e non oltre il 24 dicembre 2025, ore 23:59.

In sintesi, per l'esame

Progetto MEVN di gruppo (2–3 persone) con 2 tipologie di utenti, almeno una funzionalità push, repository condiviso almeno una settimana prima dell'orale, relazione LaTeX, max 27/30 (Design 6 · real-time/push 8 · utenti 5 · servizio 6 · WOW 2). Bonus facoltativo: 18 implementazioni di un form Vue generate con 3 LLM e 3 tonalità di prompt, fino a 1 punto, entro il 24/12/2025.

Verifica le tue conoscenze

Quali sono i requisiti generali del progetto ASW?

Elaborato a partire dalle esercitazioni di laboratorio, in gruppo da 2–3 persone, stack MEVN, consegna con repository (GitHub o altro) almeno 1 settimana prima della prova orale, relazione in LaTeX, punteggio massimo 27/30, test consigliati con almeno 5 utenti da riportare nella relazione. Tema e specifiche vanno concordati con docente e tutor e pubblicati sul Forum degli Elaborati su Virtuale.

Quali vincoli architetturali deve rispettare il progetto?

Almeno 2 tipologie di utenti (Admin del servizio e utente fruitore) e almeno una funzionalità legata allo scambio di dati in cui è il server ad iniziare la comunicazione (es. notifiche), per sfruttare l'immediatezza dello scambio push dello stack.

Come si compone il punteggio massimo di 27 punti?

Design 6 punti, gestione funzionalità real-time/push 8 punti, gestione degli utenti 5 punti, gestione del servizio 6 punti, effetto WOW 2 punti.

Elencate alcune proposte di tema ufficiali.

Mobilità per passeggeri (trasporto pubblico con profili passeggeri/control room/driver), Smart Mobility (percorsi multimodali personalizzati), piattaforma di simulazione traffico con Eclipse SUMO, Crowd Digital Twin (monitoraggio folle), applicazioni per la sostenibilità digitale (diete sostenibili, percorsi a basse emissioni), applicazioni per climate change (crowdsensing), applicazioni per SDGs, Human-Robot Interaction (dashboard per il controllo di robot).

Quali temi sono da evitare?

Proposte troppo simili a progetti tipici di Tecnologie Web: gestione di turni, ecommerce, giochi, eventi, social network. Sono invece benvenute proposte originali che si differenziano in modo sostanziale.

Qual è l'architettura del sistema HRI presentato nel seminario?

L'utente definisce un goal; l'adapter scatta una snapshot della scena dal robot; prompt e snapshot vengono inoltrati all'LLM; l'LLM genera un (sub)plan; l'adapter interpreta il piano e invia comandi al controller del robot; l'LLM richiede feedback visivo e il processo continua iterativamente finché l'LLM determina che il goal è stato raggiunto. Modello: Gemini 2.0 Flash, con system prompt che definisce ruolo, capacità del robot, policy di pianificazione e formato di output.

Quali sono i risultati principali del lavoro HRI?

RQ1 (PR2): successo ~22%, failure mode su percezione, obstacle avoidance e allucinazioni. RQ2 (Khepera IV): successo ~26%, adattamento minimo tra piattaforme (solo mapping controller e parametri camera), nessun retraining del prompt. RQ3 (user study): prompt semplici e diretti più efficaci, 78% dei prompt di successo da utenti con esperienza di smart assistant. Conclusione: forte potenziale, ma non ancora autonomia completa.

Che cosa chiede l'esercizio bonus?

Implementare un form (scelto da un sito web, non banale e non già scelto) come componente Vue.js Single-File generato con LLM, in 18 implementazioni: 2 API (Options e Composition) × 3 LLM (GPT-5, Claude Sonnet 4.5, Gemini 2.5 Pro) × 3 tonalità di prompt (scortese, neutro, cortese). Vale fino a 1 punto bonus.

Quali regole valgono per i prompt del bonus?

Essere molto dettagliati; un solo prompt per implementazione (niente iterazioni o correzioni); prompt in italiano; salvare il prompt in prompt.txt nella cartella dell'implementazione; testare il codice generato e assicurarsi che funzioni; non serve la logica di invio del form; solo componenti base di Vue, senza librerie esterne; ogni implementazione autonoma, senza componenti condivisi né fattorizzazione.

Come e quando si consegna il bonus?

Su Virtuale tramite l'apposito modulo: intero progetto in formato zip a partire dalla base fornita (bonus-code/), rimuovendo i file generati (node_modules, dist), includendo tutti i file di testo e screenshot. Scadenza: 24 dicembre 2025, ore 23:59.