Ricerca
Mi interesso di
- strumenti per la didattica collaborativa e LMS adattivi via Web
- modellazione del peer-assessment con reti Bayesiane
- algoritmi su grafi
- algoritmi paralleli
- Java, Prolog, Smalltalk, Linux
- Origami
- Constraint Programming
- Robotica
Sono responsabile per l'assegnamento del part-time per i corsi di laurea in Informatica e Tecnologie Informatiche
Didattica
Quest'anno insegno
- nel primo semestre
- nel secondo semestre
Mi trovate
- Orario di ricevimento: a lezione oppure in ufficio il lunedì o mercoledì dalle 10 alle 13 su Zoom
oppure in ufficio (previo appuntamento/email)
- Ufficio: nuovo ufficio, stanza E104, primo piano della palazzina E, viale regina Margherita 295
- Email: sterbini@diNOSPAM.uniroma1.it (togliete NOSPAM !!!)
Progetti Europei
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)
- Plugin python per un sistema RAG (grinning-cat) per la didattica
- Generazione e correzione di esercizi STEM Vogliamo generare il testo di esercizi di tipo STEM formati da più passaggi, in modo che uno strumento AI simile a ChatGPT possa guidare uno studente nello svolgimento e/o correggere errori. L’idea è che il docente carica un file che contiene le specifiche per generare il testo dell’esercizio e che il sistema, da questa struttura dati, generi a caso i parametri di un nuovo esercizio ogni volta. L’esercizio può contenere testo descrittivo, formule simboliche e suggerimenti per lo svolgimento. Le formule possono indicare come generare i parametri casuali, oppure come calcolare un passaggio dello svolgimento. Per eseguire le formule in modo da ottenerne versioni calcolate possiamo usare la libreria sympy Il sistema AI ha quindi completa conoscenza di tutti i passaggi che lo studente dovrebbe svolgere per l’esercizio, e può
- guidare lo studente dando suggerimenti ma senza dare le soluzioni
- controllare se un passaggio è stato svolto bene
- se necessario, ricalcolare i passaggi successivi a partire dai dati calcolati dallo studente, nel caso in cui ci sia stata una svista in un passaggio che si è propagata nei passaggi seguenti
- “capire” quanto lo studente ne sa di quell’argomento e degli argomenti che sono usati in ciascun passaggio
- Riscrittura di una risposta di un chatbot in modo leggibile per studenti con DSA L'idea è prendere la risposta di un chatbot e farla riscrivere al chatbot stesso in modo più facile da leggere, dandogli tutte le indicazioni necessarie per saper come fare
- Estrazione automatica del glossario dei termini usati nel materiale didattico Vogliamo permettere al docente di inserire il proprio materiale didattico all'interno di un chatbot, e di ottenere automaticamente il glossario dei termini usati, che poi lui potrà correggere/ampliare
- 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 .
Sostengo
Sostengo alcune organizzazioni
Links
Se volete imparare a programmare come si deve cominciate da
Libri che mi sono piaciuti troppo
- Little Brother
di Cory Doctorow (ma anche gli altri suoi libri)
- La serie di Discworld di Terry Pratchett
- Guida galattica per autostoppisti di Douglas N. Adams
- Il Signore degli Anelli di J. R. Tolkien
- The Bastard Operator From Hell
di Simon Travaglia
- Tanta fantascienza
Geek Code
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/S d- s++:+ a++ C++$>++++ UL++++$ P++ L++$ !E--- !W++ N o K--? !w? !O !M V PS++ PE-- Y++ !PGP- !t !5 !X R tv--? b+ DI !D !G? e++++ h---- r+++ y+++
------END GEEK CODE BLOCK------
-- AndreaSterbini - 10 Oct 2000
|
|