LMC0910 Projects Page
1 Progetti
1.1 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.
1.1 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)
1.1 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