~~NOTOC~~ ---- ====== Programmation synchrone ====== ===== Description ===== Ce module offre une introduction à la programmation de systèmes informatiques en interaction continue avec un environnement extérieur, les systèmes réactifs, par le biais de langages de programmation spécialisés, les langages synchrones. Le cours utilise comme véhicule le langage Heptagon, variante libre du logiciel SCADE utilisé dans l'industrie pour la réalisation de systèmes réactifs dans un contexte critique. Heptagon est utilisé pour les séances de travaux pratiques et la réalisation d'un projet. À la fin du module, vous : * saurez reconnaı̂tre les systèmes réactifs qui vous environnent, * connaı̂trez les principaux problèmes soulevés par la conception et réalisation de systèmes réactifs, * saurez écrire des programmes synchrones capable de contrôler des dispositifs non triviaux, * serez familiarisés avec les mathématiques des systèmes réactifs, y compris des rudiments d’automatique appliquée, * aurez une idée du fonctionnement général d’un compilateur de langage synchrone. ===== Syllabus ===== ==== Sujets centraux ==== * Introduction aux systèmes réactifs * Le langage synchrone Heptagon - Programmation flots de données, programmes causaux et non causaux - Structures de contrôle et automates hiérarchiques - Structures de données, tableaux, ordre supérieur * Applications - Traitement audio en temps réel - Automatique élémentaire (pendule inversé) * Implémentation des langages synchrones - Analyse de causalité - Génération de code en boucle simple ==== Sujets potentiellement traités ==== * Introduction aux systèmes hybrides (temps discret/continu) ===== Pré-requis ===== * Le module suppose une familiarité avec la programmation en général et le développement sous environnement UNIX en particulier. * La connaissance d’un langage fonctionnel comme OCaml ou Haskell est la bienvenue, sans être obligatoire.