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.
Envoyer un courrier à l'équipe pédagogique : alias-POD
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).
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.
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.
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.
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.