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.
Due vincoli architetturali danno forma al progetto:
La valutazione assegna fino a 27 punti su cinque dimensioni:
| Dimensione | Punti max | Cosa valuta |
|---|---|---|
| Design | 6 | Interfaccia utente e meccanismi di interazione (con i test con utenti) |
| Gestione funzionalità real-time/push | 8 | La funzionalità in cui il server inizia la comunicazione |
| Gestione degli Utenti | 5 | Le tipologie di utenti e i loro ruoli |
| Gestione del servizio | 6 | La logica applicativa del servizio offerto |
| Effetto WOW | 2 | Qualcosa di sorprendente e memorabile |
I gruppi sono da 2 o 3 persone (da concordare con i docenti nel caso di eccezioni).
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.)
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:
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.
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).
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.
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.»
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.
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.
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.
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.
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.
Design 6 punti, gestione funzionalità real-time/push 8 punti, gestione degli utenti 5 punti, gestione del servizio 6 punti, effetto WOW 2 punti.
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).
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.
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.
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.
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.
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.
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.