Courses » Class » LMC0910 » LMC0910 Projects Page

Progetti

Note:

Si ricordano 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, e può essere svolta in un qualunque periodo dell'anno, concordato col docente con 2-3 settimane di anticipo)
  • 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, questo deve essere terminato nel giro di 30-40 giorni circa (ossia deve essere eseguito almeno a half-time). Eventuali proroghe dovranno essere contrattate col docente.
  • Qui sotto 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. Nel caso in cui un progetto sia a carattere pratico piuttosto che scientifico (ossia sia relativo allo sviluppo di un software), si ricorda che sarà necessario portare tale software a completamento, in modo che sia ad esempio pubblicabile su SourceForge.
  • Per qualunque delucidazione o maggiori informazioni non si esiti a chiedere.
  • Questa lista verrà estesa via via durante lo svolgimento del corso, o durante l'anno accademico.

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 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 (incapsulato in un JAR o JNLP per facilitarne il deployment), documento di installazione/uso README.txt, codice sorgente, manuale d'uso, documentazione javadoc della libreria
  • Per l'esame ci si deve preparare una presentazione di 15 minuti a cui seguirà una discussione (è 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)

Proposte di Progetto

Questa lista è fortemente dinamica. Progetti vengono tolti quando assegnati, e aggiunti quando concepiti. Al momento attuale mancano ovviamente indicazioni su progetti relativi alla parte finale del corso.

  • 2p-ide - Assigned to DiGiacomo: Consolidate current tuprolog IDE, and develop new features related to debugging and checking the correctness of a theory
  • 2p-p@j - Assigned to Zoffoli: Design a suitable inclusion of P@J into tuProlog release, possibly also re-designing current alice.tuprolog APIs
  • 2p-libs: (this is actually a project template) porting existing libraries of other Prologs (SWI, GNU, SICSTUS) into tuProlog; generally, even libraries for Java couldbe used
  • semantics-lib - (no longer assigned, it is available!): a notable example of lib for tuprolog is based on encapsulating a reasoner for description logic (many exist in the Web), to be used by Prolog, possibly in the form of a semantic unification mechanism
  • advanced-dcg: creating a new DCG library, with advanced features such as EBNF support, AST flexible generation, LOOKAHEAD, tokenization
  • pj-tokens: develop a Java-Prolog solution for fast and flexible tokenization in Prolog, parhaps using JavaCC of Jlex
  • 2p-dcgxml - Assigned to Bruschi: in the spirit of DCGs, develop a library for parsing XML documents that works using a grammar-based approach, featuring automatic Tree generation, and possibly re-assessing an XML document after modifications
  • 2p-metacut: Design a Prolog metainterpreter that also supports the cut predicate
  • imp-opsem - Assigned to Gramellini and Magnani: using the operational semantics meta-interpreter, develop and implement an interpreter for a complete imperative language
  • fj-opsem: using the operational semantics meta-interpreter, develop and implement an interpreter for featherweight java
  • javac-dcg - Assigned to Dusi, Amaducci and Garattoni: building a declarative parser for Java Compiler, using Prolog
  • speed-2p: profile the performance of tuProlog engine, and evaluate improvements
  • 2p-maude: Prolog and Maude can interact with each other, e.g. by sockets; this project should develop flexible libraries for both sides of the integration
  • fast-match: Study and possibly develop faster matching mechanisms for Prolog, considering e.g. the red-black tree implementation of Maude
  • petri-maude: Build in Maude an engine and property checker for some advanced Petri net model (e.g. colored Nets)
  • rt-maude: Analyse the RealTime Maude system, and experiment on its use to model and check Stochastic Petri Nets
  • pmaude - Assigned to Grandi: Analyse the Probabilistic Maude system (PMaude), and experiment on its use to model and check Stochastic Petri Nets
  • meta-maude: 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 analyse this feature and creates toy examples.
  • biosim - Assigned to Moretti: Consolidate an existing simulator for biochemical networks using a Prolog interpreter for chemical laws and a C++ engine implementing Gillespie algorithm
  • alg-net: Realise in Prolog algorithms for the creation and growth of topological networks, to be used for simulation of morphogenesis processes
  • art-chem: Using a chemical simulator, and starting from the Oregonator chemical system, design patterns of artificial chemical systems with usefulness for various problems in computer science
  • prism-stopetri - Assigned to Domeniconi and Fabbri : Build a Java/Prolog tool for specifying stochastic Petri Nets, and for verification/simulation through translation in PRISM.
  • prism-net - Assigned to Maggiulli and Vichi : Define an extension of PRISM in which a network of modules can be defined, with goal of modelling and simulating self-organisation of spatial systems: this is to be supported by a translation to standard PRISM.
  • prism-dynanet : Use PRISM to simulate and verify properties of dynamic topological networks.
Note: some projects based on Sara Montagna's and Matteo Casadei's work will be added before Christmas vacations