spacer
spacer
Home | Search | Site map | --> Help  
spacer
spacer
spacer
DISI -> People -> Faculty -> Giovanni Lagorio

Proposte di Prove Finali e Tesi del gruppo Design and foundations of object-oriented and component-based languages

(ultimo aggiornamento: Giugno 2010)

Nota importante: quelle che seguono sono solo proposte indicative (e, ahinoi, raramente aggiornate) ... se siete interessati a una prova finale/tesi su queste tematiche, contattateci.

  • Analisi statica basata su sistemi di tipo coinduttivi
    La nozione di sistema di tipo coinduttivo [ALZ09, AL09] uno dei pi recenti e interessanti contributi del nostro gruppo di ricerca nell'ambito dei linguaggi orientati agli oggetti e dei sistemi di tipo per l'analisi statica dei programmi. Si tratta di una nuova metodologia per la specifica di sistemi di tipo basata su codifica dei programmi in formule di Horn interpretate rispetto al modello di Herbrand co-induttivo. Tale codifiche permettono la specifica di sistemi di tipo molto espressivi in grado non solo di garantire l'assenza dei pi classici errori di tipo, ma anche di analizzare altre propriet interessanti come l'occupazione dello spazio di memoria, l'assenza di side-effect, la validit di invarianti, ecc. Essendo un argomento di ricerca nuovo e interessante, ci sono svariati aspetti, che spaziano dalle problematiche pi teoriche (solo tesi) a quelle pi implementative (sia prove finali, sia tesi) che vorremmo approfondire. Quelli che seguono sono possibili temi oggetto di un lavoro di tesi/prova finale con uno dei seguenti relatori: Ancona D., Lagorio, Zucca
    • Miglioramento del meta-interprete Prolog per gli aspetti di efficenza, completezza e terminazione (tesi teorica/implementativa)
    • Estensione del meta-interprete Prolog con la nozione di subtyping (tesi teorica/implementativa)
    • Definizione di un meta-interprete Prolog basato su ricerca breadth-first (tesi teorica/implementativa)
    • Risultati di decidibilit (tesi teorica/implementativa)
    • Tecniche di prove di soundness basate su semantica co-induttiva (tesi teorica)
    • Risultati su propriet di principalit (tesi teorica)
    • Studio di codifiche estese a caratteristiche non ancora trattate: aggiunta di costrutti, eccezioni, side-effect, ecc. (tesi teorica/implementativa)
    • Studio di codifiche per provare propriet interessanti: occupazione dello spazio di memoria, assenza di side-effect, ecc. (tesi teorica/implementativa)
    • Estensione del prototipo: realizzazione di una GUI, interfacciamento Java/Prolog (prova finale implementativa)
    • Estensione del prototipo: trattamento degli errori (prova finale implementativa)

  • Porting semi-automatico di programmi Java tramite matching di ontologie
    L'obiettivo di questa ricerca l'integrazione di analisi di tipo con algoritmi per matching di ontologie, per permettere l'adattamento semi-automatico di programmi Java, al fine di risolvere inconsistenze dovute a modifiche di librerie. Tale adattamento ottenuto attraverso una traduzione [AM08], dopo un'analisi sia di tipo sia semantica delle due versioni, quella vecchia e quella nuova, della libreria. L'analisi di tipo basata sulla nozione di matching. L'analisi semantica consiste nell'estrazione di due ontologie e nell'utilizzo di un algoritmo di matching per trovare un allineamento tra esse. I possibili relatori sono Ancona D., Mascardi. Argomenti proposti:
    • Implementazione di un prototipo per l'estrazione di ontologie da un programma Java (prova finale o tesi, dipende dal sottoinsieme di Java considerato)
    • Validazione e implementazione dell'algoritmo di estrazione di matching di tipo tra due librerie Java (tesi)
    • Traduzione di una libreria Java guidata da un matching funzionale di tipo (prova finale)
    • Implementazione del raffinamento del matching di tipo parametrica rispetto all'algoritmo di matching di ontologie (tesi)
    • Realizzazione dell'applicazione completa (assemblando le componenti sviluppate ai punti precedenti) e sperimentazione con vari algoritmi di matching tra ontologie (tesi)

  • Sviluppo di (piccoli) interpreti o compilatori
    La nostra attivit di ricerca consiste spesso nel design di calcoli o linguaggi giocattolo, allo scopo di studiare "in piccolo" il comportamento di costrutti linguistici e/o la possibilit di estendere linguaggi reali (tipicamente Java). Siamo interessati a sviluppare dei prototipi per tali calcoli/linguaggi giocattolo, o sotto forma di interpreti (come visto nel laboratorio del corso di LP), o di traduttori che producano codice Java standard, o di compilatori che producano direttamente bytecode. In particolare in questo momento siamo interessati ai seguenti prototipi:
    • Interprete o compilatore per FJig [prova finale o tesi]
      FJig il pi recente linguaggio giocattolo che abbiamo sviluppato. Si tratta un calcolo piccolo ma potente che permette di codificare vari meccanismi per la composizione del software in linguaggi class-based (per esempio, ereditariet, classi mixin, trait, ecc.).
      In una precedente prova finale stato sviluppato un interprete del livello core di FJig. Nuove prove finali potrebbero sviluppare un traduttore da linguaggio ad alto livello a core o un traduttore da FJig a Java. Possibili relatori: Lagorio e Zucca
    • Linguaggio Fickle [prova finale]
      Un oggetto detto riclassificabile quando possibile cambiare la sua classe di appartenenza (con conseguente modifica del suo stato e del suo comportamento), senza modificarne l'identit. Fickle un semplice linguaggio che fornisce un meccanismo per la riclassificazione degli oggetti in un contesto Java-like. La sua implementazione pu essere realizzata tramite un'opportuna traduzione in Java dei programmi Fickle [AADDZ06]; un prototipo di traduzione stato gi realizzato, ma c' spazio per diversi miglioramenti ed estensioni. In particolare:
      1. Testing del prototipo esistente, con conseguenti correzioni, e stesura di un'opportuna documentazione
      2. Estensione del prototipo esistente per implementare FickleII
      3. Refactoring del prototipo in Java 5.0
      (ognuna di queste attivit corrisponde a una possibile prova finale). Possibili relatori: Ancona D.
    • Interprete per un calcolo di processi che scambiano codice [prova finale o tesi]
      In [FZ07] e [AFZ08] abbiamo definito un semplice calcolo di processi che si scambiano codice in modo "safe", effettuando cio dei controlli a runtime che garantiscono che il codice ricevuto abbia un tipo compatibile con quello atteso. La prova finale (o tesi a seconda dell'approfondimento) consiste nella realizzazione di un prototipo per il calcolo. La gestione dell'aspetto concorrente pu effettuarsi per esempio utilizzando i thread di Java. Possibili relatori: Ancona D., Zucca

  • Sviluppo di un plugin per Eclipse [tesi o prova finale]
    Lo scopo integrare, all'interno del noto IDE, uno dei prototipi gi esistenti per calcoli/linguaggi giocattolo. Questa integrazione pu avvenire a vari livelli: come minimo si tratter di avere la sintassi evidenziata, fino ad avere un supporto completo per il debugging, profiling e refactoring.
    Questa attivit si presta a essere svolta in una tesi, sviluppando un plugin ragionevolmente completo, o suddivisa in una serie di prove finali (ognuna delle quali aggiunger funzionalit).
    Aggiornamento (giugno 2010): forse si potrebbe studiare e usare Xtext
    Possibili relatori: Lagorio

  • Studio di nuovi linguaggi e tecnologie OO e confronto con Java [prova finale]
    Scopo delle seguenti prove finali studiare tecnologie o tool, sviluppare qualche esempio per metterle a confronto e infine riassumerne pregi e difetti.
      Lagorio e Zucca
    • Linguaggio Scala: confronto con Java e altri linguaggi mainstream
      Possibili relatori: Ancona D., Lagorio e Zucca
    • Linguaggio Haskell: confronto con ML e linguaggi mainstream
      Possibili relatori: Ancona D., Lagorio e Zucca
    • Linguaggio F#: confronto con ML e linguaggi mainstream
      Possibili relatori: Ancona D., Lagorio e Zucca
    • Linguaggio Fortress: confronto con Java e altri linguaggi mainstream
      Possibili relatori: Ancona D., Lagorio e Zucca
    • Linguaggio X10: confronto con Java e altri linguaggi mainstream
      Possibili relatori: Ancona D., Lagorio e Zucca

  • Emulazione macchine VM-2, VM-R [prova finale o tesi]
    Siamo interessati allo sviluppo di emulatori per queste macchine e, successivamente, a strumenti di sviluppo (dis/assemblatori, compilatori, ecc.).
    L'attivit di sviluppo potr avvenire come una serie di prove finali o come una tesi (che includer, quindi, non solo l'emulatore ma anche qualche strumento di sviluppo)
    Possibili relatori: Ancona D. e Lagorio
spacer
spacer
  The Department | Research | Education | People | Contacts  
spacer
spacer
gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.