Syllabus du M1 Sciences Du Logiciel

UI/UX et applications frontales

S7, 6 ECTS

Objectifs :

La partie du module dédiée à l’UI/UX a pour objectif de permettre aux étudiants de maîtriser les principes de conception, programmation et évaluation d’interfaces utilisateur et techniques d’interaction avec pour objectif la production de systèmes informatiques utilisables.

La partie du module dédiée aux applications frontales vise à étudier les langages côté client (front end) et à savoir mettre en œuvre un framework dans le cadre d'une application web dynamique de type "Single Page Application".

Compétences :

Contenu :

Partie “UI/UX” :

  1. Conception centrée utilisateur (UCD) selon le standard ISO 9241-210, règles et standards Introduction à l’analyse des utilisateurs (personas, modélisation des tâches)
  2. Etude et mise en oeuvre de techniques de conception: prototypage basse, moyenne et haute-fidélité
  3. Etude et mise en oeuvre de techniques d’évaluation analytiques (cheminement centré tâches, évaluation heuristique, prédictions à base de modèles) et empiriques (tests d’utilisabilité)
  4. Retour sur investissement de l’UCD
  5. UX et ses différentes dimensions

Partie “Front” :

  1. Rudiments d’un langage côté client (Javascript ou typescript) : syntaxe du langage, utilisation dans le navigateur, les principales structures de données, etc
  2. Spécificités d’un langage côté client (Javascript ou typescript) : le modèle objet du langage, la puissance des fonctions, …
  3. Etude d’un framework de type front end (Angular, React ou Vue.js)
  4. Manipulation du DOM et notion de DOM virtuel
  5. Gestion des événements et des formulaires
  6. Routage et application “Single Page Application”

Techno utilisées en TP : outils de prototypage et de modélisation des tâches, Javascript ou typescript et framework de type front end, node.js

Pré-requis :

Références bibliographiques :

Mots-clés :

Modalités d’évaluation :


Modélisation, Conception, Développement Collaboratif

S7, 6 ECTS

Objectifs :

Ce module vise la modélisation et la conception des logiciels complexes, avec une sensibilisation aux spécificités du développement collaboratif.

Les aspects traités dans ce cours sont la modélisation, son utilisation dans le cadre d’une démarche de développement orientée objet, la spécification de contraintes afin de rendre les modèles cohérents, les patrons de conception orientés objet et leur utilisation dans le cadre d’un problème de conception, et la mise en œuvre d'un logiciel conformément aux exigences exprimées et aux bonnes pratiques relatives au développement collaboratif.

Compétences :

Contenu :

Partie I. Modélisation et Conception

Partie II. Patrons de conception

Partie III. Développement collaboratif

Pré-requis :

Références bibliographiques :

Mots-clés :
Conception, Modélisation, Objet, UML/OCL, Design Patterns, Développement Collaboratif

Modalités d’évaluation :


Théorie des langages

S7, 6 ECTS

Objectifs :

Cette UE a deux objectifs :

Compétences :

Contenu :

Les TPs consistent en la mise en œuvre d'un mini-projet permettant de réaliser un compilateur composé d'un analyseur pour un langage de programmation réel exécuté par une machine virtuelle.

La première partie consiste à réaliser un mini-compilateur de l'analyse du source à la génération du code: analyse lexicale, analyse syntaxique, construction des arbres de syntaxe abstrait et génération de code. En seconde partie, des optimisations vérifiées seront réalisées sur la représentation intermédiaire . L'environnement de preuve interactive utilisé pour cela (Coq) est d'abord présenté avec un rappel des notions sous-jacentes, puis un ensemble d'exemples de sémantiques de langages de programmation est formalisé, avant de modéliser et vérifier une transformation agissant sur la représentation intermédiaire.

Pré-requis :

Théorie des langages, preuve interactive, connaissances en bases de données relationnelles        

Références bibliographiques :

Mots-clés :

Compilation, optimisation, génération de code, analyse syntaxique, représentation intermédiaire, sémantiques, preuve assistée, transformation vérifiée


Algorithmique avancée

S7, 6 ECTS

Objectifs :

Après des rappels de complexité des algorithmes, illustrés sur des opérations sur des structures de données avancées, ce module présente les principales méthodes et algorithmes pour modéliser et résoudre les problèmes de décision et d'optimisation linéaire et / ou combinatoire. Après validation de ce module, les étudiant-e-s sauront :

Contenu :

Pour chaque type de problème d'optimisation ou de décision abordé, on étudie la complexité des algorithmes et la modélisation. Les TP consisteront en l'implémentation d'un solveur de type "backtrack", en l'implémentation d'algorithmes de recherche locale, et en l'utilisation de solveurs de PPC / PLNE.

Pré-requis :  Graphes, Structures de Données, Complexité

Références bibliographiques :

Mots-clés :

Flots, Programmation Linéaire, optimisation combinatoire, SAT, CSP, classes de complexité, Méta-Heuristiques, Tas binomiaux, B-arbres.


Parallélisme

S7, 6 ECTS

Objectifs :

L'objectif de ce module d'enseignement est d'introduire les fondements du parallélisme sur des architectures distribuées ou massivements parallèles (GPU) :

A l'issue de cet enseignement, l'étudiant sera capable de concevoir, analyser et évaluer des algorithmes parallèles. L'étude des approches et API MPI et Cuda permettra à l'étudiant de résoudre des problèmes à l'aide d'algorithmes parallèles efficaces. La présentation des "conditions" complètera la formation de l'étudiant quant à la synchronisation d'activités parallèles.

Contenu :

La pédagogie se basera sur plusieurs mises en situation (TD et TP) pour intégrer les particularités du parallélisme.

Pré-requis :

Algorithmique avancée, programmation concurrente, processus, threads, variables partagées, architecture des ordinateurs, réseau, abstraction de problèmes

Références bibliographiques :

Mots-clés :

Architectures parallèles, Modèles parallèles, Modèles répartis, cohérence de données, expressions et conditions de synchronisation, MPI, CUDA


Ingénierie des Systèmes Interactifs et des Applications Web Dynamiques

S8, 6 ECTS

Objectifs :

La partie “ingénierie des applications web dynamiques” se positionne côté "back office" et est dédiée à des aspects de conception (archi. multi-couches, rôle d'un "framework") et technologiques (J2EE : servlet, JSP, ORM, etc).

Compétences :

La partie “Ingénierie des Systèmes Interactifs” (ISI) vise la maîtrise de la modélisation et de la programmation des systèmes interactifs (SI).

Compétences:

Contenu :

Partie “Applications web dynamiques” :

1. Eléments d'architecture répartie

2. Le rôle d'un framework

3. La plateforme J2EE

Techno utilisées en TP : Spring Boot; Hibernate; Thymeleaf

Partie “Systèmes interactifs” :

  1. Principes architecturaux des systèmes interactifs (modèles de Seeheim et ARCH)
  2. Design pattern MVC, de sa mise en oeuvre en Java et de son intégration dans ARCH
  3. Principes de modélisation des systèmes interactifs à base d’automates à états finis étendus.
  4. Implémentation à base de modèle dans un environnement de programmation par événement
  5. Description de propriétés de systèmes interactifs et vérification sur modèles. Comment gérer utilisabilité, modifiabilité  et fiabilité dans un même cadre méthodologique
  6. Mise en œuvre des principes de validation : expression et vérification de propriétés, définition et mise en œuvre de tests sur des systèmes interactifs

Techno utilisées en TP : NetBeans, Java Swing

Pré-requis :

Connaissances requises : programmation orientée objet (notamment Java), modélisation UML, éléments du langage HTML, modèle relationnel pour les données, bibliothèque Java SWING et programmation par événement, modélisation par automates

Références bibliographiques :

Mots-clés :

Modalités d’évaluation :

Modèles et Architectures des Applications Réparties (MARA)

S8, 6 ECTS

Objectifs :

Ce cours présente les méthodes et outils permettant de concevoir et de gérer les applications informatiques distribuées et hétérogènes.

La première partie du cours est consacrée à la représentation de données structurées et l'interopérabilité, avec un focus particulier sur les langages XML (modélisation via différents types de grammaires, langages de transformation et d'interrogation), et sur l'approche orientée services (aspects architecturaux, conception, développement et publication).

Dans la deuxième partie, on poursuivra l’étude des Design Patterns du GoF initiée en S7 au tronc commun. Cette partie présentera aussi des patterns de programmation concurrente et répartie. En outre, on étudiera les bases de la programmation concurrente en Java et de la programmation répartie avec Java RMI.

Contenu :

Partie I : Interopérabilité des données et approches orientées services

  1. Gestion de build et des dépendances dans un projet Java
  1. Représentations de données structurées
  1. Approches orientée services

Partie II : Design patterns (compléments), Programmation concurrente et répartie en Java

  1. Compléments sur les design patterns  du GoF

  1. Programmation concurrente en Java et multithreading

  1. Programmation répartie en Java

Pré-requis :

Programmation orientée objet (notamment Java), connaissances élémentaires en bases de données et en programmation répartie (modèle client-serveur)

Références bibliographiques :

Mots-clés :

Interopérabilité, données structurées, services web, design patterns, concurrence, répartition, middleware, Java

Modalités d’évaluation :

Gestion de Projets de Recherche, Industriels et Agiles

S8, 9 ECTS

Objectifs :

L'objectif de l'UE est d'initier les étudiants au monde de la recherche et de les former à la production d'un état de l'art, à celle de la gestion de projet industriel ou de recherche en focalisant sur les aspects méthodologiques selon le PMBoK(1) ou les valeurs de l'agilité(2).

Compétences :

Contenu :

Le contenu est divisé en trois parties :

1 - Initiation à la recherche et la production d'état de l'art :

2 - Gestion de projet selon le PMBoK

3 - Méthodes agiles et pratique SCRUM

La production de l'état de l'art est mise en pratique à travers un projet en groupe de 4 pour un volume de 50h/étudiant.

La gestion de projet est analysée en TD d'après l'expérience pratique des étudiants selon les domaines de connaissances, les groupes de processus et la pratique de la méthode Scrum.

Pré-requis :

Références bibliographiques :

(1) Project Management Book of Knowledge - Project Management Institute - https://www.pmi.org/pmbok-guide-standards 

(2) Manifeste Agile - https://agilemanifesto.org 

(3) Le métier de chercheur. Regard d'un anthropologue. Bruno Latour. INRA Editions, 2001

(4) SCRUM - Scrum Guide - https://www.scrum.org 

Mots-clés :

Recherche scientifique, état de l'art, rédaction d'articles, gestion de projet, PMBoK, cycles de vie, processus, domaines de connaissances, agilité, SCRUM.

Modalités d’évaluation :

Evaluation de livrables :

Liste de références, résumés d'articles, article de synthèse, poster

Plan de management de projet

Contrôle de connaissances des définitions du PMBoK et de SCRUM

Artefacts SCRUM

Présentations orales de livrables


Professionnalisation en Sciences Du Logiciel

S8, 6 ECTS

Objectifs :

Le stage ou l'alternance ont pour but de mettre les étudiants en situation réelle, en entreprise ou en laboratoire, pour connaître et approfondir le monde professionnel orienté industrie ou recherche; de mettre en application les connaissances acquises au cours de leur cursus; de les préparer au stage long de Master2 et de favoriser la future insertion professionnelle en apportant une expérience aux étudiants.

Compétences :

Contenu :

Cours magistral :

Travaux dirigés :

Stage ou alternance (12 semaines ETP minimum) :

Pré-requis :

Expérience de développement logiciel académique

Mots-clés :

Stage, alternance, CV, lettre de motivation, rapport, soutenance

Modalités d’évaluation :

Évaluation des productions suivantes : CV, lettre de motivation, travail en situation professionnelle, rapport de stage, soutenance de fin d'activité, respect des échéances.


Anglais

S8, 3 ECTS

Objectifs :

Niveau C1 du CECRL (Cadre Européen Commun de Référence pour les Langues)Permettre aux étudiants de développer les compétences indispensables à la réussite dans leur future vie professionnelle en contextes culturels variés.Acquérir l'autonomie linguistique nécessaire et perfectionner les outils de langue spécialisée permettant l'intégration professionnelle et la communication d'une expertise scientifique dans le contexte international.

Compétences :

Contenu :

Développer :

Pré-requis :

Niveau B2 du CECR

Mots-clés :

Projet Anglais scientifique Rédaction Publication Communication esprit critique scientifique  interculture