# Programmation Synchrone 2025-2026 (M2 Info & EIDD)

## Présentation

Le [syllabus](cours/syllabus-progsync.pdf) (résumé) du module est disponible.

### Contenu et objectifs

Le module de *Programmation synchrone* propose une introduction à la
programmation des **systèmes réactifs** par le biais de langages spécialisés,
les **langages synchrones**.

- Les **systèmes réactifs** sont des systèmes informatiques en interaction
  continue avec un environnement extérieur. Le pilote automatique d'un avion
  moderne (_fly-by-wire_), le contrôleur d'une machine à laver, ou le logiciel
  de commande d'un ascenseur constituent des exemples de systèmes réactifs.

- Les **langages synchrones** sont des langages spécialement conçus pour la
  programmation des systèmes réactifs. Ils offrent une expressivité élevée tout
  en garantissant statiquement certaines propriétés de sûreté. Leur usage est
  désormais routinier dans les tâches conception et de développement dans
  certains secteurs industriels, comme l'avionique ou le ferroviaire.

L'enseignement des langages synchrones vise deux objectifs. D'abord, **renforcer
vos compétences de programmation**, en vous faisant découvrir une famille de
langages à la fois originaux et utilisés dans l'industrie. Ensuite, **enrichir
votre culture scientifique**, en illustrant comment les systèmes réactifs
fournissent un exemple de point de jonction entre l'informatique et d'autres
disciplines comme l'automatique ou le traitement du signal.

Pour atteindre ces objectifs, on utilisera le langage universitaire
[*Heptagon*](https://gitlab.inria.fr/synchrone/heptagon), aussi bien durant le
cours magistral, pour illustrer les principes généraux des langages synchrones,
que durant les séances de travaux pratiques. Les autres langages synchrones
(notamment d'origines industrielles) seront aussi régulièrement évoqués durant
le cours.

## Organisation du cours

Le cours magistral a lieu le *lundi de 10h45 à 12h45*, dans la salle 1009 du
bâtiment Sophie Germain.

Les séances de travaux pratiques ont lieu en salle 2003 du bâtiment Sophie
Germain, avec deux groupes disponibles :

- le *mardi de 10h45 à 12h45*,

- le *jeudi de 08h30 à 10h30*.

Nous vous demandons **d'apporter votre ordinateur portable**.

## Modalités de contrôle des connaissances

La note du cours sera composée pour 50% de celle du projet et pour 50% de celle
de l'examen final. Les cours de master 2 n'offrent pas de deuxième session.

## Organisation de ce dépôt

Ce dépôt contiendra tout le matériel pédagogique du cours :

- le **support du cours**, dans les sous-répertoire [cours](cours/) et surtout
  [notes](notes/),

- les **énoncés de TP**, dans le sous-répertoire [TP](tp/),

- l'**énoncé du projet, ainsi que son squelette**, seront ultérieurement
  disponibles dans le sous-répertoire [projet](projet/).
