INF441 : Programmation Avancée

Xavier Rival
2ème année, École Polytechnique

Le Cours

Dans le monde industriel comme dans le monde du logiciel libre, nombreux sont les logiciels de grande envergure, que ce soit de par leur taille, de par le nombre de leurs auteurs, ou de par leur durée de vie. De telles réalisations ne sont possibles que grâce à une architecture modulaire, qui idéalement doit permettre à chaque composant d'être conçu, réalisé, testé, modifié, ré-utilisé, indépendamment des autres composants du système.

Le principal objectif de ce cours est de présenter les concepts et les mécanismes fondamentaux qui, dans un langage de programmation moderne, permettent cette organisation modulaire. Par exemple, l'encapsulation, c'est-à-dire l'idée que certains détails d'un composant doivent être totalement opaques pour ses clients, peut être obtenue via différents mécanismes (abstraction de types, abstraction procédurale...). De même, la composabilité, c'est-à-dire l'idée que les liens entre composants ne doivent pas être figés à l'avance, peut être réalisée via différents moyens (paramétrisation, définition retardée...). S'il fallait résumer le cours en un concept, ce pourrait être abstraction, un mot dont nous étudions les multiples significations.

Nous présenterons les principes fondamentaux d'abstraction ainsi que leur mise en oeuvre dans le langage OCaml. Ce langage haut niveau est en effet idéal pour illustrer les concepts vus en cours.

Le cours incluera une introduction à OCaml (aucun pré-requis concernant la connaissance de ce langage), et des séances de travaux dirigés permettant d'en maîtriser l'usage.

Amphis

Les transparents des amphis seront mis à jour après chaque séance :

Travaux dirigés

Composition des groupes :

Liens vers les sujets de chacune des séances :

Délégués

Projets

Le projet est optionnel. Notez toutefois que tout élève candidat à un PA d'info doit avoir complété un projet dans l'un des cours d'informatique en année 2.

Les sujets proposés sont disponibles sur Moodle. Vous pouvez proposer votre propre sujet, mais le travail nécessaire doit être comparable. N'hésitez pas à demander conseil aux enseignants du cours.

Vous devez nous informer avant le 28 avril de votre choix de sujet et de votre binôme éventuel (le projet doit être réalisé seul ou en binôme). Le travail est à rendre avant le 31 mai 2017 et une soutenance orale sera ensuite organisée dans la semaine du 7 juin (date indicative).

Les titres des sujets proposés sont :

Documents et références

Les deux documents suivants permettent de se familiariser rapidement avec OCaml :

Les documents suivants fournissent des références plus complètes :


rival (at) di.ens.fr