Skip to topic | Skip to bottom
Home
Epita
Epita.ProjetsLibresr1.66 - 02 Mar 2007 - 13:41 - Main.akimtopic end

Start of topic | Skip to actions
This page holds several `projets libres' submitted by members of the LRDE. Some of them are about Free Software Project; in this case, you must read WorkingOnFSFProjects.

The ProjetsLibres2002 and ProjetsLibres2003 can still be read.

Gestion de la bibliothèque de l'école

Le but de ce projet est de concevoir une base de données pour la gestion de la bibliothèque de l'école. Plusieurs outils seront développés pour faciliter l'exploitation des informations contenues dans cette base :

  • Administration de la bibliothèque.
  • Gestion des emprunts.
  • Recherche et réservation de livres.
  • Consultation des comptes utilisateurs.
  • ...

Ces outils doivent faciliter l'accès à ces informations à travers le web. Dans le cadre de ce projet, on s'appuiera sur un des produits libres existant.

-- RedaDehak

Segmentation semi-automatique du signal de parole

L'objectif de ce projet est de développer un logiciel libre pour l'aide à l'analyse et la segmentation du signal de parole. Il existe actuellement plusieurs produits développés sous matlab ou bien sous license payante. On préférera un logiciel compatible linux et windows en même temps.

http://www.babeltech.com/Products.php?s=106&m=75

-- RedaDehak

Image processing

Olena: interoperability with GIMP

To be done: be able to call from The GIMP some filters provided by Olena

-- ThierryGeraud

Automake: LaTeX Support and tests framework improvement

GNU Automake is a lovely tool to abstract away from "how to build" (the make level) to "what to build". Its benefits for programs, libraries and so forth are well known. It is also quite pleasant for Texinfo documents, but with no convincing support for included images etc.

This projects consists in implementing some LaTeX support, with included sub documents, images and so forth. It will require a full redesign of the approach taken for Texinfo. Actually, you are expected to reimplement the Texinfo support too: Texinfo and LaTeX are extremely similar.

The testing framework provided by Automake should also be improved to support parallel tests, colors, automatic logging etc.

High Perl skills are required, since Automake is written in Perl. Support will be provided by AkimDemaille, and hopefully by Automake's de facto maintainer, AlexandreDuretLutz. The documentation and test suite are to be written too, of course.

Read WorkingOnFSFProjects. -- Akim Demaille

GNU M4

Be sure to read WorkingOnFSFProjects.

Compilation for GNU M4

M4 is a very powerful macro processor. It is used in several big projects such as GNU Autoconf or GNU Bison to perform text expansions. But industrial uses of M4 reveal serious efficiency problems: each time the code is to be executed, it is re-scanned, and re-parsed. This is often needed to support code like:

define([foo], [bar])
define([bar], [baz])
define([baz], [qux])
foo

which produces qux.

The "problem" is that the cycle foo, bar, baz, qux is repeted for each run, and in the end it can be prohibitive. The idea is to implement a sort of compiler for M4 maros that would understand once for all that from foo we can immediately have qux, saving a few evaluations.

Of course, the project must take into account the passing of arguments:

define([foo], [bar($@)])
define([bar], [baz($@)])
define([baz], [qux($@)])
foo(51)

it should be "understood" that foo(51) expands into qux(51), and foo(1, 2, 3) into qux(1, 2, 3) without having to expand the intermediary bar and baz calls. Finally, it should work on less obvious cases:

define([foo], [bar($2, $1)])
define([bar], [baz($2, $1)])
define([baz], [$1 $2])
foo(51)

or even

define([foo], [bar($2, $1)])
define([bar], [baz($2, $1)])
define([baz], [$1 $2])
foo(51, 42)

A suggestion is to introduce a new builtin, bind (as in PostScript) that means "now you can inline calls":

define([foo], [bar($2, $1)])
define([bar], [baz($2, $1)])
define([baz], [$1 $2])
bind([foo])
foo(%1, 42)

-- Akim Demaille

GNU M4: Improvements & Speed ups

GNU M4 is a fast implementation of the M4 language, but more features are desirable to implement demanding projects. There exist an "M5" projects that includes such features, for instance "hard quotes", name spaces etc. In addition, M4 is incredibly inefficient with some programming styles where a more AST like handling could provide dramatic speed up.

This projects consists in studying CVS GNU M4, proposing a series of improvements, and implementing them.

-- Akim Demaille

Comparaison between EDA and genetic algorithms

Estimation of distribution algorithms is a recent research orientation for evolutionary computation that are applied to complex optimization problems. Several algorithms and approaches have already been introduced by different authors in the literature. The goal of this project is to propose a C++ implementation of EDA algorithms for EO library (http://www.eeaax.polytechnique.fr/EO/). A comparaison between EDA and genetic algorithms must be done.

The team should have a good level in mathematics and probability

keywords : EDA, Bayesian networks, evolutionary algorithms.

-- RedaDehak & GeoffroyFouquier

Bison

Be sure to read WorkingOnFSFProjects.

Bison: Burke-Fisher Error Correction

YACC error recovery scheme is quite poor: the author of the grammar has to clutter her grammar with special annotation specifying how to recover from the error. As emphasized, this is not even correction: most of the time, the intent is merely to recover from the error, i.e., continuing as far as we can, while completely ignoring the contents of the erroneous text.

The Burke-Fisher Error Correction (or repair) algorithm tries to address these issues by trying, by itself, insertion, deletion and replacement of various tokens around the error spot. In addition, the user is provide with new directives to specify semantic values of tokens to create.

This scheme is quite efficient, especially because :

  • It is nice for the grammar author
  • It is nice for the users
The SML YACC provides this service.

The subject consists in implementing Burke-Fisher in Bison, for C output only as a first stage. The main source of documentation is Andrew Appel's ``Modern Compiler Implementation''.

Writing test cases in the current testing framework is a mandatory part of the project.

-- Akim Demaille

Bison: Modularity

Yacc/Bison grammars have well known bad engineering properties, one of which being the lack of modularity: a Yacc/Bison grammar is composed of a single file, which can be huge.

This projects consists in implementing module support in the Bison front end. This will therefore benefit to all the Bison back ends (regular LALR(1), GLR, C++ Parsers...).

The task is more than merely implementing a simple %include: it is a form of %import which is desired, i.e., something that provides interfaces and encapsulation between modules. For instance, two modules might both define a symbol list, but may be both imported into another one without conflict as long as it doesn't import both list symbols.

Modularity should also be introduced for associativity/precedence directives.

This project should be very interesting, especially to people who enjoyed a project such as Tiger.

-- Akim Demaille

Bison: General Improvements

There are many many things that can be done in Bison:

  • New Output Languages (Java, Scheme etc.)
  • Debugging Grammars (helping the users to understand the conflicts). This topic requires a very deep understanding of Bison internals. But sure to be ready to read mathematical material.
  • More graphics (parse tree etc.)
  • Including the backtracking parser written by another Epita student.

And many more.

-- Akim Demaille

Bison: Rich report formats

Bison and Yacc produce a report to help the user understand the grammar and the parser. In addition to the plain text report, Bison provides an unsatisfying visual display of the automaton. Both should be replaced by an XML output, and several tools to produce different rendering. In particular, an HTML output would be most useful, with many links to move from conflicts to states to rules to symbols etc.

What is needed:

  • Good C programmers
  • Know about XML and writing XSD or other XML definition formats
  • Be ready to program in XSLT
  • Know about HTML
  • Be ready to use GraphViz?

-- Akim Demaille

Profiler Class in C++

For several reasons, sometimes one would like to have profiling data defined by Tasks rather than functions. That rules out tools such as Gprof, Callgrind etc.

This project aims at the implementation of a complete Profiling/Benchmarking toolkit as a set of C++ classes. If properly implemented, that would make a nice addition to Boost, the world-wide known C++ library.

We already have the Timer class (similar to that of tc), but it has too many shortcomings. The reimplementation should be much more powerful and useful.

-- Akim Demaille
to top


Epita.ProjetsLibres moved from Projects.ProjetsLibres on 28 Aug 2003 - 16:15 by Main.fouqui_g - put it back
You are here: Epita > TWikiGroups? > EngineeringGroup > ProjetsLibres

to top

Copyright © 1999-2010 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback