ARGOMENTI DI TESI DISPONIBILI (triennali e/o quinquennali)
ATTENZIONE: le mie tesi hanno una durata minima di 5 mesi e durata non fissata (terminano quando gli obiettivi sono raggiunti)
- Strumenti di supporto alla dislessia
- DSA e programmazione I ragazzi con DSA si trovano facilitati nel programmare o no?
- Generazione automatica di esercizi Python
- Sistematizzazione degli esercizi già svolti (6 anni * 10 esami * 6 esercizi) in modo che ogni esercizio abbia:
- testo, prototipo, unit-tests, soluzioni, discussione dell'analisi, versione inglese
- per realizzare questa parte si possono usare anche strumenti generativi (Chatgpt e simili)
- oppure parsing dei file esistenti ed estrazione delle parti per costruire il "package" di ciascun esercizio
- script di costruzione automatica di un gruppo di esercizi con certi vincoli globali: argomenti, difficoltà minima, punteggio massimo, difficoltà minima per raggiungere 18
- Correzione automatica di esercizi Python e generazione automatica di spiegazioni degli errori
- Raccolta di esercizi Python con correzione automatica e studio dei tipi di errori fatti negli esercizi consegnati in sede d'esame
- Correzione automatica per confronto con implementazione di riferimento
- per definire i controlli e generare i test useremo le librerie icontract e hypothesis
- Altri argomenti disponibili:
- Eserciziario con suggerimenti di analisi dei problemi a livello crescente di dettaglio (un po' come i suggerimenti nei giochi di avventure, che non devono spoilerare troppo)
- si parte dagli esercizi d'esame già raccolti (una 80ina) più eventuali altri esercizi degli esami successivi
- per lo stesso problema si realizzano implementazioni che seguono stili diversi di realizzazione (procedurale, funzionale, oop, dichiarativo ....)
- per ciascuno stile di realizzazione si costruisce una sequenza di suggerimenti che vanno da un livello molto vago per non spoilerare l'analisi del problema, al livello di dettaglio più preciso
- il tutto viene gestito tramite strutture JSON che rappresentano dichiarativamente i suggerimenti e i loro legami
- Diagnosi degli errori tramite modifica automatica (fuzzying?) del codice di riferimento e confronto dei risultati
- Concolic testing e generazione automatica di casi di test
- con l'uso di sistemi di elaborazione simbolica del codice, è possibile trovare automaticamente dei casi di test che evidenziano errori o il discostamento da una implementazione di riferimento.
- Game based learning (contattate direttamente il prof. Temperini di Ingegneria togliendo NOSPAM marte@diagNOSPAM.uniroma1.it)
- realizzazione di giochi didattici in Unity o HTML5
- Origami e 3D (solo non compilativa)
- simulazione di un foglio di carta in 3D e dei suoi movimenti usando Constraint Programming
Tesi completate
- Correzione automatica di esercizi di Architetture degli elaboratori e generazione automatica di spiegazioni degli errori
- esercizi su cache
- esercizi su pipeline
- esercizi di CPU con CU rotta
- esercizi in cui si modifica la CPU per aggiungere nuove istruzioni o nuovi componenti hardware (FW in fase MEM o altro) (disponibile)
- costruzione di plugin per il simulatore MARS per "rompere" la CPU (disponibile)
- Visualizzazione del codice e della sua esecuzione
- Collaborazione per la realizzazione della mostra del codice http://codexpo.org
- realizzando visualizzazioni multimediali innovative della esecuzione del codice
- realizzando visualizzazioni fisiche del codice (p.es. un mobile che mostra la ricorsione)
- Generazione di reti di studenti virtuali per apprendere un modello di rete bayesiana del peer-assessment (completata)
- Con un collega stiamo sviluppando un generatore di peer-assessment, dai comportamenti virtuali degli studenti simulati possiamo apprendere i parametri di una rete bayesiana che modella gli studenti
- la tesi deve:
- migrare a Python3 + la più recente versione di Bayesnet il mio codice Openanswer di modellazione bayesiana della classe
- generare migliaia di classi virtuali con parametri e comportamenti diversi
- apprendere i parametri della rete bayesiana dai dati generati
- applicare il modello ottenuto ad altri dati generati per calcolare la precision e recall del modello
- Strumenti di supporto alla dislessia
- è stata svolta una tesi in cui si visualizzano (un player) degli esercizi di traduzione di Latino (e in futuro altri linguaggi) con particolari accorgimenti per aiutare i ragazzi dislessici. La visualizzazione dei diversi tipi di esercizi si basa su una struttura dati che contiene tutte le meta-informazioni relative all'esercizio, ovvero, casi, generi, declinazioni, coniugazioni, significati numero eccetera.
- Altre possibili nuove tesi su questo filone potrebbero essere dedicate a:
- (completata) realizzare esercizi di Latino più avanzati e con nuove visualizzazioni
- (completata) realizzazione di un editor di esercizi che permette di costruire facilmente la struttura dati necessaria al Player.
- (completata) realizzare un server per permettere al docente di far svolgere alla classe esercizi con livello di difficoltà/aiuto personalizzato per ciascuno studente
- generalizzare il player per un altro linguaggio (greco, inglese, francese)
- Simulazione di Origami: tesi di rassegna delle pubblicazioni e dei sistemi di simulazione che potrebbero essere usati per la simulazione di un foglio di carta piegato, e quindi per la piegatura "virtuale" di origami (ad esempio usando il simulatore fisico ODE)
- Robotica
- Robotica con Lego Mindstorms EV3
- navigazione landmark-based in ambiente semplificato (foglietti colorati incollati per terra) ed in ambiente reale con fotografie omnivision
- navigazione e mapping con telecamera (vSLAM)
- costruzione e movimento di un braccio robotico con manipolazione di oggetti semplici e loro riconoscimento con telecamera
- usando la libreria OpenCV per riconoscere gli oggetti e realizzando un planner del movimento
- la gestione della cinematica inversa può essere affrontata usando le mappe autoorganizzanti di Kohonen
- Strumenti di supporto alla dislessia
- riconoscimento automatico degli errori di lettura tramite speech recognition su testi fissi
- Realizzazione di una applicazione di aiuto alla trascrizione di manoscritti
- in collaborazione con l'università di Friburgo
- la scansione del manoscritto viene visualizzata
- usando la libreria OpenCV o altre librerie di riconoscimento di immagini vengono cercati pezzi di immagini simili (le lettere)
- con il supporto di un vocabolario vengono proposte possibili interpretazioni delle parole presenti
- il trascrittore supervisiona le proposte e aiuta il sistema segnalandogli lettere e parole che ha riconosciuto e che possono essere usate per far apprendere al sistema nuovi simboli da cercare e riconoscere
- Musica
- Realizzazione di una app Android che riconosce le note suonate da un musicista e reagisce in modo divertente (assegnata)
- obiettivo: rendere divertente lo studio di esercizi musicali
- Dislessia
- raccolta dati e loro analisi per la definizione di un indice di leggibilità specifico per i dislessici (italiani) (assegnata)
- in collaborazione con la prof. Roberta Penge
- Peer assessment
- modellazione bayesiana della correzione tra pari (assegnata)
- basandosi sulla libreria SMILE che è possibile programmare in Python
- Supporto alla didattica
- analisi Bayesiana della correzione cooperativa di domande a risposta aperta e supporto alla correzione
- Realizzazione di un sistema per questionari a risposta aperta
- Generazione automatica di esercizi di Programmazione
- Robotica
- (Evorobot è un programma di Stefano Nolfi per l'evoluzione di robot intelligenti)
- Simulatore di NXT estensione di un semplice simulatore per
- renderlo più preciso/veloce
- permettere il controllo di robot reali
- (forse) visualizzazione 3D e/o simulazione corretta della fisica usando ODF
-
- Evoluzione della capacità di colpire un bersaglio lanciando proiettili di peso variabile (assegnata)
- usando una libreria per la simulazione di fisica (ODE o altro) ed una libreria per la simulazione di reti neurali ed eventualmente una libreria per gestire algoritmi genetici
- obiettivo far evolvere la definizione della rete neurale di controllo (inizialmente i soli pesi) di un braccio simulato che lancia pesi diversi verso un bersaglio, premiando gli esemplari che colpiscono più vicino al bersaglio. Tra gli input della rete non è presente il peso del proiettile ma solo variabili propriocettive (p.es. posizione e velocità del braccio o forza impiegata) e posizione del bersaglio (inizialmente in 2D, poi in 3D)
- estensione: colpire un oggetto in movimento
- drPython (Qualità e leggibilità del codice Python) (completata)
- Per il corso di Fondamenti di Programmazione vorrei cercare di costruire un analizzatore della qualità del codice Python, raccogliendo tutta una serie di feature analizzando il codice:
- uso di notazione funzionale (map, lambda functions)
- uso di argomenti con valori di default mutabili
- annotazione di tipi e correttezza statica del programma
- intricatezza del codice
- uso di identificatori facili da capire sia per le variabili che per le funzioni
- uso di ricorsione
- uso di eccezioni
- docstring per funzioni/metodi e file
- commenti nel codice
- corrispondenza tra una descrizione testuale dell'algoritmo e: 1) le specifiche dell'esercizio 2) l'implementazione
- .... e molte altre La tesi deve per prima cosa individuare quali librerie già permettono di estrarre le feature e poi implementare quello che manca. Una volta estratte le feature vorrei analizzare il corpus di esercizi realizzati in questi anni dagli studenti e imparare quali programmi sono più leggibili e quindi quali feature sono più importanti
- Altro argomento: sito web per la libreria drPython con log delle informazioni ricavate (completata)
- Daniele Pensiero: Informatizzazione della raccolta dati per la definizione di un indice di leggibilità specifico per i dislessici (italiani)* (voto 110 e lode)
- Stefano Ciavarella: Trasformazione e layout di testi per la fruizione facilitata per persone affette da Dislessia
- Fabio Ticconi: Realizzazione ed evoluzione di un sistema di Visione Attiva
- Matteo Pallocca: Evoluzione di formiche su Evorobot
- Enzo Simone: Parallelizzazione di Evorobot su GPU
- Marco Cortina: Parallelizzazione di Evorobot su BOINC
- Leonardo Parisi: Realizzazione di un sistema a 3DOF per il controllo e la produzione di filmati time-lapse
- Yuri Campilii: Soluzione di puzzle logici (ad esempio il Kakuro) con GNU-Prolog e il sistema di puzzles di Simon Tatham (triennale - voto 102)
- Giuseppe Morlino: Esperimenti di Robotica Evoluzionistica (v.o. - voto 110 e lode)
- Emanuele Cimò: Realizzazione di un robot equilibrista controllato da Wiimote (triennale - voto 105)
- Giovanni Colombi: Esperimenti di Robotica Evoluzionistica con omnicam e e-puck (triennale - voto 106)
- Elio Chiapperini: Esperimenti di Robotica Evoluzionistica con comunicazione IR e e-puck (triennale - voto 101)
- Alessandro Leopardi: Realizzazione di interfaccia hardware tra telecamera e Lego Mindstorm NXT (v.o.)
- Maurizio Mariani: Estensione di sistema per la costruzione di corsi personalizzati per permettere la specifica dei prerequisiti e postrequisiti delle componenti didattiche sotto forma di Learning Objectives (triennale - voto 107)
- Vito Modena: Ottimizzazione del sistema e-learning ADA (applicazione php/mysql) (triennale - voto 110)
- Valentina Buffone: "Simulatore di NXT" estensione di un semplice simulatore per il NXT (triennale - voto 102)
- Francesco Fontana: Realizzazione di librerie Java ME per interazione con telecamera bluetooth e Lego Mindstorm NXT (triennale)
- Simone Marinelli: "Sistema di Analisi della leggibilità del software in C e Java" (triennale - voto 106)
- Massimo Pezzulli: "Esperienze di robotica behaviourale, gerarchica e ibrida" (v.o. - voto 104)
- Giacomo Piperno: implementazione di un Lego Segway con Lego Mindstorms
(triennale - voto 110 e lode)
- Marzia Mastrogiacomo: "Trasformazione Sintattica del Codice: Ottimizzazione del Content-manager Twiki" (v.o. - voto 106)
- Stefano Malagigi: Wiki Radio: una streaming radio che legge le notizie dal web e genera la voce con Festival (triennale - voto 110 e lode)
- Pietro Longo: Correzione automatica di esercizi di programmazione (v.o. - voto 110 e lode)
- Albino Aiello: Correzione automatica di esercizi di Architetture 1 (triennale - voto 101)
- Maurizio Di Pietro: Simulazione di Origami in Java 3D (triennale)
- Luca Giuliani: Un editor di esercizi per didattica a distanza (v.o.)
Il software sviluppato in alcune delle tesi è
disponibile
.