next up previous
Up: No Title Previous: No Title

Sous-sections

Présentation du cours




Objectifs :Ce cours présente les bases de la programmation objet et de la programmation concurrente et distribuée puis forme à la programmation d'applications distribuées sur Internet. Exposé du plan du cours. Brève description du langage Caml.

Equipe pédagogique, plan du cours et bibliographie

Equipe pédagogique

Envoyer un courrier à l'équipe pédagogique : alias-POD

Plan du cours

Ce plan est donné à titre indicatif. Il est fort probable que de nombreux changements auront lieu en cours d'année. Ce cours tient compte du planning du cours "Programmation" obligatoire de la maîtrise, en particulier pour sa partie programmation objet en Java qui débutera début novembre. Ce cours s'articule sur trois axes : la programmation Objet (O'CAML et Java, typage, comparaison avec la programmation modulaire), la programmation parallèle (modèles à mémoire partagée et à mémoire distribuée) et sur la distribution d'applications ( code mobile, sécurité et représentation).

1.
this ou self
2.
Modules paramétrés en Objective Caml (O'Caml), étude du module alpha-beta, application à la programmation de jeux à deux joueurs et à la réalisation de script CGI.
3.
Objets en O'Caml : classes et instances, héritage, classe abstraite.
4.
Objets en O'Caml : héritage multiple, inférence de types et typage des objets.
5.
Processus légers (threads) : modèle de programmation parallèle avec mémoire partagée, concurrence, section critique, exclusion mutuelle, sémaphore.
6.
Modèle client/serveur : en utilisant la bibliothèque Unix d'O'CAML (sockets, select,...)
7.
Présentation du langage Java : comparaison avec O'Caml.
8.
Construction d'applets (petites applications graphiques), bibliothèques Java, programmation graphiques.
9.
Application distribuée (programmation parallèle avec mémoire distribuée) en Java , modèle client/serveur, distribution de données, distribution d'objets (CORBA).
10.
Distribution d'applications, code mobile, accès URL.
11.
Sécurité du code mobile, typage à la O'Caml, vérification de types au chargement du code, étude et comparaison des navigateurs NetScape et MMM.
12.
programmation graphique en 2D et 3D : langage de la réalité virtuelle (VRML), avec VrcaML, Java3D et Scol .

Ce cours est accessible à l'adresse suivante : http://www-spi.lip6.fr/~emmanuel/Public/enseignement/pod_98_index.html Il gagne à être consulté via un navigateur pour pouvoir suivre les lines indiqués.

Bibliographie

La bibliographie donnée ici est incomplète. Elle augmentera au fur et à mesure de l'avancement des cours. Les deux premiers ouvrages seront utilisés pendant tout le semestre.

Les documentations des logiciels du domaine public utilisés se trouvent sur le serveur des étudiants.

Pour une mise à niveau sur le langage Caml :

Enfin les deux derniers ouvrages comportent de bonnes présentations du langage HTML. D'autres références sur HTML suivent.

Evaluation

L'évaluation consistera en une partie projet (40%) et une partie écrit (60%). La partie projet comprendra un projet en O'Caml sur un problème de concurrence et de client/serveur et un projet Java sur un problème distribué. Chaque projet comptera pour 20% de la note finale. La partie écrit sera un examen individuel sur table.

Horaires et salles

Concurrence et Distribution

On abordera dans ce cours les deux formes principales de programmation parallèle que sont les modèles à mémoire partagée ou à mémoire distribuée. Dans le premier cas, on imagine aisément les problèmes que posent l'accès concurrent de différents processus dans une zone mémoire commune, en particulier quand il y a modification physique de celle-ci. Dans le deuxième cas, la difficulté provient des communications de valeurs entre les processus. Il y a les risques, soit d'attendre indéfiniment en réception, soit de perdre de l'information. De plus la représentation des valeurs communiquées doit être bien établie sous peine d'incompréhension entre les processus. D'où la nécessité de décrire des protocoles de communication et/ou d'établir des formats d'échange de données.

Enfin, il faut noter que ce type de programmation permet d'exprimer les algorithmes d'une nouvelle manière, apportant un nouveau niveau d'abstraction offrant ainsi une expressivité plus importante.

On utilisera les bibliothèques de processus légers (threads) des langages O'Caml et Java pour illustrer la concurrence, et le réseau Internet pour les concepts de distribution.


next up previous
Up: No Title Previous: No Title
Emmanuel CHAILLOUX
1998-11-15