Pour Irène, Pascal, Anne-Laure et Aurélien
La réforme des classes préparatoires aux grandes écoles qui est entrée en vigueur à la rentrée 1995 a fait enfin une place raisonnable à la discipline informatique.
Antérieurement, l’année 1987 avait vu une première tentative d’introduction de la programmation dans ces classes. Les résultats avaient été mitigés. D’une part, le fait d’aborder l’informatique sous le seul aspect de la programmation d’algorithmes numériques en Turbo Pascal donnait une vision tout à fait partielle et partiale de ce qui devrait être reconnu comme une science à part entière. D’autre part la faible et mauvaise prise en compte aux concours d’entrée dans les grandes écoles était un facteur de démotivation important pour les étudiants.
L’introduction d’une option informatique tente de porter remède à ces défauts criants. Elle doit permettre à des étudiants motivés d’aborder une discipline scientifique nouvelle pour eux, originale tant par ses méthodes que par ses objectifs.
Le programme de cette option informatique a fait une place importante aux fondements mathématiques de l’informatique (logique, récursivité, automates) sans négliger l’algorithmique fondamentale (itération, structures de données récursives, méthodes de tris). Quelques phrases essentielles du programme des classes préparatoires doivent être soulignées pour bien faire comprendre l’esprit de l’enseignement :
En rédigeant cet ouvrage nous avons voulu mettre à la disposition des étudiants et de leurs enseignants un cours qui soit aussi proche que possible de l’esprit dans lequel a été conçu cette option informatique, solide sur le plan théorique tout en restant proche de la réalité et de la mise en oeuvre. Le tome ci-après couvre uniquement la partie cours de la première année de classes préparatoires, la classe Supérieure MPSI. Trois autres tomes suivront : l’un couvrira la partie cours de la deuxième année, les deux autres seront consacrés à des exercices et des problèmes corrigés pour les deux années.
En ce qui concerne le langage de programmation, nous avons fait le choix exclusif du langage Caml, dans l’implémentation réalisée par l’INRIA sous le nom de Caml Light, ceci pour de multiples raisons. En premier lieu il s’agit d’un langage riche, à la fois fonctionnel et procédural, bien adapté aux structures de données étudiées et qui évite les difficultés liées aux pointeurs. En second lieu, l’implémentation Caml Light tourne sous de multiples environnements comme MS-DOS, Mac-OS, Unix, Windows. Enfin, il s’agit d’un produit gratuit et facilement disponible soit par ftp, soit en s’adressant à l’INRIA pour obtenir une disquette. Nul doute que l’étudiant qui aura acquis des bases solides de programmation à travers l’apprentissage de Caml, aura peu de difficultés à s’adapter à un langage plus proche de la machine comme C ou à la programmation objet à travers C++.
Je voudrais pour terminer remercier tous ceux qui m’ont adressé des remarques et des corrections sur mon manuscrit, tout particulièrement Bruno Pettazoni et Pierre Weis dont l’aide m’a été si précieuse. Merci aussi à Xavier Leroy, Pierre Weis et tous leurs collègues de l’INRIA pour le magnifique travail qu’ils ont accompli à travers la conception de Caml Light. Merci également à tous ceux qui ont contribué à la conception même de l’option informatique qu’ils soient inspecteurs généraux, professeurs dans les universités ou les grandes écoles, enseignants de classes préparatoires.
Je ne voudrais pas terminer sans remercier mon épouse et mes enfants pour le soutien moral et l’affection dont ils m’ont entouré tout au long de ces années et qui m’ont permis de mener de front mon travail d’enseignant de mathématiques, la participation à la conception de la réforme des classes préparatoires et la rédaction d’ouvrages comme celui-ci.
Bibliographie
Alfred Aho, John Hopcroft et Jeffrey Ullman. Structures de Données et Algorithmes. InterEditions, Paris, 1987.
I. Arnold et A. Guessarian. Mathématiques pour l’Informatique. Masson, Paris, 1994.
Jon L. Bentley. Programming Pearls. Addison-Wesley Publishing Company, 1985.
T. Cormen, C. Leiserson, R. Rivest. Introduction à l’algorithmique. Dunod Paris, 1994
Susanna S. Hepp. Discrete Mathematics with Applications. Wadsworth Publishing Company, Belmont, California, 1990.
Donald E. Knuth. The Art of Computer Programming. (3 tomes) Addison-Wesley Publishing Company, 1973.
Xavier Leroy et Pierre Weis. Manuel de Référence du Langage Caml. InterEditions, Paris, 1993.
K. Melhorn. Data Structures and Algorithms. Springer Verlag, Berlin, 1984.
Patrice Naudin et Claude Quitté. Algorithmique Algébrique. Masson, Paris, 1992.
Robert Sedgewick. Algorithms in C++. Addison-Wesley Publishing Company, 1992.
Jacques Stern. Fondements Mathématiques de l’Informatique. McGraw-Hill, Paris, 1990.
Jacques Vélu. Méthodes Mathématiques pour l’Informatique. Dunod, Paris 1987.
Pierre Weis et Xavier Leroy. Le Langage Caml. InterEditions, Paris, 1993.