Courses » LMC1112 » Progetti

Progetti

  

Note generali:

 

Seguono i principali aspetti relativi ai progetti da svolgere per l'esame:

  • Il progetto è comunque facoltativo, e può essere rimpiazzato da una prova orale sul programma del corso (la cui preparazione richiede tuttavia un tempo analogo)
  • Il progetto è scelto dallo studente in accordo col docente, può essere eseguito da un gruppo di 1, 2 o 3 persone (dipendentemente dall'impegno richiesto), e deve comportare un impegno temporale di circa 80-90 ore a testa (ogni studente è tenuto a tenere traccia delle ore impiegate per svolgere il progetto)
  • Una volta assegnato il progetto, verrà concordata anche la data di consegna (non più tardi di 2 mesi dall'inizio del progetto). Eventuali proroghe dovranno essere contrattate col docente, e potrebbero comportare un penalizzazione di punteggio.
  • In questa pagina si elencano proposte del docente per i progetti. Si rammenta che altre possibilità possono essere relative a progetti suggeriti da altri docenti, o possono anche venire dagli studenti stessi. 
  • Questa lista è dinamica: verrà estesa via via nel tempo, anche dopo la fine del corso.
  • Per qualunque delucidazione o maggiori informazioni su un progetto non si esiti a chiedere: l'indicazione fornita sotto è troppo sintetica per comprendere appieno l'attività, ha il solo scopo di indirizzare la curiosità dello studente.

Consegna del Progetto:

 

  • Il progetto si consegna dopo aver svolto con esito positivo il compito. La consegna è in anticipo (solitamente per e-mail) al docente, che dopo aver fatto alcune verifiche di completezza/adeguatezza (e richiedendo qualche modifica) fissa una data per l'esame di comune accordo (solitamente nel giro di 1-2 settimane)
  • La documentazione del progetto deve essere correlata (ove possibile dipendentemente dalla tipologia di progetto) di: relazione in formato PDF completa di bibliografia, software prodotto (ad esempio incapsulato in un JAR per facilitarne il deployment), documento di installazione in readme.txt, codice sorgente, manuale d'uso, documentazione della libreria (se di libreria si tratta).
  • Per l'esame ci si deve preparare una presentazione di 15 minuti a cui seguiranno domande (è possibile ma non necessario prepararsi delle slides). Si noti che nel caso di gruppi l'esame è svolto singolarmente, e ogni studente sarà responsabile della parte del progetto da lui stesso dichiarata (anche eventualmente/parzialmente sovrapposta a quella degli altri studenti).
  • Tutto il materiale di cui sopra andrà inserito in una apposita pagina, seguendo lo schema degli esempi di progetto qui sotto riportati.

Alcuni progetti di esempio

 

Proposte di Progetto

 

Un nuovo set di progetti è disponibile (in costruzione), principalmente rivolto allo studio e sperimentazione di strumenti e tecniche volte alla predicibilità e al controllo del funzionamento di sistemi ICT complessi (altri sono disponibili, si senta col docente a ricevimento):

  • *groove - assigned to Cilotti*: Il tool Groove è uno strumento di model-checking per "graph transformation systems" e può essere utilizzato per modellare algoritmi su reti. Scopo del progetto è quello di sperimentare le sue funzionalità e di applicare a casi di studio (anche forniti dal docente) nell'ambito ICT.
  • *Augur -- assigned to Cicora*: Il tool Augur è uno strumento di model-checking per "graph transformation systems" e può essere utilizzato per modellare algoritmi su reti mobili e a larghissima scala. Scopo del progetto è quello di sperimentare le sue funzionalità e di applicare a casi di studio (anche forniti dal docente) nell'ambito ICT.
  • *Spatial Fluid Flow approximation -- assigned to Mella*: Scopo del progetto è sperimentare l'applicabilità di una tecnica di analisi per algoritmi auto-organizzanti, che prevedere la costruzioni automatica di un sistema di "Equazioni differenziali alle derivate parziali" a partire da un transition system. Tali equazioni possono essere analizzate usando poi strumenti standard come matlab.
  • *alchemist-mc*: Alchemist è un simulatore per sistemi chimici scritto in Java nel nostro laboratorio. Il goal del progetto è quello di costruire un componente denominato "Revolver", in grado di pianificare set di simulazioni, dando luogo all'approccio dell'approximate stochastic model-checking.

I progetti precedentemente proposti sono tuttavia ancora validi:

  • *2p-libs*: (this is actually a project template) porting existing libraries of other Prologs (SWI, GNU, SICSTUS) into tuProlog; generally, even libraries for Java could be used
  • *2p-imperative-language*: The various step of a full interpreter (tokenization, parsing, checking and interpretation) can be specified declaratively, using BNF grammars and deductions. This projects will implement in tuProlog suitable meta-interpreters for those specifications, by adding proper (infix/prefix) operators and syntactic sugar.
  • *maude-2p*: Prolog and Maude can interact with each other, e.g. by sockets; this project should develop flexible libraries for both sides of the integration
  • *maude-compmodels*: This project aims at programming in Maude the syntax/semantics of some computational model, possibly adding model-checking abilities. Examples can include: FJ, SAPERE model, advanced petri net models, process algebras.
  • *models-mu*: The mu-calculus is a temporal logic that is shown to be more expressive than CTL, and to also have a reasonably simple to define model-checking algorithm. This project aims at surveying the basic concepts of mu-calculus, and evaluate the possibility of implementing its model-checking in tuProlog or Maude. 

Progetti già assegnati/conclusi

 

  • *alchemist-lang - assigned to Enrico Galassi*: Alchemist is a simulator of chemical-like systems written in Java and maintained in our labs in Cesena. The goal of this project is to add a module to Alchemist by which one can configure a simulation by a proper language, that is translated into Alchemist data structures.
  • *mc-bdd - assigned to Andrea Leone*: Binary Decision Diagrams are an implementation techique for model-checking which can descibe in a very compact way the kripke structure over which model-checking is performed. This projects aims at describing the main concepts of BDDs.
  • *models-pompd - assigned to Francesca Cioffi*: POMDP is a variation of Markov Decision Processes which is found very interesting for modelling multi-agent systems (MAS). This project aims at surveying the basic concepts of MDP, and describing the state of the art of their usage in MAS. 
  • *models-coloredpetri - assigned to Davide Galeotti*: Build an engine for colored Petri Nets, in which coloring is realised in a logic fashion by means of tuProlog integration.
  • *models-algebraicpetri - assigned to Cristiana Casanova*: Study the algebraic Petri Net model, along with the tools available for property verification.
  • *maude-metalevel - assigned to Daniele Bellavista*: Maude is a reflective language, in that it can be used to parse and meta-execute other Maude specifications: this can be used to define slight extensions of Maude language for various purposes. This project analyses this feature and creates toy examples.
  • *2p-meta-interpretation - assigned to Massimo Fornari*: Design a full Prolog metainterpreter, extending vanilla with the abilities of tracking substitutions, tracking resolution tree, supporting control predicates like cut, call, not, and so on.
  • *models-msr-nets - assigned to Alessandro Bulzacchi*: MSR(C) is a tool to model-check infinite state systems, extending Petri Nets ideas. The goal of this project is to verify properties of given algorithms for self-organising networks.