Laboratori & Tesi

In questa pagina descrivo alcuni argomenti di mio interesse, su cui è possibile svolgere dei laboratori avanzati o tesi di laurea (triennale o magistrale). Se qualche argomento è di vostro interesse, possiamo fissare un appuntamento per discutere un progetto preciso (la cui disponibilità varia nel tempo).

Regole generali:

  1. I progetti vengono assegnati su base “first-come first-served, con time-out”: quando un progetto viene assegnato, si fissa anche una data di consegna (tipicamente dai 2 ai 4 mesi, in proporzione alla difficoltà del progetto); se tale data non è rispettata, l’assegnazione decade e il progetto può essere assegnato ad altri studenti.
  2. In generale, tutti i progetti di laboratorio avanzato possono “evolvere” in una tesi di laurea (triennale o magistrale). Tuttavia l’impegno necessario (e di conseguenza il valore in termini di punteggio) di tali tesi è assai variabile. Pertanto il tipo di progetto che viene assegnato dipende anche dall’eventuale evoluzione dello stesso in una tesi di laurea.
  3. I laboratori avanzati comprendono sempre una rilevante parte di programmazione, anche se non necessariamente in linguaggi tradizionali. Questo vincolo non vale per le tesi di laurea, che, in assenza di parte pratica, possono essere “puramente teoriche” o “compilative”.
  4. Tutti i progetti devono essere corredati da una relazione scritta.
  5. In generale, il codice sviluppato viene reso disponibile sotto una licenza open source su questo sito (vedi elenco a lato), per permettere eventuali sviluppi, miglioramenti ed applicazioni ad altre persone interessate.

Potete farvi un’idea degli argomenti anche dall’elenco dei progetti, e dall’elenco delle ultime tesi di cui sono stato relatore, che è reperibile online, impostando “miculan” nel campo “relatore”.

Argomenti di sicurezza informatica

  • Protocolli di chat sicura: si propone di studiare un protocollo di comunicazione sicura (come quelli di Telegram, WhatsApp, ecc), allo scopo di verificarne la correttezza (o trovare delle falle), utilizzando strumenti di verifica automatica (come ProVerif e CryptoVerif).
  • Protocolli di autenticazione: si propone di studiare protocolli di autenticazione centralizzata e SSO, allo scopo di verificarne la correttezza (o trovare delle falle). In particolare, si vuole studiare il protocollo Telegram Passport, recentemente introdotto.

Argomenti di sistemi distribuiti

  • Modelli graph-based: un sistema mobile-concorrente può essere descritto come una particolare struttura grafica dove vengono rappresentate contemporaneamente la struttura della rete e le connessioni tra i vari nodi. Si propone di applicare questi modelli a grafo per modellare classi di sistemi distribuiti (ad esempio, i sistemi a container)
  • Implementazione di sistemi in F*: F* è un linguaggio di programmazione moderno progettato per sviluppare programmi corretti by design, grazie ad un sistema di tipi molto espressivo. Si propone l’utilizzo di tale linguaggio per la specifica e lo sviluppo di programmi distribuiti (da decidere sul momento)
  • Tool di simulazione di reti per la modellazione di reti locali e la valutazione dei loro parametri quantitativi. Di grande interesse applicativo.

Argomenti di algoritmi

  • bisimulazioni quantitative: implementazione di algoritmi per la decidibilità di bisimulazioni quantitative, ossia di equivalenze comportamentali tra sistemi che esibiscono aspetti quantitativi come tempi di esecuzione, ritardi, probabilità, ecc.