Un ingénieur, quelque soit son domaine d'intervention, doit maîtriser les concepts sous-jacents aux langages de programmation, aux différences profondes entre les langages actuels, passés et futurs, ainsi que les différentes notions relatives au sens et à la correction des programmes. Cette culture informatique lui sera à l'évidence nécessaire s'il contribue à ou dirige des développements informatiques, mais elle le sera aussi lorsqu'il aura à évaluer des éléments logiciels, ou à participer à des prises de décisions stratégiques impliquant des choix en matière de logiciel.
Ce cours décrit les concepts fondamentaux des langages de programmation, en commençant par donner une perspective historique des langages, puis en donnant les outils permettant de décrire précisément le sens des programmes informatiques, partant de leur syntaxe jusqu'à leur sémantique, en passant par une revue des différentes techniques de mise en œuvre des interprètes et compilateurs.
Une part importante du cours sera consacrée à l'expérimentation : on utilisera en effet le langage OCaml pour mettre en œuvre différents aspects d'un langage de programmation, durant la première moitié du cours.
De par la perspective qu'il offre vis-à-vis de l'activité de programmation et des langages, ce cours s'adresse à tout élève désireux de prendre le recul nécessaire vis-à-vis de cette activité, quelle que soit la filière à laquelle il se destine (à dominante informatique ou non).
- Enseignant: Sophie ALFEROFF
- Enseignant: Frédérika AUGÉ-ROCHEREAU
- Enseignant: Mélanie LIMACHE GOMEZ
- Enseignant: Alejandro REYMOND
- Enseignant responsable de l'UE: François PESSAUX