Aller au contenu  Aller au menu Aller à la recherche

Navigation principale

accès rapides, services personnalisés

Rechercher

Recherche détaillée

Contact

Emilie Auger
Secrétaire

tél. :01 44 27 53 80

courriel : master.info.stl@upmc.fr

accréditation 2019-2024

Liste des UE du parcours STL

semestre 1

  • Algorithmique Avancée (MU4IN500)
    • Responsable : Antoine Genitrini
    • Site de l'UE : suivre le lien
    • Description : L'objectif de ce cours (obligatoire, pré-requis pour le S2) est de montrer comment l'utilisation de structures de données avancées (files de priorité, arbres de recherche, hachage, arbres digitaux) permet d'optimiser les performances des algorithmes dans des domaines d'application variés comme la gestion et la compression de données massives.
  • Développement d'un Langage de Programmation (MU4IN501)
    • Responsables : Carlos Agon et Antoine Miné
    • Site de l'UE : suivre le lien
    • Description : Ce cours (obligatoire, pré-requis pour le S2) décrit les choix de conception et d'implantation des traits de haut niveau des langages de programmation au travers d'un petit langage non-typé de la classe de Python. Partant d'un noyau réduit, nous y ajoutons progressivement des traits de plus en plus complexes : boucles, fonctions, fonctions de première classe, exceptions, objets, coroutines. Le cours présente l'implantation de ces traits au sein d'un interprète écrit en Java et d'un compilateur écrit en Java et générant du C, ce qui donne l'occasion de comparer des langages très différents. Le cours et les TME développent les capacités de lecture de code, d'ajout incrémental de fonctionnalités dans un projet, et de conception guidée par le test.
  • Ouverture (MU4IN511)
    • Responsables : Emmanuel Chailloux et Antoine Genitrini
    • Site de l'UE : suivre le lien
    • Description : L’UE d’ouverture (obligatoire en complément à l'UE d'Anglais) est l’occasion de présenter des thématiques de sciences humaines en liaison avec l’informatique. Il s’agirait par exemple de présenter l’histoire de l’informatique, les liens entre logique et informatique, philosophie et science, droit et informatique, ou des aspects concernant le logiciel libre...
  • Ingénierie Logicielle (MU4IN502)
    • Responsable : Yann Thierry-Mieg
    • Site de l'UE : suivre le lien
    • Description : L’UE présente le génie logiciel, ou comment passer de l’expression du besoin d’un client à la réalisation d’une solution logicielle. On y présente l’analyse d’un domaine métier, la mise en place de procédures de validation par le test, la conception orientée composant et service, la conception détaillée à l’aide de patrons de conception, … l’ensemble s’intégrant dans une méthodologie de développement qui définit des étapes, des rôles pour les intervenants, des délivrables... Les travaux dirigés permettent d’appliquer la démarche présentée en cours sur des exemples choisis ; en TME les étudiants sont organisés en groupes de 6 à 8 et jouent le rôle d’une SSII répondant à un appel d’offre, en appliquant la même démarche. L’UE s’adresse à un public large, mais nécessite un peu d’expérience en orienté –objet notamment pour travailler avec la notation UML.

semestre 2

  • Analyse des Programmes et Sémantique (MU4IN503)
    • Responsable : Pascal Manoury
    • Site de l'UE : suivre le lien
    • Description : Etude des éléments formels de définition des langages de programmation : syntaxe, typage et sémantiques; illustrée par la réalisation de la chaîne d'interprétation de programmes sources.
  • Compilation Avancée (MU4IN504)
    • Responsable : Emmanuel Chailloux
    • Site de l'UE : suivre le lien
    • Description : Ce cours a un double objectif. D'une part on étudie la compilation de structures de contrôle de haut niveau (fermetures, exceptions etc) vers du code pour machines virtuelles ainsi que l'implantation de celles-ci en s'intéressant particulièrement à la gestion automatique de mémoire. D'autre part on effectue le passage au code natif en appliquant des méthodes d'analyse et d'optimisation du code engendré.
  • Conception Pratique de l'Algorithmique (MU4IN505)
    • Responsable : Binh-Minh Bui-Xuan
    • Site de l'UE : suivre le lien
    • Description : Cette UE consiste en l'étude et la mise en oeuvre efficace d'algorithmes usuels, i.e. non triviaux, en développement logiciel. Le spectre des problèmes abordés couvrira un vaste panorama allant du traitement de texte à la géométrie algorithmique. On étudiera tout autant le fondement structurel de ces domaines que solutions algorithmiques et un soin particulier sera pris pour leur implantation dans des langages de programmation modernes.
  • Composants (MU4IN506)
    • Responsable : Jacques Malenfant
    • Site de l'UE : suivre le lien
    • Description : La complexité croissante des systèmes informatiques et leur évolution de plus en plus rapide suscitent un intérêt accru pour le développement logiciel à base de composants réutilisables. Cet intérêt est principalement motivé par la réduction des coûts de développement et l'augmentation de la fiabilité du logiciel. Cet enseignement propose d'étudier et de mettre en pratique les concepts sous-jacents de la conception et de l'implantation des logiciels basées sur les composants (component-based software engineering ou CBSE). Cet objectif est atteint en introduisant à la fois les principes et outils de conception à base de composants, les techniques de vérification associées et la mise en œuvre d'architectures et d'applications à base de composants répartis.
  • Programmation Avancée en Fonctionnel (MU4IN512)
    • Responsable : Frédéric Peschanski
    • Site de l'UE : suivre le lien
    • Description : La programmation fonctionnelle, basée sur les notions de fonctions composables et de données immuables, est aujourd'hui un paradigme incontournable. Tous les langages modernes disposent de traits fonctionnels (C++, Java, Javascript, etc.) et les langages dits fonctionnels (Ocaml, Haskell, Clojure, Scala, etc.) sont aujourd'hui très présents en milieu industriel, et en plein essor. Ce cours de perfectionnement expliquera le "comment" de la programmation fonctionnelle, en illustrant les concepts dans différents langages de programmation. il expliquera également le "pourquoi", c'est-à-dire les problèmes typiques pour lesquels le style fonctionnel fournit une meilleure solution que les autres styles de programmation (impératif, objet). Sur machine, nous utiliserons des langages fonctionnels dit "purs", notamment Haskell.
  • Programmation Concurrente, Réactive et Répartie (MU4IN507)
    • Responsable : Romain Demangeon
    • Site de l'UE : suivre le lien
    • Description : L'objectif de ce cours est de comprendre la programmation concurrente et son utilisation pour l'expression d'algorithmes dans les modèles à mémoire partagée, distincte et répartie. Dans le modèle à mémoire partagée, on s'intéresse aux modèles de threads coopératifs et préemptifs puis à la programmation réactive pour récupérer la propriété de déterminisme. Dans le modèle à mémoire répartie on cherche à maîtriser le modèle client/serveur et de savoir déployer des objets répartis.

semestre 3

  • Analyse d'Algorithmes et Génération Aléatoire (MU5IN550)
    • Responsable : Antoine Genitrini
    • Site de l'UE : suivre le lien
    • Description : Ce cours introduit des méthodes pour étudier la complexité moyenne des algorithmes et la génération aléatoire de structures combinatoires. Divers types d'applications seront traitées, en liaison avec les structures arborescentes et l'algorithmique probabiliste.
      La seconde partie du cours est scindée suivant le cursus des étudiants. Pour le parcours classique, on introduit la combinatoire analytique afin d'étudier algorithmes et structures de données en moyenne. Pour le parcours INSTA, on s'intéresse à la résolution et l'approximation de problèmes difficiles.
  • Architectures Logicielles Avancées pour les Systèmes Cyber-physiques Autonomiques (MU5IN551)
    • Responsable : Jacques Malenfant
    • Site de l'UE : suivre le lien
    • Description : Etude des architectures logicielles appliquées aux systèmes informatiques cyber-physiques autonomiques, de leurs concepts, théories, techniques et méthodologies. Applications aux architectures à base de composants et fondées sur les services, aux architectures pour la robotique autonome, pour l'informatique autonomique, pour les systèmes cyber-physiques et plus généralement pour les systèmes embarqués et répartis à grande échelle.
  • Développement d'Algorithmes d'Application Réticulaire (MU5IN552)
    • Responsable : Binh-Minh Bui-Xuan
    • Site de l'UE : suivre le lien
    • Description : (NB: au moins un groupe de TME est dispensé en Français, le reste est en Anglais) This MSc course encompasses both theoretical and implementation works on usual, non-trivial, algorithms for web/mobile applications. We consider a vast panorama of topics ranging from search engine algorithms to the analysis of stream data. We will first study the structural foundations of these algorithms; then, a special effort will be put in confronting them to a practical web/mobile application implementation project using modern Web and Mobile frameworks such as django, node, {N}, firebase, amplify, swagger.
  • Paradigmes de Programmation Concurrente (MU5IN553)
    • Responsable : Carlos Agon
    • Site de l'UE : suivre le lien
    • Description : Ce cours se divise en deux grandes parties de sept semaines chacune. La première partie (plutôt théorique) présente différents modèles et styles de programmation  concurrente avancés. Après une brève introduction de la concurrence sous l’angle des réseaux de Petri, nous utilisons le CCS et le pi-calcul pour la modélisation haut niveau de systèmes concurrents. Deux cours seront dédiés pour introduire le mu-calcul ainsi que les algèbres de processus temporelles. Une prise en main du software UPPAAL servira pour appliquer les concepts appris dans cette partie. La deuxième partie (plus pratique) aborde les langages de programmation de haut niveau. On s'intéresse notamment aux modèles synchrones (réactif, dataflow, GALS, ...) et aux modèles communicants (passage de messages, acteurs, …). Deux projets sont au coeur de cette dernière partie, à savoir : un projet synchrone en utilisant SCADE et un projet acteurs en AKKA.
  • Spécification et Validation de Programmes (MU5IN554)
    • Responsable : Pascal Manoury
    • Site de l'UE : suivre le lien
    • Description : Utilisation des méthodes inductives pour la spécification et la validation de programmes récursifs suivi par l'utilisation de ces mêmes méthodes pour la spécification de la sémantique d'un langage impératif. Les concepts sont mis en œuvre à l'aide du système Coq.
  • Typage et Analyse Statique (MU5IN555)
    • Responsable : Emmanuel Chailloux et Antoine Miné
    • Site de l'UE : suivre le lien
    • Description : Ce cours présente dans le cadre de typage statique les différentes classes de polymorphisme des langages de programmation : paramétrique, objet, ad hoc, de rangées, borné, et leurs utilisations pour la conception de bibliothèques réutilisables, ainsi que des systèmes de types étendus pour vérifier d’autres propriétés d’exécution des programmes. Le cours présente ensuite l'interprétation abstraite pour l'inférence de propriétés numériques (intervalles, inégalités linéaires) et de pointeurs, et son application au développement d'analyses correctes par construction et utilisables pour la vérification formelle automatique des programmes.
  • Techniques Professionnelles - Environnement et Application (MU5IN562)
    • Responsable : Emmanuel Chailloux
    • Site de l'UE : suivre le lien
    • Description : Ce cours présente les différents aspects d’un développement logiciel en s’appuyant sur des environnements de développement et des environnements collaboratifs issus du monde du logiciel libre. Il s’agit de montrer comment, à travers l’utilisation de ces outils, doit se mener la conduite et la réalisation d’un projet industriel. Les outils supports de cet enseignement seront des outils de modélisation, des environnements de développement, des outils collaboratifs et de déploiement ; le tout étant encadré par l’utilisation d’une méthodologie.
  • Gestion de Projet STL (MU5IN558)
    • Responsable : Stéphane Doncieux
    • Site de l'UE : suivre le lien
    • Description : Réalisation d'un projet informatique, de l'étude préalable au démonstrateur, par des équipes de six à dix étudiant(e)s, avec pour objectif non seulement la mise en application des concepts, techniques et outils du développement d'applications logicielles, mais aussi la mise en oeuvre des compétences transversales requises  pour la conduite de projet, le travail en équipe, la communication et le partage des informations, le respect des délais, le souci de la qualité du livrable et de sa documentation. Après une introduction, les étudiants choisissent un cahier des charges, forment leur équipe-projet et définissent leur méthodologie de travail. Ils peuvent s'appuyer pour cela sur des cours magistraux sur la méthode agile de développement suggérée : SCRUM. Après cette première étape, les étudiants rencontrent régulièrement leur enseignant-client. L'évaluation se fait sur la base du développement réalisé et présenté lors de la recette finale et sur la base d'une évaluation méthodologique à mi-parcours.
  • Projet d'Ingénierie STL (MU5IN559)
    • Responsable : Cédric Besse
    • Site de l'UE : suivre le lien
    • Description : Projets d'ingénierie visant la production d'applications logicielles, réalisés en équipe et mettant en œuvre des outils de développement typiques des bonnes pratiques en ingénierie logicielle dans l'industrie.  Adoptant une approche pédagogique dite par projets, les enseignements dispensés dans cette UE seront intégrés à la réalisation du projet, en réponse aux besoins suscités par ce dernier. Les projets sont proposés par nos partenaires industriels. Chaque projet est tuteuré par un ou plusieurs référents industriels et par l'équipe pédagogique. Un créneau de 4h par semaine est bloqué pour les étudiants pour se consacrer au projet. Dans ce créneau sont insérés cours, audits et potentiellement rendez-vous avec les référents industriels.
  • Groupe de Recherche en Algorithmique et en Programmation Avancés (MU5IN556)
    • Responsable : Frédéric Peschanski
    • Site de l'UE : suivre le lien
    • Description : L'objectif du groupe de recherche est de sensibiliser les étudiants de master à la méthodologie de recherche scientifique, telle qu'elle se pratique en recherche et développement industriels, ainsi que dans les laboratoires académiques. Le cours se divise en trois parties : (1) étude bibliographique, (2) présentation d'articles et (3) projet de programmation. Les thématiques scientifiques couvrent l'algorithmique et la programmation avancée. Le cours offre également une sensibilisation aux métiers de la recherche : ingénieur de recherche et développement, gestion de projet scientifique, poursuite d'étude en doctorat. L’évaluation comporte fiches de lecture (bibliographie), présentation d'article (oral), rendu du projet et soutenance finale (oral).