Liste des projets 2006-2007


M2 I2L

Contribution au projet ejabberd (licence GPL2) - Christophe Romain - Process One

Etudiants : Henry Obein et Wang Yu-fei

Encadrant universitaire : ???

Objectifs

  • Participation au développement du module assurant l'implémentation de la JEP-0065 (transferts de fichiers sous jabber).
  • Le module est actuellement disponible en version alpha. Celui doit être amélioré, complété, testé et doit prendre en compte les exigences haute disponibilité et fonctionnement en cluster de ejabberd.

Références

Thèmes abordés

  • protocole XMPP
  • technologies XML
  • programmation fonctionnelle

sshproxy : intégration de modules d'authentification et de base de données - David Guerizec - Wallix

Etudiants : T. Emma et C. Sailly

Encadrant universitaire : ???

Mots-clés

  • SSH, sécurité, proxy, LDAP, radius

Présentation du projet

sshproxy est un serveur de proximité pour contrôler les connexions sécurisées par le protocole SSH2. Son rôle est de faire l'intermédiaire entre un utilisateur client et un serveur SSH sur lequel désire se connecter cet utilisateur sans lui communiquer les mots de passe du serveur. sshproxy permet, par une gestion centralisée des jetons d'authentification des sites de gérer les droits d'accès à ces sites grâce à des règles de contrôle d'accès (ACL : Access Control List) simples, puissantes et extensibles. sshproxy permet la traçabilité des actions menées sur le serveur SSH cible. sshproxy est virtuellement extensible à tout type de base de données, tant pour la partie client, qui peut être connectée à un serveur d'authentification (Radius, SecurID, LDAP), que pour les parties serveurs distants et base de règles ACL. En un point unique il est possible de gérez les accès et les moyens d’accès d'un ensemble de serveurs. sshproxy est développé dans le modèle open-source, dont le point d'entrée est http://www.wallix.org/sshproxy/. Le code source est versionné avec git, et le développement s'effectue presque exclusivement en Python. Les contributions sont acceptées via des patches envoyés par mail à l'auteur ou à la mailing-list.

Les fonctionnalités déjà existantes sont les suivantes:

  • Protocole SSH2 supporté (shell et exécution directe)
  • Scp en download et upload
  • Mots de passe et clés chiffrés dans la base de données
  • Moteur d'ACL puissant et simple à mettre en œuvre
  • Grande granularité du système d'ACL
  • Bases de données clients/ACL/Sites séparées et indépendantes
  • Backends supportés : fichiers et MySQL

Objectif

L'objectif dans les mois à venir est d'étendre et/ou améliorer sshproxy dans les domaines suivants:

  • Implémentation de modules d'authentification LDAP, radius, PAM, SecurID
  • Implémentation du port-forwarding, tunneling
  • Implémentation du sous-protocole sftp
  • Optimisation du parser d'ACL
  • Amélioration du système de logging
  • Finalisation de l'API et du système de plugins

Langages et technologies

  • Python, bash, SQL, LDAP, radius...
  • La connaissance précise du protocole SSH2 n'est pas obligatoire.

Améliorations de l'interface d'analyse de journaux Nulog - Eric Leblond - INL

Etudiants : K. Guerrier et D. Leporcq

Encadrant universitaire : ???

Objectifs

L'interface d'analyse de journaux Nulog permet de consulter et d'analyser les journaux de différents pare-feu (Netfilter et NuFW) après stockage dans une base MySQL.

Le but de ce projet est d'ajouter un système de recherches combinées permettant d'étudier finement des événements stockés dans la base SQL. L'interface s'adresse à des utilisateurs qui peuvent ne pas avoir de connaissances en SQL et par conséquent la construction des recherches doit se faire de la manière la plus intuitive possible. De plus, le développement devra prendre en compte une modification possible des formats du backend de données et une couche d'abstraction de type XML pourra être mise en place.

En extension possible du projet, il est possible d'envisager la génération de graphes à partir des résultats d'une recherche.

Références

Module webmin destiné à générer la configuration de squidGuard - Dominique Vandenbroucke - Capensis

Etudiants : Renaud Navarro et Nicolas Gadoux

Encadrant universitaire : ???

Contexte

Nous utilisons dans le cadre d'une solution que nous appelons filtrensis un module webmin destiné à générer la configuration de squidGuard. SquidGuard étant le redirecteur que nous utilisons au travers de squid dans nos solutions de filtrage.

Ce module est à la base disponible sur : http://www.niemueller.de/webmin/modules/squidguard/

La société iscomp a ensuite repris un peu le travail et a fourni quelques versions : http://iscomp.com/webmin/squidGuard/ Nous avons apporté quelques contributions à ce module qui ont été intégrées dans le tronc. Par contre ce module n'est aujourd'hui plus maintenu depuis 2003 et nos dernières contributions n'ont pas été intégrées dans le tronc.

squidGuard a depuis évolué et propose diverses améliorations qui, biensur, ne sont pas prises en charge dans le module webmin.

Objectifs

Les tâches du projet sont donc multiples :

  • Reprendre la maintenance du module squidGuard pour webmin
  • Corriger les bugs du module actuel (interface floue, génération des listes bancale, etc.)
  • Implémenter les fonctionnalités manquantes du module
  • Lier le module avec des annuaires d'utilisateurs (openLDAP, Active Directory)

Contribution au projet Webfinance (licence GNU GPL) - Cyril Bouthors - ISVTEC

Etudiants : Vincent Soubirou et Jose Vicente Mondéjar

Encadrant universitaire : E. Ramat

Mots-clés

Facturation, contacts client, trésorerie, prévisions.

Présentation du projet

Webfinance est une application web basée sur PHP/MySQL qui permet de gérer des factures, des contacts client, une trésorerie et des prévisions.

Cette application a été initialement développée d'un commun effort des sociétés NBI et ISVTEC et est maintenant publiquement disponible en tant que Logiciel Libre sous license GNU GPL.

Objectifs

L'objectif dans les mois à venir est d'étendre et/ou améliorer Webfinance dans les domaines suivants :

  • Développer un site web de présentation du projet
  • Développer et nourrir une communauté d'utilisateurs et de développeurs autour du projet Logiciel Libre et de son site web dans le but de multiplier les retours d'expérience, rapports de bugs, demandes de fonctionnalités, et modifications, etc.
  • Terminer l'intégration du moteur de traduction Gettext
  • Modifier l'application pour qu'elle supporte plusieurs monnaies
  • Corriger les divers bugs rapportés par les utilisateurs
  • Assurer la compatibilités avec les navigateurs web du marché
  • Intégrer un moteur de recherche
  • Développer un package de l'application pour l'intégrer aux distributions Debian/sid et Debian/Ubuntu GNU/Linux
  • Développer une interface d'export au format CSV
  • Davantages de tâches seront assignées en fonction de la vitesse et du nombre de stagiaires

Langages et technologies

  • PHP
  • MySQL
  • HTML
  • JavaScript
  • CSS

Créer des interfaces en XUL pour iCal - Nicolas Deram - Itaapy

Etudiants : Remi Dartois - Jérémy Ponchel

Encadrant universitaire : ???

Mots-clés

Web 2.0, XUL, Python, itools, Ajax

Contexte

L'un des points critiques dans la réalisation d'applications Web est de savoir combiner : accessibilité, ergonomie, maintenabilité. Pour beaucoup d'applications WEB, notamment dans les administrations publiques, "l'accessibilité" est imposée. Il faut donc être capable de fournir des applications WEB pouvant fonctionner sur un navigateur en mode texte sans javascript. De ce fait, les IHM de itools.cms implémentent de façon stricte les règles du W3C. Les possibilités du XHTML et des CSS sont utilisées au maximum, en évitant autant que possible l'utilisation de JavaScript. Aujourd'hui, un besoin clair du marché est d'être capable de fournir des interfaces plus riches (Ajax et/ou XUL), tout en permettant, si besoin est, un mode dégradé garantissant l'accessibilité (XHTML CSS2). XUL offre l'avantage de proposer un ensemble de widgets de haut niveau testés et déployés depuis plusieurs années via les applications Mozilla (FireFox, Thunderbird, ...). Les extensions de Firefox, écrites en XUL, ont fortement contribué au déploiement de Firefox en temps que plateforme applicative riche.

Présentation du projet

L'intêret de disposer d'interfaces plus riches que le XHTML apparaît particulièrement lors de la réalisation d'interfaces complexes. La réalisation de vues calandaires, avec navigation dans le temps, pour des object de type évenement, est un bon candidat pour tirer bénéfice de XUL. Aujourd'hui, itools.cms offre une IHM web, qui permet la manipulation d'évenements stockés au format iCal. Un objectif de ce projet est d'être capable de réaliser, simplement, des IHM en XUL pour des projets basés sur itools.cms.

Objectifs

Un certain nombre de tâches sont ouvertes sur le gestionnaire des tâches de la communauté ikaaro.org, pour le support de XUL et la réalisation d'une IHM pour les fichiers iCal. L'objectif est de s'insérer dans le développement de la communauté pour contribuer à réaliser des interfaces XUL opérationnelles et à faciliter leur insertion au sein d'itools.cms.

Ci-dessous, le séquencement proposé par la communauté sur ikaaro.org :

  • créer une vue calendrier en XUL
  • intégrer cette vue à itools.cms, assurer la compatibilité avec les différents navigateurs, seul Firefox doit utiliser les interfaces XUL
  • utiliser le langage de templates utilisé dans itools.cms pour ajouter de l'information à l'interface
  • gérer les évènements donnés par l'API de manipulation de fichiers iCal
  • assurer l'internationalisation de ces interfaces, les applications développées peuvent être multilingues
  • réaliser l'ensemble des vues nécessaires à la manipulation de fichiers iCal (vue mensuelle, hebdomadaire, journalière, ...)
  • envisager l'amélioration de la réactivité de l'interface, cette partie pourra éventuellement faire appel à AJAX.

Méthode

Les développements se feront exclusivement en Python et suivis avec Git/Cogito. Vous devrez vous intégrer dans la communauté en suivant le modèle de développement : mailing list, bugzilla, soumission de patchs, documentation... Votre contribution sera incluse dans itools et distribuée avec les prochaines versions.

Langages et technologies

  • XML (XUL, XHTML, XBL), Python, itools, JavaScript (Ajax), iCal, ...

Références

Créer un calendrier partagé pour itools.cms - Nicolas Deram - Itaapy

Etudiants : ???

Encadrant universitaire : G. Bourguin

Mots-clés

  • GroupWare, Python, itools, iCal

Contexte

La notion de "GroupeWare" peut être vue comme l'ensemble des techniques que l'on va employer et faire communiquer pour créer des plate-formes de travail collaboratif. On peut dénombrer les techniques suivantes :

  • la gestion de contenu, permettant de partager des documents
  • les forums
  • ­ les annuaires utilisateurs
  • ­ les wiki
  • ­ les modules de gestion de ressources, permettant de planifier la réservation de salles, matériel, véhicules, ...
  • ­ les calendriers personnels
  • ­ les calendriers partagés, permettant la prise de rendez-vous intelligente sur des groupes d'utilisateurs, et des workflow hiérarchiques sur les rendez-vous

Ces techniques se trouvent plus ou moins bien intégrés dans des applications clients lourds -- qu'il faut installer sur chaque poste utilisateur --, que client léger -- que l'on n'installe que sur un serveurs, les clients étant firefox ou IE --. Parmi les différentes techniques citées, c'est la dernière -- le calendrier partagé -- qui nous intéresse ici. Dans les entreprises et les administrations un des points bloquants pour le passage au logiciel libre est le fait qu'"OutLook" fournit sur les réseaux locaux d'entreprise les fonctionnalités de calendrier partagé. Le stockage des données se fait dans un format binaire fermé -- les spécifications du format ne sont pas publiées -- encapsulé dans le serveur de mail "Exchange". Le seul export dans un format ouvert possible est un export au format iCal.

Technologie

Au sein du projet itools nous travaillons depuis trois ans sur deux modules qui peuvent relever les défis des calendriers partagés.

  • itools.ical :
    • manipulation de fichiers ical, format standard pour les calendriers partagés.
    • API pour rechercher, visualiser, modifier un évènement dans un fichier ical.
  • itools.cms (Content Management System) aka iKaaro :
    • socle fonctionnel offrant une structure et un ensemble d'outils qui intègrent :
      • la gestion de fichiers, répertoires, ...
      • un comportement spécifique pour la plupart des types de fichiers pour la visualisation et l'édition, et notamment les fichiers ical
      • la gestion d'utilisateurs
      • la connexion à des ACL externes
      • ...

Présentation du projet

Aujourd'hui, itools.cms offre une IHM web, qui permet la manipulation des données stockées dans le format ical. Des applications ont été développées en intégrant un module de gestion de ressources. Il s'agit en général de parcourir le calendrier via un ensemble de vues (mensuelle, hebdomadaire, journalière, ...) et de réserver une ressource (salle, véhicule, ...) à une date sélectionnée.

Objectifs

Un certain nombre de tâches sont ouvertes sur le gestionnaire des tâches de la communauté ikaaro.org, pour créer une calendrier partagé, l'objectif est de s'insérer dans le développement de la communauté pour contribuer à réaliser un véritable module de calendrier partagé opérationnel. Ce module devra permettre d'organiser des rendez-vous entre différents utilisateurs d'une application basée sur iKaaro. Ci-dessous le séquencement proposé par la communauté sur ikaaro.org :

  • faire en sorte que chaque utilisateur dispose dans son espace personnel d'un calendrier, au format ical.
  • permettre à un autre utilisateur de consulter simultanément plusieurs calendriers en vues de proposer des dates de réunion.
  • proposer un module d'IA pour assister à la recherche de date sur une période :
    • s'assurant la disponibilité des participants
    • proposant plusieurs dates
    • prenant en compte les rôles des participants
  • prévenir les utilisateurs, au travers d'un centre de notification. - mail - sms - alerte interne à l'application dans les listes de tâches
  • mettre en place le workflow de confirmation du rendez-vous.
  • réaliser une vue récapitulative des rendez-vous à venir par utilisateur.
  • envisager les synchronisations vers des PDA.

Méthode

Les développements se feront exclusivement en Python et suivis avec Git/Cogito. Vous devrez vous intégrer dans la communauté en suivant le modèle de développement : mailing list, bugzilla, soumission de patchs, documentation... Votre contribution sera incluse dans itools et distribuée avec les prochaines versions.

Langages et technologies

  • Python, itools, iCal, XHTML

Références

Génie logiciel et Python - Sylvain Thénault - Logilab

Etudiant : Sylvain Bigot

Encadrant : Mourad Bouneffa

Mots-clés

  • Python avancé, UML, analyse et génération de code, qualité

Contexte

Plusieurs outils, écrits entièrement en Python, permettent de garantir la qualité du code et de l'analyser : pylint, pyreverse, gaphor, etc. Ces outils seraient encore plus profitables et efficaces s'ils étaient mieux intégrés entre eux.

Présentation du projet

Après une prise en main des logiciels au cours de laquelle des corrections et des petites améliorations pourront être apportées pour se familiariser avec le code de pylint, pyreverse et gaphor, vous travaillerez plus particulièrement sur l'intégration de ces trois outils.

Le but est de pouvoir profiter de la représentation graphique (UML) de gaphor pour mieux comprendre du code Python existant, de générer du code à partir de cette représentation graphique, de faire apparaître les problèmes de conception signalés par pylint dans les diagrammes, etc.

Méthode

Les développements se feront en Python et seront suivis avec mercurial. Vous devrez vous intégrer dans la communauté en suivant le modèle de développement : liste de discussion, outil de suivi de tickets, soumission de patchs, documentation, tests automatiques... Votre contribution sera incluse dans les logiciels cités et distribuée avec les prochaines versions.

Outils et techniques

  • Python
  • Gtk
  • UML

Références

Lancement du projet TOBFlow sous licence libre - Coralie Girardet - Audaxis

Etudiants : J. Roussel et A. Caboche

Encadrant universitaire : G. Bourguin

Introduction – Qu'est ce que TOBFlow ?

Le projet TOBFlow (Total Object Flow) a pour objectif de développer un framework de gestion de formulaires et de workflows qui constitue une base flexible et solide pour la gestion contrôlée des flux de documents de l'entreprise et la dématérialisation de ceux-ci. TOBFlow se base sur une approche originale orientée Objets de modélisation des formulaires et workflows. Son architecture ouverte assure une facile intégration avec les autres applications du système d'information.

TOBFlow est le résultat de l’association des compétences d’Audaxis dans les domaines Web et Open Source, et de celles de TWO Consult en matière de workflows et systèmes de management.

TOBFlow est développé suivant les standards d'une application J2EE en se basant sur les framework Tapestry, Spring et Hibernate.

Description du projet

Lancement et gestion du site

Le présent projet a pour but de « releaser » le projet TOBFlow sous licence libre. Il s'agit donc de créer un site web afin de présenter le projet, de doter ce site de l'ensemble des fonctionnalités nécessaires à la gestion d'un projet open source (ou de s'appuyer sur une site existant tel que sourceforge.net) et de gérer le site afin d'animer la communauté naissante pour lui donner la dynamique nécessaire à sa pérénnité.

Parmi les différentes actions à prévoir, on peut citer:

  • La gestion d'un forum et/ou d'une mailing liste utilisateurs
  • La gestion d'un forum et/ou d'une mailing liste développeurs
  • L'ouverture du repository subversion à la communauté avec un niveau d'accès public en lecture seule et un niveau d'accès par authentification et mot de passe en lecture/écriture
  • La possibilité de parcourir le repository de code à l'aide d'un navigateur web
  • La gestion d'un outil de suivi de bug
  • La révision du code afin de vérifier que les copyrights soient corrects et que le code source soit cohérent avec les règles de coding.
  • Gestion d'un Wiki

Développement de nouvelles fonctionnalités dans TOBFlow

Il est également possible de participer au développement de nouvelles fonctionnalités sur TOBFlow.

Effets openGL sur une communication video (smileys video) - Jérôme Wagner - Wengo

Etudiants : S. Ludwig et F. Rodriguez

Encadrants universitaires : J. C. Soulié et M. Leblond

Mots-clés

  • VoIP, Visiophonie, OpenGL, C++, QT

Contexte

La société wengo développe un téléphone logiciel open source en GPL (le projet "openwengo"). Ce téléphone est compatible avec le protocole SIP qui est le protocole standard retenu par de nombreuses entreprise pour faire de la voix sur IP.

Présentation du projet

Le projet correspond à la mise en place d'un nouvel ensemble de fonctionnalités "amusantes pour les utilisateurs" : des smileys video

Lors d'une communication visio avec un tiers, l'utilisateur peut imprimer des effets vidéos sur ce que recevra son correspondant.

On peut penser à des effets graphiques simples du type :

  • passer l'image en noir et blanc
  • appliquer un effet "fish-eye" qui permet de grossir une zone de l'image
  • faire vibrer l'image pendant quelques secondes

ou plus complexe comme:

  • modifier le fond de l'image en temps réél pour donner l'impression qu'on est au bord de la mer
  • rajouter des moustaches sur la tête de l'interlocuteur

Le wengophone dispose actuellement d'une implémentation fonctionnelle de la visiophonie. L'idée du projet est de voir comment on peut intégrer ce type d'effets dans le projet et les rendre disponibles de façon ergonomiques pour les utilisateurs.

Cette intégration doit passer par un système de plugin qui permettra aux utilisateurs d'ajouter des nouveaux effets facilement.

Méthode

Le projet permettra de s'insérer au sein d'un véritable projet open source et d'utiliser les mêmes outils que les membres de la communauté (SVN, Trac, Tickets, IRC, mailing list,..)

Un mentor sera nommé au sein de wengo pour accompagner le projet.

Références

Browser embarqué basé sur Safari ou WebKit - Jérôme Wagner - Wengo

Etudiants : ???

Encadrant universitaire : J. C. Soulié

Mots-clés

  • MacOSX, C++, QT, Browser

Contexte

La société wengo développe un téléphone logiciel open source en GPL (le projet "openwengo"). Ce téléphone est compatible avec le protocole SIP qui est le protocole standard retenu par de nombreuses entreprise pour faire de la voix sur IP.

Présentation du projet

En 2006, il apparaît indispensable qu'une application grand-public puisse embarquer de façon quasi invisible un navigateur internet.

Une telle intégration permet de faire en sorte qu'un certain nombre de contenus (actualités, documentation, nouveautés, ..) sont gérés sur des serveurs centraux et ne nécessitent pas une mise à jour du logiciel pour être modifiés.

Sous Windows, une telle intégration est relativement simple grâce à un composant activeX "internet explorer" mis à disposition par Microsoft.

Résoudre ce problème de façon cross-platform est plus complexe car sous Linux et MacOSX, rien n'est rééllement standardisé. Il y a beaucoup de solutions mais aucune n'est véritablement utilisable en tant que "composant réutilisable" à l'intérieur d'une autre application.

L'objectif du projet est d'intégrer à l'intérieur de la librairie browser du projet openwengo une implémentation basée sur la famille Safari/Webkit de navigateurs afin de réaliser un tel composant réutilisable.

Méthode

Le projet permettra de s'insérer au sein d'un véritable projet open source et d'utiliser les mêmes outils que les membres de la communauté (SVN, Trac, Tickets, IRC, mailing list,..)

Un mentor sera nommé au sein de wengo pour accompagner le projet.

Références

Système de persistance objet pour annuaire LDAP - Christophe Nowicki - Easter-Eggs

Etudiant : Jérome Caytan et Ming Fei Han

Encadrant universitaire : Mourad Bouneffa

Synthèse

L'objectif du projet est de réaliser un système de persistance objet dédié aux annuaires LDAP. Ce système doit permettre de stocker des objets et prendre en compte l'ensemble des spécificités d'un annuaire :

  • l'organisation hiérarchique
  • les schémas
  • la gestion des droits d'accès (ACL)

En plus des fonctionnalités classiques d'un système de persistance objet :

  • stockage des attributs
  • récupération, modification et suppression des objets

Langages et technologies

Les technologies utilisées lors de ce projet sont :

  • langage de programmation : PHP ou Python ou Perl.
  • annuaire : OpenLDAP3
  • gestion de projets et de version : Subversion4 et Trac5.

Avantages du projet

Les avantages apportés par ce projet pour la communauté du logiciel libre sont les suivants :

  • simplification de la gestion des annuaires
  • prise en charge de l'ensemble des fonctionnalités offertes par les annuaires
  • mise à disposition d'un système de persistance objet dédié aux annuaires.

Livrables

L'équipe doit fournir les livrables suivants :

  • des spécifications techniques
  • une implémentation du système sous forme de bibliothèque
  • des exemples d'utilisation
  • un jeu de tests unitaires
  • une documentation de l'interface de programmation

L'ensemble des livrables doit être fourni sous une licence considérée comme libre par la Free Software Fondation.

Détails

Fonctionnement de base de la bibliothèque

Les fonctionnalités de base de la bibliothèque reposent sur les possibilités de sérialisation et de désérialisation des objets dans l'annuaire :

  • charger un objet
  • modifier les attributs d'objet
  • supprimer un objet
  • rechercher.

Il doit être aussi possible d'exporter et de charger des objets à l'aide du format LDIF.

Génération automatique de code

La bibliothèque doit proposer une fonctionnalité de génération de code source à partir d'un schéma.

L'objectif est de pouvoir créer la définition d'une classe à partir d'un schéma en prenant en compte :

  • le type des attributs
  • les droits sur les attributs
  • l'héritage multiple

Le générateur doit produire un code lisible et modifiable par un programmeur.

Prise en compte de l'organisation hiérarchique de l'annuaire

La bibliothèque doit pouvoir permettre au programmeur de se déplacer au sein de l'annuaire. Par exemple, l'utilisateur doit pouvoir charger un objet et récupérer la liste des objets enfants de celui-ci à l'aide d'une méthode. La conception de cette API doit être inspirée des méthodes proposées par la méthodologie DOM.

Planning de réalisation

Le développement doit être réalisé en binômes ou petites équipes (de 2 ou 4 étudiants) et encadré par un chef de projet de chez Easter-eggs.

Nous préconisons le planning suivant :

Tâche 1 : Veille technologique : Analyse de l'ensemble des solutions de persistance objet existantes, 
                                 études des algorithmes de persistance et compréhension des spécificités liées au protocole LDAP ; 30j/h

Tâche 2 : Spécification : Rédaction des spécifications techniques et conception de l'interface de programmation ; 20j/h

Tâche 3 : Tests unitaires ; Écriture des tests unitaires ; 10j/h

Tâche 4 : Développement ; Écriture de la bibliothèque et des exemples ; 30j/h

Tâche 5 : Documentation ; Documentation de l'interface de programmation ; 10j/h

Références

Planification de tournées - Antoine Lheureux - EasyForYou

Etudiants : A. Labitte et M. Bellynck

Encadrants universitaires : D. Robilliard, C. Fonlupt et M. Bouneffa

Contenu non publié

M2 ISIDIS

Détection de structures océanographiques par programmation génétique - Denis Robilliard et Virginie Marion-Poty

Etudiants : Stéphane Vendemergel et Ali Salman

Mots clés

  • Intelligence Artificielle, Apprentissage Artificiel, Programmation génétique, Océanographie, Environnement

Objectif

Le projet consiste à détecter des structures océaniques par un algorithme de programmation génétique. Ce travail s'inscrit dans une collaboration entre le LIL et L'Ifremer et vise à caractériser les milieux favorables à la reproduction des petits poissons pélagiques, comme l'anchois. A partir de résultats de simulations hydrodynamiques du golfe de Gascogne, se décomposant en matrices de vecteurs de courants, de salinité, de température, ... on cherche à détecter des structures océanographiques par un algorithme de "programmation génétique" (c'est à dire une technique d'intelligence artificielle). L'algorithme est déjà écrit, il se base sur une librairie Java nommée ECJ. Le travail consistera dans un premier temps à étalonner la qualité des résultats de détection, puis dans un second temps à proposer des améliorations de l'algorithme.

Outils

  • Java, librairie ECJ

RobotCup - Jean-Christophe Soulié

Etudiants : Loïc Bigand et Loïc Pamart

Le concept de robots jouant au football a été introduit pour la première fois au Japon en 1993, sous le nom de Robot J-League. Le nom de Robocup est apparu en automne 1993 lorsque quelques chercheurs américains se sont intéressés au projet. Après une étude de faisabilité sur deux ans, en août 1995, un avis fut publié afin d'introduire la première conférence internationale ainsi que les premiers matchs de football. Depuis le lancement de cette compétition, SONY a joué un rôle important en supportant activement cette initiative.

En juillet 1997, la première conférence officielle, ainsi que les premiers matchs ont été organisés à Nagoya, au Japon. Cet événement fut un énorme succès. Les organisateurs décidèrent de reconduire cet événement chaque année. Paris, Stockholm, Melbourne et Seattle ont été sélectionnés successivement. Aujourd'hui, 3000 chercheurs venant de plus de 35 pays différents participent à cette compétition. En juin 2002, la 6ème Robocup s'est déroulée à Fukuoka, Japon en collaboration avec Busan, Corée, en même temps que la Coupe du Monde de Football 2002. Le nombre de spectateurs subit une explosion avec plus de 100.000 visiteurs.

Juin 2004 fut un grand mois pour Lisbonne. Outre la coupe d'Europe de football, la capitale portugaise a accueilli la Robocup 2004, qui s’est déroulée du 27 juin au 5 juillet.

Robocup est une initiative internationale de recherche et d'éducation. Son but est d'encourager la recherche en robotique et intelligence artificielle. En fournissant un problème standard, de nombreuses innovations et technologies sont expérimentées.

L'objectif final du projet Robocup est qu'en l'an 2050, soit développée une équipe tout à fait autonome de robots humanoïdes qui pourront vaincre l'équipe humaine championne du monde en titre. Depuis le début, le football a été choisi comme unique domaine dans cet objectif, les compétitions entre robots actuelles se répartissent en 3 groupes : Robocup Soccer, Robocup Junior, et Robocup Rescue.

Robocup Soccer est divisée en plusieurs ligues, l'une d'entre elles est la "ligue des robots quadrupèdes" où figurent les robots AIBO de SONY. Mais l'objectif qui se cache derrière ce défi est des plus sérieux. Les équipes sont dirigées par des universités et des institutions parmi les plus prestigieuses du monde. Celles-ci utilisent AIBO comme un support pratique et évolué de recherche et de développement en robotique.

Le sujet du projet de synthèse est en lui-même assez simple puisqu’il consiste à réaliser une API cliente codée en JAVA. Le but de cette API est de simplifier la gestion des envoies et réceptions des messages vers le serveur pour que l’utilisateur puisse se concentrer sur l’intelligence artificielle à développer. Ainsi cette API servirait notamment aux cours et TPs d’intelligence artificielle donnés en GMI.

L’API doit en outre respecter quelques règles :

  • Être facile d’accès : Cela paraît logique pour une API mais il faut qu’il y ait des méthodes complètes et bien décrites pour que l’utilisateur sache quoi utiliser rapidement.
  • Avoir une conception modulaire : Le projet Robocup est un projet qui évolue au cours du temps avec plus ou moins d’importance. L’API devra donc être modifiée en conséquence. Pour éviter de réécrire trop de classes il faut utiliser différents patterns et une conception modulaire pour qu’il n’y ait que de nouvelles classes à créer et très peu à modifier.
  • Être commenté : Pour que l’API soit facilement comprise, accessible et modifiable le code doit être commenté judicieusement. Une java doc doit également être créée.
  • Être libre de son action : Il faut que l’utilisateur puissent accéder et redéfinir des composants qui l’intéresse. En effet l’API cliente va créer une structure plus ou moins fixe pour recevoir et transmettre les messages. Il ne faut pas que cette structure soit trop « étouffante » et qu’elle laisse des libertés d’héritages.

Langage

  • Java ou C++

Liens

Interface web pour la visualisation de simulations - Eric Ramat et Gauthier Quesnel

Etudiants : Joceleyn De Craeke et Fabien Delannoy

Mots clés

  • Java, JavaScript, PHP, XUL, réseaux, XML

Contexte

Virtual Laboratory Environment (VLE) est une plate-forme dite laboratoire virtuelle qui permet la construction de modèles et la simulation de modèles de systèmes complexes tels que les écosystèmes par exemple. VLE est développé au Laboratoire d'Informatique du Littoral (LIL) à Calais. Les sources du projet sont mis en ligne sur un serveur CVS (http://www.sourceforge.net/projects/vle) et un site Web est disponible pour les informations complémentaires (http://vle.univ-littoral.fr).

Objectifs

Le moteur de simulation et des plugins de visualisation des simulations existent et sont écrits en C++. Le but du projet est de proposer une alternative aux plugins C++ en développant des versions Web. Cette version doit être intégré à un client léger de type navigateur Web. La connexion entre l'application client Web de visualisation et le moteur de simulation est réalisée à l'aide de sockets et de messages transportant les données à représenter. Ces données sont en XML.

Tâches

  • étudier le code C++/GTK d'un plugin de visualisation : automates cellulaires (un exemple et le code)
  • étudier le code de la classe NetObserver ; c'est la classe dont tous les plugins héritent et qui traitent les trames XML
  • étudier le protocole entre le simulateur et le plugin de visulisation : socket + XML (fonctions parseData et parseParameters)
  • étudier 3 technologies (en se limitant aux frameworks et librairies libres et ouvertes) :
    • en Java pur sous forme d'une applet
    • en XUL
    • en Ajax (Asynchronous JavaScript And XML) - un petit diagramme pour comprendre !
  • implémenter les 3 solutions
  • comparer les 3 solutions du point de vue de la maintenabilité du code, de la simplicité du code et du déploiement, de la performance, ...

Références

Analyseur des interdépendances dans une application java - Henri Basson

Etudiants : Julien Renaux et Olivier Martin

Outil d’analyse de données - Henri Basson

Etudiants : Frédéric Campagne et Guillaume Dernoncourt

L’objectif de ce projet est de réaliser un outil de visualisation des données des parcs éoliens sous forme de tableaux ou de graphiques via une interface web.

Création d’un mécanisme de Layout automatique dans le framework GEF - Grégory Bourguin

Etudiant : Jonathan Duriez

Le projet open source GEF permet de créer des applications graphiques de manipulation de graphes, en particulier sous Eclipse. Nous souhaitons étendre GEF de manière à offrir des mécanismes d’auto-layout pour des graphes sous forme d’arbre. Concrêtement, l’ajout d’un nœud dans un graphe le placera automatiquement dans la représentation visuelle en déterminant sa place et réorganisant automatiquement la position des autres nœuds. Des exemples sont disponibles.

Algorithmic Plugin View - Laurent Deruelle

Etudiants : Atmane Cherfa et Jean-Charles Mylle

Le projet consiste à développer plusieurs plugin eclipse pour l'extraction d'informations à partir d'un graphe représentant une application centralisée Java et distribuée en J2EE afin de créer une vue pour afficher l'algorithme d'un composant Java/J2EE. Ceci favorisera la compréhension de programmes centralisé et distribué sur une architecture J2EE.

Reconstitution graphique des déplacements d’un véhicule à l’aide du positionnement satellitaire - Cyril Fonlupt et Mourad Bouneffa

Etudiants : David Deleurence et Stéphane Desheraud

Ce travail s’effectue dans le cadre du projet PEPSAT dont l’un des buts et de proposer de nouvelles applications utilisant le positionnement satellitaires. Il s’agit de reconstruire sur une carte géographique le parcours qu’un véhicule effectue au cours d’un déplacement. En d’autres termes, le véhicule dispose d’un capteur GPS et d’une mémoire persistante permettant de stocker les différents points parcourus par le véhicule. Ces points seront ultérieurement utilisé pour reconstruire sous la forme d’une courbe la trajectoire du véhicule sur une carte géographique. Dans notre cas de figure, la carte géographique sera celle disponible au niveau de GoogleEarth. Il est donc question de :

  • Développer une application ou utiliser une application pré-existante s’exécutant sur un PDA et capable de mémoriser les différents points parcourus par le véhicule.
  • Développer une interface permettant de connecter les données récoltées par l’application avec GoogleEarth pour le dessin de la trajectoire.
  • Prendre en compte les fonctionnalités de zoom pour affiner le dessin de la trajectoire selon la finesse de la carte.

Les étudiants travaillant sur ce projet disposeront d’un PDA équipé d’un capteur GPS. Le travail s’effectuera selon le langage et les outils les plus adaptés. Il est donc possible de choisir un autre langage que Java. Le travail se déroulera selon le planning suivant :

  • Recherche d’outils les plus adaptés pour le stockage de données satellitaires sur le PDA
  • Recherche des outils d’interfaçage avec Google Earth.
  • Développement de l’application de récolte et de stockage de points de parcours
  • Développement de l’application de dessin de trajectoires.


Data Mining - Antoine Lheureux - EasyResolution, SARL eSi4U

Etudiants : Jonathan Fréderick et Julien Roy

Encadrant universitaire : M. Bouneffa

Présentation moteur ORLO

La SARL eSi4U a développé une plateforme logicielle permettant de gérer une planification dynamique d’agenda d’opérateur d’une flotte de mobile. La plateforme peut s’interconnecter entre :

  • Serveur de localisation de mobile GSM & GSM/GPS via XML-RPC
  • Progiciel de gestion via échange de fichier XML & API JAVA
  • Calculateur d’itinéraire / Optimisateur de tournée (intrinsèque au moteur dans sa version actuelle)

Pour se connecter au moteur ORLO, il est donc possible de faire des requêtes via API JAVA. Pour alimenter le moteur, il est possible de déposer des données via fichier XML structuré. Pour certaine fonction, il est possible de combiner au sein de fichiers XML, données et requête.

Information sur le serveur d’hébergement de l’application

Le moteur ORLO fonctionne sous OS serveur Windows 2003 avec JVM 5.0 ou OS Linux. Il nécessite une configuration de 1Go de RAM et un processeur actuel pour un fonctionnement optimal.

Dans sa version avec le calculateur d’itinéraire, une ou plusieurs machines supplémentaires hébergeront les applications de calculs. Ces dernières nécessitent une configuration minimale de 4Go de RAM et un bi-processeur et/ou DualCore pour un fonctionnement optimal. L’ensemble de la solution peut être hébergée sur une seule et unique machine qui devra respecter une configuration conseillée : OS Windows server, 6Go de RAM et quadri-processeur dans le souci de faire une répartition des charges de calcul (multithreading) et garantir des temps de réaction acceptable du moteur applicatif.


Objectifs

Optimisation de la base de données existante

La structure de la base de données existante a été créée en fonction des aspects terrain et métiers, le problème est qu’avec l’explosion des informations à traiter il faut optimiser cette base de données pour avoir le meilleur rendement possible et offrir la meilleure qualité de service possible.

Définir une stratégie d’architecture des données

La base de données actuelle fonctionne sur un pc ordinaire, avec un disque dur de 160 Go. Mais le nombre de données stockées devient de plus en plus important. C’est pourquoi dans l’optimisation de la base de données il faut penser à fournir une architecture adéquate. L’absorption de nouveaux volumes de données devra avoir une réponse plus matérielle que logicielle (DB).

Utiliser le datamining

Utiliser le datamining pour fournir des informations clés dans une prise de décision de manière quasi instantanée. Exemple : lors de la prise de rendez vous avec un client il faut pouvoir trouver la meilleure compétence en un temps minimum.

Proposition d'une stratégie de stockage

Proposition d'une stratégie de stockage des données permettant la répartition physique des dites données en mode hébergé à l’extérieur de l’entreprise ou dans ses murs (cas des données de géolocalisation d’un tiers identifié – CNIL).

Sécurité sur les données

Permettre une sécurité sur les données en termes de stockage et de confidentialité. En effet il faut que la base de données puisse garantir un stockage sûr des données. Mais aussi de pouvoir dupliquer ces données pour les conserver en historique sans que la base perde en efficacité.

L’aspect métier

Mettre à disposition rapide des contenus synthétiques de données ayant une cohérence métier, dans le but d’optimiser la rapidité des traitements interne d’ORLO, de préparer les données pour une exploitation immédiate par des méthodes qui seront créées par Antoine et Marine, par exemple.

L’enjeu L’enjeu du développement est l’optimisation des données provenant :

  • de la géo localisation
  • de calcul d’itinéraires
  • de l’ERP du client
  • de la remontée M2M terrain
  • des interfaces clientes (prise de RDV, changement d’horaire)
  • d’une cartographie directe


Piste de travail

  • Type de SGBD (Relationnel, séquentiel indéxé, object….)
  • MySQL, ORACLE, PostGresSQL...

M1 I2L

Interface PyGTK sur le modèle de simulation Chaloupe - David Versmisse et Eric Ramat

Etudiants : Jonathan Cadel et Benjamin Carpentier

Contexte

Dans le cadre du projet CHALOUPE, le laboratoire travaille actuellement sur l'élaboration d'un outil efficace : TREQ, pour mettre en place rapidement un modèle à base d'équations récursives fortement interdépendantes. Les parties traitements et calculs de TREQ sont presque terminées mais il manque une interface conviviale pour piloter l'ensemble. TREQ est basé sur un système de modélisation et de simulation : VLE.

Environnement de travail

Linux/Debian, git/cogito, vim (pour les puristes) ou emacs.

Objectifs

Le but de ce projet est donc d'écrire cette interface de préférence en C++ ou en Python, mais tournant obligatoirement sous linux. Pour l'instant, TREQ se paramètre via l'écriture d'un fichier XML et d'un fichier écrit en Python (aucune connaissance sur ce langage n'est nécessaire pour mener à bien le projet sauf bien sûr pour l'interface le cas échéant). Le projet doit offrir une interface ressemblant fortement à un éditeur de fichiers XML (voir par exemple kxmleditor), mais spécifique aux balises de TREQ.

Connaissances nécessaires ou acquises lors du projet:

  • Le langage XML
  • Les IHM

Etude de Swig et développement de wrappers Java et Python - Gauthier Quesnel et Eric Ramat

Etudiants : Xavier Coulon et Julien Heyman

Mot clés

proxy, C++, Java et Python

Environnement de travail

Linux/Debian, git/cogito, vim (pour les puristes) ou emacs.

Objectifs

Virtual Laboratory Environment (VLE) est une plate-forme dite laboratoire virtuel qui permet la construction de modèles et la simulation de modèles de systèmes complexes tels que les écosystèmes par exemple. VLE est développé au Laboratoire d'Informatique du Littoral (LIL) à Calais. Les sources du projet sont mis en ligne sur un serveur CVS et sont disponibles en mode distribué par git/cogito. Toute la documentation est disponible sur le site web du VLE.

Aujourd'hui la plate-forme VLE est entièrement écrite en C++. Or, il est devenu intéressant d'introduire d'autres langages de programmation (Java et Python, en particulier) au sein de la plate-forme. Afin de rendre VLE multi-langages, nous avons choisi d'étudier la bibliothèque Swig. Swig est un outil de développement qui permet la connexion de programmes écrits en C ou C++ avec une grande variété de langages.

Le projet se divise en 3 phases :

  • étude de Swig sur des exemples simples et sur les langages Java et Python
  • interfaçage pour les plugins de modélisation de VLE
  • interfaçage pour les plugins de simulation de VLE

Dans un deuxième temps, une solution distribuée devra être développée. L'idée est de déporter l'éxecution du code de certaines classes sur des machines distantes. Plusieurs solutions ont déjà été étudiés : XML-RPC, Java-RMI, ... Que peut-on maintenant imaginer grâce à l'intégration de Swig.

Outils

Editeur de modèles pour GVLE basé sur GraphViz - Gauthier Quesnel et Eric Ramat

Etudiants : Anthony Maes et Jérémie Orange

Mot clés

Graphes, C++ et GTKmm

Environnement de travail

Linux/Debian, git/cogito, vim (pour les puristes) ou emacs.

Objectifs

Virtual Laboratory Environment (VLE) est une plate-forme dite laboratoire virtuel qui permet la construction de modèles et la simulation de modèles de systèmes complexes tels que les écosystèmes par exemple. VLE est développé au Laboratoire d'Informatique du Littoral (LIL) à Calais. Les sources du projet sont mis en ligne sur un serveur CVS et sont disponibles en mode distribué par git/cogito. Toute la documentation est disponible sur le site web du VLE.

Un module de l'application, nommé GVLE, a pour rôle de définir des graphes de connexions entre modèles (des boîtes et des flèches entre les boîtes) composants la simulation. Une première version de cet éditeur est disponible mais les algorithmes de tracé des graphes étant complexes, cette première version n'est pas optimale.

L'objectif de ce projet est donc :

  • d'étudier la bibliothèque GraphViz et le langage Dot associé,
  • de développer le code nécessaire pour dessiner les graphes spécifiques à GVLE,
  • de développer l'interaction entre le dessin généré et l'utilisateur

Liens

Plugin de modélisation pour GVLE basé sur GraphViz - Gauthier Quesnel et Eric Ramat

Etudiant : Moctar Gaye NDong et Fadil Habiba

Mot clés

Graphes, automate à états finis, C++ et GTKmm

Environnement de travail

Linux/Debian, git/cogito, vim (pour les puristes) ou emacs.

Objectifs

Virtual Laboratory Environment (VLE) est une plate-forme dite laboratoire virtuel qui permet la construction de modèles et la simulation de modèles de systèmes complexes tels que les écosystèmes par exemple. VLE est développé au Laboratoire d'Informatique du Littoral (LIL) à Calais. Les sources du projet sont mis en ligne sur un serveur CVS et sont disponibles en mode distribué par git/cogito. Toute la documentation est disponible sur le site web du VLE.

Lorsque l'on développe un modèle, on utilise des formalismes (par exemple, des équations, des réseaux de Petri, ... et des automates à états finis). Afin de faciliter la définition des modèles, VLE et en particulier GVLE, propose de développer des plugins de modélisation. Ces plugins sont graphiques et font appel à GTKmm. Dans ce projet, on se propose de travailler sur le formalisme des automates à états finis et de proposer un plugin graphique de définition.

L'objectif de ce projet est donc :

  • d'étudier la bibliothèque GraphViz et le langage Dot associé,
  • de développer le code nécessaire pour dessiner les automates à états finis (un exemple et le source de l'exemple),
  • de développer des boîtes de dialogue pour la définition des états,
  • de développer l'interaction entre le dessin généré et l'utilisateur,
  • d'écrire une fonction de transformation du langage Dot vers l'XML de VLE pour les automates à états finis (et vice versa)

Liens

Codage de routines de filtrage d'image - Christophe Renaud

Etudiants : Yannick Martel et Frabrice Decroix

Différentes routines de filtrage d'images utilisées au sein du projet OASIS ont été devéloppées en C et C++. Ces routines sont relativement lentes en terme d'exécution. Nous souhaitons donc les accélérer en profitant des fonctionnalités SIMD existantes sur les processeurs récents (routines SSE) et sur les cartes graphiques programmables actuelles (GPU).

Ce sujet a donc pour objectif de coder ces routines de filtrage d'image sous deux formes :

  • en C/C++ avec les fonctions SSE disponibles sur les processeurs Intel ;
  • en Cg (C for Graphics) pour une utilisation sur carte graphique programmable.

Aucune connaissance en graphique n'est requise pour ce projet. D'autre part, les routines SSE et le langage CG sont appréhendables facilement.

Contribution au projet Webfinance (licence GNU GPL) - Cyril Bouthors - ISVTEC

Etudiants : Maxime Decaix et Bertrand Radenne

Encadrant universitaire : E. Ramat

Mots-clés

Facturation, contacts client, trésorerie, prévisions.

Présentation du projet

Webfinance est une application web basée sur PHP/MySQL qui permet de gérer des factures, des contacts client, une trésorerie et des prévisions.

Cette application a été initialement développée d'un commun effort des sociétés NBI et ISVTEC et est maintenant publiquement disponible en tant que Logiciel Libre sous license GNU GPL.

Objectifs

L'objectif dans les mois à venir est d'étendre et/ou améliorer Webfinance dans les domaines suivants :

  • Développer un site web de présentation du projet
  • Développer et nourrir une communauté d'utilisateurs et de développeurs autour du projet Logiciel Libre et de son site web dans le but de multiplier les retours d'expérience, rapports de bugs, demandes de fonctionnalités, et modifications, etc.
  • Terminer l'intégration du moteur de traduction Gettext
  • Modifier l'application pour qu'elle supporte plusieurs monnaies
  • Corriger les divers bugs rapportés par les utilisateurs
  • Assurer la compatibilités avec les navigateurs web du marché
  • Intégrer un moteur de recherche
  • Développer un package de l'application pour l'intégrer aux distributions Debian/sid et Debian/Ubuntu GNU/Linux
  • Développer une interface d'export au format CSV
  • Davantages de tâches seront assignées en fonction de la vitesse et du nombre de stagiaires

Langages et technologies

  • PHP
  • MySQL
  • HTML
  • JavaScript
  • CSS

Softphone allégé en wxwidget ou gtk - Jérôme Wagner - Wengo

Etudiants : Jonathan Fernandes et Yuriy Gavrylyshyn

Encadrant universitaire : J. C. Soulié

Mots-clés

  • voIP, MVC, PAC, WxWidget, GTK

Contexte

La société wengo développe un téléphone logiciel open source en GPL (le projet "openwengo"). Ce téléphone est compatible avec le protocole SIP qui est le protocole standard retenu par de nombreuses entreprise pour faire de la voix sur IP.

Présentation du projet

Le wengophone (le téléphone logiciel) tel qu'il est connu aujourd'hui est une application grand public qui intègre énormément de features (téléphonie, visio, messagerie instantanée intéropérable avec MSN, Yahoo,..)

Il est développé avec la librairie graphique QT tout en respectant une séparation forte entre la couche métier du logiciel, sa couche de contrôle, et sa couche de présentation. Il n'est donc pas destiné à ne pouvoir fonctionner qu'avec la librairie QT.

L'objectif du projet est de parvenir à réaliser une application de téléphonie utilisant le même coeur que le wengophone, mais disposant d'une présentation différente, utilisant une autre librairie graphique cross-plateform telle que WxWidget ou GTK.

Ce sera l'occasion de réaliser une application plus légère, dédiée à la téléphonie par exemple.

Méthode

Le projet permettra de s'insérer au sein d'un véritable projet open source et d'utiliser les mêmes outils que les membres de la communauté (SVN, Trac, Tickets, IRC, mailing list,..)

Un mentor sera nommé au sein de wengo pour accompagner le projet.

Références

Localisation de documents de bureautique - Hervé Cauwelier - Itaapy

Etudiants : Marcellin Ezechiel et Sylvain Taverne

Mots-clés

OpenDocument, XML, internationalisation, localisation

Contexte

Le format OpenDocument conquiert le monde à grande vitesse. Dans un contexte multilingue, la maintenance et l'émission de documents commerciaux dans plusieurs langues donne une avance stratégique. L'idée est de combiner l'intéropérabilité du format OpenDocument avec un moteur de localisation (l10n) pour maintenir un document dans plusieurs langues.

Présentation du projet

La bibliothèque Python itools offre des outils de haut niveau autour des formats standards. Elle offre notamment un parser XML extensible pour supporter les formats de cette famille, et la gestion de l'Internationalisation (i18n) du code source et des données. Itools est un projet de logiciel libre publié sous licence GPL, supporté par une communauté internationale. Son évolution est très rapide et suit de près les avancées de Python. Les développements sont versionnés avec Git/Cogito, écrit pour le noyau Linux.

Objectifs

Votre rôle sera de combiner les capacités d'itools et du format OpenDocument pour aboutir à un gestionnaire de format OpenDocument Text (ODT), capable de reconnaître et d'extraire le texte, constituer des catalogues de traduction et reconstruire un document traduit à partir du document maître. Vous concevrez un schéma pour le format ODT. Ce schéma sera capable de distinguer les éléments de type "block" et "inline". Vous écrirez un script qui analysera un fichier ODT passé en paramètre et utilisera le schéma ODT pour générer un fichier au format PO. À partir du document maître et du fichier PO traduit, vous pourrez reconstruire un document ODT traduit qui conserve le style et la mise en page. Quand le document maître évolue, votre script sera capable de mettre à jour le fichier PO sans écraser les traductions existantes.

Méthode

Les développements se feront exclusivement en Python et suivis avec Git. Vous devrez vous intégrer dans la communauté en suivant le modèle de développement : mailing list, bugzilla, soumission de patchs, documentation... Votre contribution sera incluse dans itools et distribuée avec les prochaines versions.

Technologies

  • Python, XML, itools, OpenOffice.org
  • La connaissance de la programmation objet et les bases de XML sont requises. La connaissance du format OpenDocument n'est pas nécessaire.

Références

M1 ISIDIS

VLE : intégration d'outils statistiques - Eric Ramat, Gauthier Quesnel et David Versmisse

Etudiants : Vincent Degryck et Oliveri Michaël

Contexte

Virtual Laboratory Environment (VLE) est une plate-forme dite laboratoire virtuelle qui permet la construction de modèles et la simulation de modèles de systèmes complexes tels que les écosystèmes par exemple. VLE est développé au Laboratoire d'Informatique du Littoral (LIL) à Calais. Les sources du projet sont mis en ligne sur un serveur CVS (http://www.sourceforge.net/projects/vle) et un site Web est disponible pour les informations complémentaires (http://vle.univ-littoral.fr).

Objectifs

Le moteur de simulation de VLE gère une quantité très importante de données et nous avons besoin d'analyser, de représenter, ... ces données. Pour un applicatif complémentaire de VLE a été développé : avle. Un première version a été développé en Python/GTK et a été migré l'année dernière en C++/GTK. Cet outil est principalement basé sur un logiciel open-source de traitement de données nommé R.

Le projet a pour objectif  :

  • étudier les méthodes statistiques tels que ajustements, ACP, ...
  • augmenter les modes de représentation et les méthodes statistiques
    • écrire des scripts R
    • intégrer ces représentations dans avle

Réalisation d'un Pong en JAVA à 1 ou 2 joueurs - Cyril Fonlupt

Etudiants : Julien Coquelaere et Jean Michel Bernard

Le but du sujet est de réécrire un jeu de pong en JAVA à partir d'un code source d'applet existant. Le jeu de Pong est un des jeux les plus anciens en informatique et c'est une plate-forme de programmation intéressante pour l'intelligence artificielle. La première partie du projet consiste à adapter le code source d'une applet JAVA existante pour en faire une version exécutable classique. La seconde partie du projet consiste à modifier ce programme de manière à pouvoir facilement incorporer un joueur géré par l'ordinateur dont le code sera fourni. Par exemple, on pourra souhaiter "programmer" un joueur géré par l'ordinateur dont le déplacement est totalement aléatoire, ou qui se dirigera toujours vers les coins etc...

L'applet est visualisable sur le site suivant : http://www.serve.com/wizjd/java/pong/two_player_pong/two_player_pong.html

Développement d'une plateforme pour MEPULCO-UNIVERSITE - Bruno Warin et Claudine Toffolon

Etudiants : Anthony Clerbout et Thomas Pilon

Objet de la demande

Développer une plateforme support à la méthode d'encadrement de projet Mepulco-Université.

Contexte de la demande

Mepulco est un groupe de travail enseignement-recherche créé en 2002. Il travaille principalement sur les thèmes de l'ingénierie des besoins et la gestion des projets informatiques. Il a défini une méthode, Mepulco-Université, d'encadrement des projets étudiants. Il souhaite outiller cette méthode par une plateforme d'assistance. Cette plateforme aura trois buts :

  • mettre à disposition aux utilisateurs les documents de la méthode. Cette mise à disposition devra être administrable à distance et posséder des fonctions de gestion de contenu et de droits d'accés.
  • favoriser le travail collaboratif des membres. Le travail collaboratif doit prendre en compte la rédaction à plusieurs de documents et sera favoriser par des outils tels un Wiki, un forum, etc.
  • intégrer, conformément aux prescriptions de la méthode, un portail de suivi de projet. Un 'prototype' a été réalisé en 2005-2006 (visible à http://suivproj.free.fr/ ). Il a été développé dans le cadre du projet SuivProj-05 (http://suivproj05.free.fr/commun/accueil.php)

Pour obtenir une plateforme complète et opérationnelle, nous pensons qu'une bonne stratégie consistera à reprendre et adapter une plateforme libre de e-learning telle Moodle, Claroline, etc ou sinon un Content Mangement System (CMS) libre tels PostNuke, Joomla, Typo3, etc.

Travail à faire

Les étudiants devront :

  • étudier et modéliser quelques (trois à cinq) plateformes représentatives et en choisir une.
  • déployer et paramétrer (voir éventuellement intervenir si nécessaire dans la programmation) la plateforme choisie pour réaliser les deux premiers buts : mise à la disposition et le travail collaboratif.
  • intégrer à la plateforme un portail de suivi de projet. Il s'agira soit de finaliser le développement SuivProj-05 soit le reprogrammer (les grèves du CPE ont perturbés ce projet).

Les langages de développement utilisés seront : HTML, PHP/MySql et Javascript. Le projet sera encadré par Bruno Warin, maître de conférences informatique.

Résultats attendus

  • Concernant le logiciel
    • La plateforme souhaitée
    • La documentation
  • Concernant la gestion de projet
    • Un site Web permettant d'avoir accès à la vie du projet et à toute la documentation produite (voir sur http://mepulco.net par exemple lien Projets/Année 2003-2004/DocProj-04).
    • Un CD comprenant les programmes sources, la documentation technique du site au format Word, l'image du site Web de suivi du projet.

RoboWar - Jean-Christophe Soulié

Etudiants : Michaël Decorte et Jean Sorrant

Robo War est une arène où entre deux et six robots s'affrontent. L'arène est une grille carrée numérotés de 0 à 300 et les robots sont pilotés par des codes de type assembleur qui sont à développer; le but étant de créer le code le plus compact et efficace que possible, car tous les robots exécutent le même nombre d'instructions par seconde (une instruction chacun par chronon, l'unité de temps).

Chacun des robots possède une jauge d'énergie qui est utilisé pour toutes les actions: changement de direction, tire... Elle se recharge de 2 unités par tour pour un maximum de 100 ; elle peut-être négative. Mais aussi une jauge de dommage, initialisé à 100, qui indique le nombre de dégâts qu’il peut encore subir. Elle ne peut pas être rechargé mais il existe un bouclier qui absorbe une certaine quantité de dégâts, selon l’énergie dépensé lors de sa création. Celui-ci se décharge progressivement de 0,5 unités par chronon.

Chaque bot peut aussi accéder à des informations de son environnement, donné par le système par l’intermédiaire de registres en lecture. Il existe aussi des registres en écriture ou lecture/écriture, car c’est aussi par là que le bot interagi avec son environnement.

Après l'initialisation (déclaration de la vitesse initiale, préparation des interruptions... ), chaque bot exécute ses instructions parallèlement aux autres robots jusqu'à la fin du round, ou jusqu'à ce qu'il soit éliminé.

  • Un robot subit des dégâts s'il se fait touché par un projectile, s'il touche un mur ou s'il rentre en collision avec un autre robot.
  • Si un robot a sa jauge de dégâts qui tombe à zéro, le robot est éliminé.
  • Si un robot a sa jauge d'énergie qui tombe à zéro, il ne peut plus effectuer d'actions, ni bouger jusqu'à ce que sa jauge se recharge au dessus de 0.
  • Certaines actions (changer de direction, tirer un projectile...) ont un coup associé en énergie, et d'autres non (discuter sur le channe d'équipe, viser, faire des calculs...).
  • Toutes les actions prennent au moins un chronon (sauf jouer un son, changer d'icône...).
  • Un robot marque 1 point par frag et 1 point s'il survie.
  • Il est possible de donner une limite en chronons aux rounds.
  • Dans le mode tournoi, un robot rencontre tous ses adversaires une fois, et le classement à lieu sur la somme des scores obtenus.

Le RoboTalk utilise des opérations élémentaires, des instructions de registre et de pile, des interruptions qui sont levées dans leur ordre d'apparition, ainsi que des registres spécifiques permettant l’échange d’informations entre le système et le bot. Il est basé sur la notation Polonaise inversée.

  • opérations arithmétiques classiques : +, -, *, /, cos, sin, mod...
  • instructions de branchement et de test : if, ife, jump, call…
  • instructions de registre et de pile : store, duplicate, drop...
  • interruptions : setint, setparam, inton…
  • registres : aim (angle de visée, en lecture/écriture), speedx (vitesse sur l’axe des X, en lecture/écriture), fire (puissance du tire, en écriture), collision (détection de collision, en lecture)…

Une première version a déjà été réalisée par des étudiants de m1, l'année dernière. Le but de ce projet est, dans un premier temps, de réaliser une analyse critique de la première version et, dans un deuxième temps, en fonction des conclusions, soit reprendre le projet, soit ajouter un certain nombre de fonctionnalités.

Langage

  • Java ou C++

Constructeur de Cartes de sites Web - Henri Basson

Etudiants : David Ledein et Jean Botten

Analyseur des sites Web - Henri Basson

Etudiants : Stevens Ranson et Olivier Vanneste

Editeur et analyseur de rapports PDF - Henri Basson

Etudiants : Julien Ruffin et Jonathan Strobbe

Analyseur d’aide à la documentation et la compréhension d’une application java - Henri Basson

Etudiantes : Florence Blocklet et Céline Tulak

L3 Informatique

Utilisation des Algortihmes Génétiques (AG) pour créer un adversaire dans un jeu de stratégie - Denis Robilliard et Cyril Fonlupt

Etudiants : Cocquerel - Deboom - Frappé - Vanlerberghe

Le but de ce projet est de réaliser un adversaire dans un jeu de stratégie très simple. Le jeu de base pour ce projet est un jeu de diplomatie qui répond à des ordres simples du type BOUGER ARMEE 1 ...

On utilisera la plateforme JAVA ecj (http://cs.gmu.edu/~eclab/projects/ecj/) qui est une plateforme générique d'algorithmes génétiques écrite en Java. Il faudra dans un premier temps se familiariser avec les algorithmes génétiques, les programmer par l'intermédiaire de la plateforme ecj et intégrer le résultat dans le jeu.

Apprentissage par réseau de neurones - Denis Robilliard et Virginie Poty

Etudiants : Foulon - Rocchia

Mots clés

  • Intelligence Artificielle, Apprentissage Artificiel, Océanographie, Environnement

Objectifs

Le projet consiste à détecter des structures océaniques par réseau de neurones artificiels. Les données sont au format NetCDF (aisément accessible via une librairie) et sont le résultat de simulations hydrodynamiques du golfe de Gascogne. Elles se décomposent en des matrices de vecteurs de courants, de salinité, de température et de profils bathymétriques, ainsi qu'une matrice de valeur de classification binaire (dans/hors structure). On pourra utiliser la librairie Joone pour implanter les RNA en Java. Ce travail s'inscrit dans une collaboration entre le LIL et L'Ifremer et vise à caractériser les milieux favorables à la reproduction des petits poissons pélagiques, comme l'anchois.

Outils

  • Java, librairies Joone et NetCDF

VLE : intégration d'outils statistiques - Eric Ramat, Gauthier Quesnel et David Versmisse

Etudiantes : Casier - Dupont

Mots-clés

  • statistiques, script R

Contexte

Virtual Laboratory Environment (VLE) est une plate-forme dite laboratoire virtuelle qui permet la construction de modèles et la simulation de modèles de systèmes complexes tels que les écosystèmes par exemple. VLE est développé au Laboratoire d'Informatique du Littoral (LIL) à Calais. Les sources du projet sont mis en ligne sur un serveur CVS (http://www.sourceforge.net/projects/vle) et un site Web est disponible pour les informations complémentaires (http://vle.univ-littoral.fr).

Objectifs

Le moteur de simulation de VLE gère une quantité très importante de données et nous avons besoin d'analyser, de représenter, ... ces données. Pour un applicatif complémentaire de VLE a été développé : avle. Un première version a été développé en Python/GTK et a été migré l'année dernière en C++/GTK. Cet outil est principalement basé sur un logiciel open-source de traitement de données nommé R.

Le projet a pour objectif  :

  • étudier les méthodes statistiques tels que ajustements, ACP, ...
  • augmenter les modes de représentation et les méthodes statistiques
    • écrire des scripts R
    • intégrer ces représentations dans avle

Interface web pour la visualisation de simulations - Eric Ramat et Gauthier Quesnel

Etudiants : Ansel - Heroguer - Pagnerre - Magnier - Antonini

Mots clés

  • Java, réseaux, XML

Contexte

Virtual Laboratory Environment (VLE) est une plate-forme dite laboratoire virtuelle qui permet la construction de modèles et la simulation de modèles de systèmes complexes tels que les écosystèmes par exemple. VLE est développé au Laboratoire d'Informatique du Littoral (LIL) à Calais. Les sources du projet sont mis en ligne sur un serveur CVS (http://www.sourceforge.net/projects/vle) et un site Web est disponible pour les informations complémentaires (http://vle.univ-littoral.fr).

Objectifs

Le moteur de simulation et des plugins de visualisation des simulations existent et sont écrits en C++. Le but du projet est de proposer une alternative aux plugins C++ en développant des versions Java sous forme d'applets. La connexion entre l'applet de visualisation et le moteur de simulation est réalisée à l'aide de sockets et de messages transportant les données à représenter. Ces données sont en XML.

Tâches

  • étudier le code C++/GTK de 2 plugins de visualisation : CAView (automates cellulaires) et visualisation de déplacements en 2D.
  • étudier le protocole entre le simulateur et l'applet : socket + XML
  • écriture de l'applet graphique
  • écriture de d'autres applets de visualisation

ScolariteNet : développement de fonctionnalités complémentaires - Eric Ramat

Etudiants : Poulain - Glasset - Renaut - Luguet

Projet pour 3 binômes

Mots-clés

  • Technologies Web, bases de données, interface Web dynamique

Contexte

Depuis cinq ans, nous développons une application de gestion d'une scolarité d'une université. Cette application est développée autour d’un serveur Web et d’une base de données SQL (MySQL, par exemple). Les sources sont disponibles via un serveur CVS (gestion des versions) sur http://adullact.net/projects/scolaritenet/, une version de démonstration est disponible sur http://scolaritenet.free.fr et vos emplois du temps sont réalisés grâce à cet outil.

Les fonctions assurées par la dernière version sont les suivantes :

  • Gestion sécurisée des accès via des sessions
  • Différents modes de travail (administrateur, gestionnaire, professeur, étudiant …)
  • Gestion des utilisateurs, des enseignants, des étudiants, des promotions, des groupes, des enseignements, des calendriers de vacances et jours fériés …
  • Planification des enseignements (différents modes) et gestion des modifications
  • Consultation des emplois du temps via Internet
  • Construction automatique de documents administratifs pour les enseignants

Objectifs

  • Installation : créér une procédure d'installation. Certains éléments doivent être paramétrable.
  • Directeur de département :
    • valider les scripts actuels
  • Salle :
    • permettre aux enseignants d'indiquer quel type de salle ou quelles salles il aimerait ou qu'ils doivent avoir pour leur enseignement
    • valider l'affichage des emplois du temps par salle
    • planifier autre chose qu'un cours dans une salle
  • Enseignant :
    • une page "Mon profil" avec possibilité de modifier tout sauf nom et prénom
    • la validation de la fin de son service
    • la déclaration (ou la validation) de l'encadrement de projets et stages.
  • Projets et stages : développer un module de gestion des stages et des projets.
  • Groupe virtuel : Je pense qu'il faut gére les groupes virtuels comme des dépendances entre les diplômes ou options ou groupes. La table dépendance indiquerait que si quelque chose est planifié pour un groupe alors les groupes dépendants de ce dernier doivent subir la même chose. Je pense que ça simplifie les choses.
  • Affichage des emplois du temps : les infos affichées dans les créneaux horaires devraient être spécialisée ... à revoir en fonction du type de login.
  • Documents PDF : Génération des certains documents en pdf : guide des études, trombinoscopes, fiche de service, ...
  • un binôme s'intéressera exclusivement à la réécriture du script de placement des enseignants dans la semaine à l'aide de Ajax.

Langages

Aide à la relecture de documents numérisés - Pierre Collet

Etudiants : Fabianski - Wisniewski

Mots-clés

  • Livres en domaine public, projet Gutemberg, modèles probabilistes, relecture automatisée.

Présentation du projet

Bill Tozier est impliqué dans le cadre de Distributed Proofreaders, une association bénévole américaine, liée au Project Gutemberg, qui scanne puis numérise des livres pour les mettre en ligne. Malheureusement, la reconnaissance optique de caractères fait parfois (souvent ?) des erreurs, ce qui rend les textes scannés inutilisables sans relecture.

Actuellement, la relecture est distribuée entre bénévoles, qui se logguent sur le site de DP, récupèrent quelques pages à relire, notent les coquilles, puis rendent leur travail.

Ce travail est fastidieux, et le but de ce projet est de donner un petit coup de main automatisé : une langue est très strictement réie par des règles (grammaticales, aurtograffiques, ...) ce qui signifie, qu'il sera extrêmement improbable de trouver le mot xxfgh dans un texte de Victor Hugo.

L'idée est donc de créer une petite moulinette utilisant une méthode probabiliste dont le but est de souligner les bizarreries trouvées dans le texte. C'est donc une aide à la relecture qui est proposée dans le cadre de DP.

Ce stage ne nécessite pas de connaissances particulières en mathématiques ni en statistiques. En revanche, les étudiants doivent être bons en programmation, car une implémentation brutale utilisera trop de mémoire et de temps machine pour être utilisable.

En revanche, une implémentation subtile devrait permettre d'offrir un outil utile (le moteur principal devrait tenir sur une ou deux pages dans un langage implémentant correctement des tableaux associatifs).

Outil de gestion à développer sous windev 9.0 - Yohann Prévost

Etudiantes : Oudoire - Descamps

Vous réaliserez une analyse complète MCD,MLD d'un cahier des charges existant... Suite à cette analyse vous programmerez du requêtage, des formulaires et des états. L'applicatif doit permettre de migrer ces éléments vers le web en utilisant les fonctions WINDEV (logiciel N°1 en France). Analyse, développement, rédaction de compte rendu de réunion, ce projet vous donnera des éléments fondamentaux concernant la gestion de projet.

Interface de site web dynamique sous webdev 9.0 ou PHP/MYSQL ou .NET - Yohann Prévost

Etudiants : Decoopman - Herdier

Vous développerez une interface utilisateur pour administrer un site web dynamique existant. Sur ce projet, vous devrez analyser l'existant pour apporter une plus value au projet. Annuaire, calendrier, zone de téléchargement dynamique, intégration de module complémentaire web seront au programme du développement...

Développement d’un site Web pour la collecte de données sur les besoins en compétences techniques des acteurs économiques régionaux - Henri Basson

Etudiants : Kherbouch - Mokrane

Site Web pour les animations festives dans une région - Henri Basson

Etudiants : Herbaut - Cadart

Site Web pour les manifestations sportives dans une région - Henri Basson

Etudiants : Parmentier - Courquin

Site Web pour pour la vie étudiante dans une ville - Henri Basson

Etudiants : Zhang - Zhao

Extension d’un module PHP de gestion des choix des projets étudiants - Grégory Bourguin

Etudiants : Yazit - Soueidan

Il s’agit de parfaire et éventuellement d’intégrer à la plateforme existante un module de gestion des projets des étudiants, qui a commencé à être développé l’an dernier. Le rapport et les sources sont disponibles.

Module de Forum Flash/PHP/MySql - Grégory Bourguin

Etudiants : Reynout - Vanbealinghem

Tout est dans le titre. Il s’agit d’intégrer les 3 technologies pour créer un client de forum en Flash, connecté à un serveur PHP/MySql pour e partage et la persistance des messages.


Codage d'un solveur de fluides - Michel Leblond

Etudiant : Huang et Demilly

Dans le cadre de recherche sur la simulation de flammes, nous utilisons une partie de code dédiée à la résolution des équations de la dynamique des fluides. Basé sur des méthodes de résolution de systèmes d'équations linéaires, ce solveur est écrit en C++. Nous souhaitons améliorer ses performances en profitant des fonctionnalités SIMD existantes sur les processeurs récents (routines SSE) et sur les cartes graphiques programmables actuelles (GPU).

Ce sujet a donc pour objectif de coder ce solveur sous deux formes :

  • en C++ avec les fonctions SSE disponibles sur les processeurs Intel ;
  • en Cg (C for Graphics) pour une utilisation sur carte graphique programmable.

Aucune connaissance spécifique (graphique, mathématiques) n'est requise pour ce projet. D'autre part, les routines SSE et le langage CG sont appréhendables facilement.