Projets d'année 2000-2001 : dominante PROGRAMMATION

Vous trouverez ci-joint la liste de différents projets d'année de maîtrise illustrant les concepts de programmation du cours POD. Ces projets sont proposés en règle générale pour deux étudiants mais peuvent être adaptés selon le nombre de participants. Plusieurs documentations en ligne sont indiquées à lecture des étudiants désirant étudier un sujet. Pour d'autres références ou indications contacter par mél les enseignants du module.

Certains projets peuvent être choisis sur 2 spécialités (1 étudiant en spécialité ``programmation'' et 1 étudiant en IA ou algorithmique graphique).

Vous trouverez d'autres propositions de projets sur les pages de :
Pascal Manoury : http://www.pps.jussieu.fr/~eleph/
Marc Pouzet : http://www-spi.lip6.fr/~pouzet/
Christian Queinnec : http://youpou.lip6.fr/queinnec/Teaching/projects.html


1   Extensions et applications en O'CAML

Ces différents sujets propose de réaliser des applications et des extensions en Objective Caml.

1.1   OCAML Flight

CAML Flight est une extension data-paralèlle de caml-light. Un même programme tourne sur différentes machines. Chaque machine possède un numéro unique. Chaque programme peut demander, dans une section synchronisée (SYNC( expr )), un calcul distant (GET(num,expr)) où num est le numéro d'une machine et expr l'expression à calculer. L'évaluation de l'expression ne peut se faire que si les deux machines sont dans le même bloc de synchronisation. Il n'y a pas d'imbrication de blocs de synchronisation.

Le but de ce projet est de modifier l'implantation en l'adaptant à OCAML et en utilisant les bibliothèques Marshalling et Thread pour simplifier l'implantation, en particulier au niveau du protocole. L'extension de syntaxe introduite peut être réalisée avec l'outil camlp4 (http://caml.inria.fr/camlp4/). Quand une machine reçoit une requète, elle lance un nouveau processus pour y répondre. Le calcul s'effectue alors dans l'environnement du bloc de synchronisation.

Pour que la sortie d'un bloc de synchronisation ne soit pas bloquante, une amélioration possible est de pouvoir conserver plusieurs environnements de blocs de synchronisation pour qu'une machine puisse poursuivre son calcul tout en répondant à des requêtes de blocs antérieurs.

1.2   Robots footballeurs

La ``Robocup'' est un tournoi de robots footballeurs de différentes catégories. Une de ces catégories est une simulation qui fait s'opposer des programmes sur le réseau à travers un serveur de jeu appelé ``RoboCup Official Soccer Server''. Toutes les communications et toutes les actions doivent passer par ce serveur.

Il existe déjà un programme O'CAML faisant joueur une équipe de chameaux pour une ancienne version du sevreur. Ce programme comporte une partie d'implantation du protocole et une stratégie simple pour une équipe O'CAML.

Le but de ce projet est d'une part d'adapter cette bibliothèque de communication pour la dernière version du serveur ``RoboCup Official Soccer Server'' et d'autre part de proposer une stratégie de jeux pour ses joueurs. Cette stratégie met en oeuvre la coopération entre les robots, sachant que l'information du jeu de chaque robot est partielle. Cette stratégie sera confrontée à des programmes existants.

1.3   Mondes virtuels multi-utilisateurs programmables en O'Caml

Le but de ce projet est de fournir une API O'CAML portable pour la programmation de mondes virtuels multi-utilisateurs et multi-robots. Une première application sera un salon de discussions.

Ce projet comporte 3 phases :
  1. un état de l'art des moteurs de RV et de leurs APIs;
  2. la réalisation d'une API O'CAML;
  3. la réalisation d'une application utilisant cette API.
Etat de l'art
Un premier travail sera d'effectuer un état de l'art des moteurs de réalité virtuelle et de leurs APIs. On s'intéressera particulièrement aux liens suivants : Les modèles 3D et surtout les modèles de communication diffèrent fortement dans ces différentes <<communautés virtuelles>>. On s'attachera aux propositions <<portables>> et facilement interfaçables avec le langage O'CAML via C. On priviligera l'aproche <<langage de communications>> à la SCOL plutôt que l'approche description de scènes animées à la VRML.

Réalisation d'une API
On peut découper cette API en trois parties :
  1. moteur 3D
  2. interface 2D
  3. communications
Il y aura donc deux possibilités : soit de s'interfacer avec une API existante satisfaisante, soit d'en construire une à partir de couches de plus bas niveau.

Les couches basses 3D sont le plus souvent baties sur openGL. Il existe déjà une interface entre openGL et O'CAML, appelée lablgl.

La partie interface 2D risque de ne pas être portable. Dans ce cas, il sera nécessaire de bien la spécifier pour pouvoir l'adapter à d'autres systèles de fenetrage.

La partie communication peut être construite à partir des briques de base de la bibliothèque Unix d'O'CAML, en particulier par les sockets IP et les threads.

Réalisation d'une application
On décrira un salon de discussions entre utilisateurs. Le serveur gèrera les connexions des différents utilisateurs représentés sous forme d'avatars. La navigation à l'intérieur de la scène tiendra compte des objets et des collisions possibles. Il pourra avoir plusieurs salons avec possibilité de passage de l'un à l'autre. Selon la richesse de l'interface la communication textuelle pourra être sonore.

1.4   Composition de contrats financiers

Ce projet se propose d'implanter la bibliothèque de combinateurs proposée dans l'article ``Composing Contracts: an Adventure in Financial Engineering.'' de Peyton Jones, J-M Eber et Julian Seward (ICFP2000) téléchargeable à l'URL suivante : http://citeseer.nj.nec.com/300237.html.

Ce projet se déroulera en deux temps :

2   Programmation SCOL

Le langage SCOL est un langage de communication pour les mondes virtuels. Il est développé par la socièté CRYO-NETWORKS (site WWW : http://www.cryo-networks.com). C'est un langage fonctionnel statiquement typé, polymorphe paramétrique (à la Caml), muni de nombreuses bibliothèques (2D, 3D, Sons, Communications, ...) dont principalement un moteur 3D efficace. Il est compilé vers du code-octet et possède un récupérateur automatique de mémoire, dit Glaneur de Cellules. Il résoud élégament les problèmes de sécurité en communiquant les sources des progammes à télécharger et les recompile rapidement sur place. Enfin il permet son utilisation en mode connecté ou non.

La technologie SCOL permet de définir des modules distribués (DMS) dans lesquels sont spécifiés les parties client et serveur de l'application distribuée.

2.1   Interprétation et compilation du langage SCOL

Le projet de module ``Langages Fonctionnels'' du DESS GLA (http://www-gla.ecoledoc.lip6.fr) consistait cette année, pour un groupe de huit étudiants, en l'implantation en O'CAML d'un interprète et d'un compilateur du langage SCOL.

Le but de ce projet est de finaliser et d'évaluer cette implantation. Pour cela il est demandé d'intégrer l'ensemble du langage et d'augmenter la bibliothèque d'exécution pour comparer les performances de cette réalisation avec le compilateur existant. Un deuxième travail est d'ajouter un mode debug permettant de tracer l'exécution d'un programme

2.2   Pavage périodique du plan et création dynamique de textures

Ce projet s'inspire du projet de l'option informatique du DEUG MIAS (2ème année).

On appelle pavage le remplissage d'une surface par des copies non chevauchante d'un motif. Les différentes copies du motif sont obtenues en appliquant une isométrie (transformation qui conserve les distances entre les points), comme par exemple une translation. Une symétrie est une isométrie laissant invariant une figure géométrique. L'ensemble des symétries d'une figure forme un groupe de symétries. Chaque groupe possède des générateurs qui par composition permettent de construire toutes les symétries du groupe.

On obtient un pavage par la donnée d'un motif et des générateurs d'un groupe de symétrie. En composant les générateurs jusqu'à une certaine profondeur, on obtient les transformations à appliquer au motif.

Le but de ce projet est d''une part d'écrire la bibliothèque SCOL de création de tels pavages à partir d'un motif donné et des générateurs d'un groupe de symétrie, et d'autre part d'appliquer les pavages obtenus sur des surfaces de scènes 3D, comme le papier peint d'une pièce. Une extension possible est de laisser la possibilité

3   Applications réseau

Ces applications laissent le langage d'implantation libre.

3.1   Key+words

à préciser!!!




Ce document a été traduit de LATEX par HEVEA.