Quel est le comportement de ce fragment de code informatique ? Puis-je toujours le remplacer par tel autre sans changer le sens du programme complet ? Comment m’assurer systématiquement de l’ab- sence de certaines classes d’erreurs à l’exécution ? Ces questions sont essentielles à la pratique quotidienne de la programmation comme à la conception d’outils manipulant du logiciel (compilateurs, analyseurs statiques, éditeurs de code intelligents, etc.). Y répondre précisément exige le développement d’une théorie mathématique du sens des programmes. Ce module offre les bases de cette théorie, la sémantique des langages de programmation.