Projets d'année 2001-2002 : dominante PROGRAMMATION
proposés par Emmanuel Chailloux
version du 7 mai 2002 :
-
les nouveaux sujets sont en fin de page
- les sujets avec participants sont déjà pris
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 :
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 Développement d'un Plug-in O'Caml pour navigateur Web
participants : Pejcic Nikola + Taguet Aurélie + Zinovieff Nicolas
Le but de ce projet est d'embarquer un toplevel O'Caml dans un navigateur Web
dans le but de construire des applets.
On découpe ce projet en 3 phases :
grandes phases :
-
un état de l'art sur l'écriture de plug-ins pour les navigateurs Web
- la construction d'un toplevel O'Caml embarqué
- la réalisation d'applets
Etat de l'art
Un premier travail consiste à recenser les différents biblioth`eques/modèles pour les plug-ins. On s'intéresse aux plus courants : Explorer, Communicateur et java plug-in :
Construction d'un toplevel embarqué
De cet état de l'art, on choisit le type de modèle en favorisant
la diffusion (quel navigateur pour quel système), la facilité d'implantation du toplevel embarqué et sa gestion d'une fenêtre graphique.
Toplevel embarqué
Pour l'interfaçage d'OCAML avec d'autres langages :
Fenêtre graphique
Pour la gestion de la fenêtre graphique de la bliothèque Graphics,
la gestion peut soit etre effectuée directement dans le nouveau toplevel
en redéfinissant la partie C de Graphics, soit en utilisant un plug-in Tk dans le navigateur, soit en utilisant Java si le plug-in O'Caml est un Java plug-in ou si O'Caml utilise une interface avec Java (voir prochain sujet).
Sécurité
Une applet correspond à un programme source chargé au toplevel (comme avec la directive #use
). Il n'y a donc pas de problème sur la sécurité du byte-code engendré dans la mesure où le source d'uen applet est compilé à chaque chargement. Par contre il est nécessaire d'enlever un certain nombre de modules au toplevel pour éviter l'ecriture locale et autres lancements de programme (voir implantation de MMM : http://pauillac.inria.fr/~rouaix/mmm/).
Réalisation d'applets
Selon le nombre de participants à ce projet, il est demandé de développer des applets testant l'implantation et l'intérêt d'un tel outil.
-
Connaissances préalables : langages CAML, Java
- Documents : voir liens dans la présentation
- Nombre d'étudiants : 2, ou 3 étudiants.
1.2 Interface O'Caml/Java
participants : Perucca Sylvain + Schuck Ryan
Le but de ce projet est de définir et d'implanter une interface
entre les langages O'Caml et Java.
Chacun de ces deux langages possède une interface avec C (JNI pour Java
et extern pour O'Caml) d'où la possibilité de les faire communiquer
avec C.
Il existe déjà une interface de bas niveau entre
O'Caml
et Java : http://caml.inria.fr/archives/200107/msg00009.html.
Le projet se découpe en trois parties :
-
test de l'interface O'caml/Java existante (camljava);
- définition d'une interface de plus haut niveau (classes)
avec liens structurels entre classes (extension du langage ou mini-IDL);
- réalisation de l'interface entre O'Caml et une API conséquence de JAva comme AWT.
-
Connaissances préalables : langages CAML, Java, C
- Documents : voir liens dans la présentation
- Nombre d'étudiants : 2 étudiants.
1.3 Mondes virtuels multi-utilisateurs programmables en O'Caml
projet non attribué
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 :
-
un état de l'art des moteurs de RV et de leurs APIs;
- la réalisation d'une API O'CAML;
- 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 :
-
moteur 3D
- interface 2D
- 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.
-
Connaissances préalables : langage OCAML, programmation TCP/IP, la connaissance de openGL serait un plus;
- Documents : voir ci-dessus
- Nombre d'étudiants : 2 ou 3 étudiants dont 1 en spécialité algorithmique graphique
1.4 Composition de contrats financiers
participants : Ferri Alexandre + Tales Wildoph
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 :
-
implantation en O'Caml de la bibliothèque
- réalisation d'une application utilisant cette bibliothèque
1.5 Portage de la bibliothèque Graphics sous macosX
participant : Douillet Guillaume
La bibliothèque Graphics d'Objective Caml n'est pas portée sous
macosX. Pour s'en servir
il est donc nécessaire d'ouvrir un serveur X ce qui est dommage vu la qualité de l'interface Aquua.
Il est demandé d'implanter en C/Objective-C les primitives de base de cette
bibliothèque et de comparer cette implantation avec la version pour
X-Window tournant sur macosX.
Une application intéressante pour tester la qualité de l'implantation est
le logiciel de présentation
ActiveDVI.
-
Connaissances préalables : langages CAML, C, Objets
- Documents :
- Nombre d'étudiants : 1 ou 2 étudiants.
1.6 Bibliotheque pour les jeux reseau a' plusieurs joueurs en O'Caml
participant : Roussel Grégoire
Cette annee plusieurs projets du cours de maitrise POD demandaient de
construire des serveurs de jeux a' plusieurs joueurs (Cluedo, Monopoly,
Risk, ...). Ce projet demande de factoriser le travail effectue' en
développant une bibliotheque facilement réutilisable (foncteurs,
classes, ...) pour le développement de ce type d'applications :
-
attente de tous les joueurs
- début du jeu
- gestion des tours (y compris pour les jeux où l'on rejoue)
- fin du jeu
dans le but de n'écrire que la partie spécifique à chaque jeu.
Une fois cette bibliotheque implantée, vous la testerez sur au moins un
jeu tire' des projets de maitrise. Ces projets vous seront fournis.
Vous pouvez vous inspirer des exemples fournis sur la page POD :
-
Connaissances préalables : langage O'Caml
- Documents :
- Nombre d'étudiants : 1 ou 2 étudiants.
1.7 interface 2D en openGL
participant : Lucian Bogoin
L'idée de ce projet est de définir une interface 2D basée sur openGL.
Il existe une bibliothèque
O'Caml avec openGL appelée lablGL :
lablgl
mais elle utilise Tk pour son interface 2D. Le but est de s'en affranchir.
Il est demandé d'interfacer O'Caml soit directement avec openGL
à la manière de lablGL), soit
à travers une API 2D utilisant openGL.
Cette interface doit au moins répondre aux fonctionalités
de la bibliothèque graphics d'O'Caml,
mais elle peut aussi apportée d'autres fonctionalités.
-
Connaissances préalables : langage O'Caml, openGL
- Documents :
- Nombre d'étudiants : 1 ou 2 étudiants.
1.8 réorganisation de Jaml
participant : Anthony Michaud
Jaml est une interface de la bibliothèque graphics d'Ocaml avec une applet
Java.
La version actuelle de Jaml permet de lancer une applet Java locale pour communiquer
avec une application O'Caml qui utilise la
bibliothèque graphics. Chaque ordre graphique
O'Caml est considéré comme un ordre envoyé à l'applet Java qui
l'exécute. De même un
événement Java est envoyé à l'application O'Caml.
Un protocole est défini pour les deux
sens de la communication.
Le projet consiste à réorganiser cette bibliothèque pour pouvoir :
-
utiliser ce mécanisme pour les systèmes oû graphics n'est pas
porté mais oû AWT existe
- lancer une applet à travers un navigateur et communiquer avec l'application O'Caml
distante avec tous les gages de sécurité.
Les sources actuelles de Jaml seront fournies.
-
Connaissances préalables : langages CAML, Java
- Documents : voir liens dans la présentation
- Nombre d'étudiants : 1 étudiant.
1.9 écriture de modèles de conception en O'Caml
participant : Mokrani Bouzid
Le livre ``Design Patterns'' de Gamma, Heml, Johnson, Vlissides
offre une collection de ``modèles de conception''
pour la programmation objet (inspirés de C++ et
Smalltalk). On trouve des versions Java de ces modèles dans de nombreux cours de
POO ou de Génie logiciel comme à l'URL suivante :
http://dept-info.labri.u-bordeaux.fr/ griffaul/Enseignement/POO/
Le projet consiste à classifier ces modèles en fonction du typage statique
à la O'Caml et à
écrire les exemples tirés du livre précédents pour un certain nombre de
modèles dont
en particulier : le modèle observateur, visiteur et l'abstract factory.
Dans les cas oû le downcast objet est nécessaire, il sera
possible d'utiliser l'extension
cocaml d'O'Caml dont on trouvera la description C l'URL suivante :
http://www.pps.jussieu.fr/ emmanuel/Public/Dev/coca-ml/
mais il faudra justifier l'emploi du downcast.
-
Connaissances préalables : langages CAML, Java
- Documents : voir liens dans la présentation
- Nombre d'étudiants : 1 étudiant.
Ce document a été traduit de LATEX par
HEVEA.