Projets d'année 1999-2000 : 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.
Vous trouverez d'autres propositions de projets sur la page de Christian Queinnec :
http://youpou.lip6.fr/queinnec/WWW/cours/Projets.html.
1 Extensions d'OCAML
Ces différents sujets propose deux types d'extensions à OCAML. Les 3 premiers sont des
extensions sous forme de bibliothèques et les 3 derniers nécessitent
de modifier les sources du langage, et donc de s'y plonger.
1.1 Interface graphique O'CAML via une applet Java
Ce projet consiste à pouvoir interagir graphiquement entre une application O'CAML
et une applet Java. Il reprend en cela les projets de module sur les servlets en O'CAML et l'interface
entre le module Graphics d'O'CAML et une applet.
La première tache est de réécrire la bibliothèque Graphics d'O'CAML pour envoyer
selon un certain protocole texte les affichages graphiques de l'application dans l'applet Java.
De même les événements reçus dans l'applet devront être envoyés à l'application O'CAML. Les
principales difficultés proviennent de la gestion d'événements et des bitmaps. D'autre part,
il est nécessaire d'écrire un mini-serveur HTTP (servlet) pour le téléchargement de l'applet avec l'information
sur les prises de communication. Différents threads O'CAML peuvent alors communiquer avec l'Applet.
Des jeux de test seront fournis.
D'autre part pour pouvoir profiter des composants de l'AWT, il est demandé de faire une proposition
d'intégration en O'CAML des composants Java. Le choix entre modules ou objets est libre mais devra être justifié.
Une implantation montrera la pertinence de la proposition.
-
Connaissances préalables : langages OCAML, Java, HTML, HTTP
- Documents : biliothèque graphics d'OCAML, l'AWT ou Swing de Java, protocole HTTP
- Nombre d'étudiants : 2 étudiants
1.2 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.
-
Connaissances préalables : langages OCAML
- Documents : .C. Foisy and E. Chailloux.
Caml Flight: a portable SPMD extension of ML for distributed memory multiprocessors. In A. W. Bohm and J. T. Feo, editors, Workshop on High Performance Functionnal Computing, Denver, Colorado, April 1995. Lawrence Livermore National Laboratory, USA.
- Nombre d'étudiants : 2 étudiants
1.3 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.
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 : 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é tout d'abord
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.
-
Connaissances préalables : langages CAML, compilation
- Documents : Tutorial SCOL, API 2D SCOL
http://www.cryo-networks.com
- Nombre d'étudiants : 2 étudiants.
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 Java
3.1 Mise en oeuvre d'une application Corba
Le but de ce projet est d'adapter un des projets de simulation d'un monde de robots (Epervier ou Poules/Renards/Vipères)
au monde Corba et de le comparer à une version RMI.
Le serveur contient le monde où les robots évoluent. Chaque robot est un processus différent qui invoque le
serveur pour se déplacer. Un client graphique permet la visualition du monde et des robots.
Il est demandé une version RMI et une version Corba en essayant de factoriser au maximum le code.
La comparaison s'intéressera aux performances et à la facilité de réalisation.
-
Connaissances préalables : langage Java, RMI
- Documents : http://www.omg.org
- Nombre d'étudiants : 1 ou 2 étudiants.
Ce document a été traduit de LATEX par
HEVEA.