Master 1ère année - Semestre 7 (tous parcours)
Fondements pour l'informatique - calculabilité ECTShCMhTDhTP
Description
Ce cours est une introduction à la calculabilité où sera étudié les principales classes de complexité de problèmes, avec un focus particulier sur les problèmes NP-complets. L'approche se fera en lien avec la théorie des langages en utilisant des machines de Turing et des modèles plus classique d'algorithmique.
Objectifs pédagogiques
A l'issue du module, l'étudiant(e) sera capable de :
- Identifier un problème NP-complet
- Aborder sa résolution par utilisation de SAT solver
- Aborder sa résolution en utilisant un solveur linéaire
Mots-clés : Décidabilité, classes de complexité, problèmes NP-complets, solveurs
Compétence associée : Analyser et modéliser un système
- en identifiant les données, structurer et organiser celles-ci
Apprentissages critiques
- Etablir la complexité et la classe associée pour un programme
Compilation & Génie Logiciel
Compilation ECTShCMhTDhTP
Objectifs pédagogiques
A l'issue du module, l'étudiant(e) sera capable de :
- Définir les différents niveaux de langage
- Réaliser la sémantique interprétative d'un langage
- Citer les paradigmes existants dans les langages de programmation
- Réaliser et prouver la validité des règles de compilations pour passer d'un langage à un autre
- Identifier les problèmes d'optimisation suivant l'architecture cibles
Mots-clés : compilateur, gramaires, préservation sémantique, sémantique interprétative
Compétence associée : Réaliser un système
- en identifiant et en choisissant le langage/paradigme de programmation approprié
Apprentissages critiques
- Comprendre et utiliser les principes d'interprétation d'un langage
Génie Logiciel ECTShCMhTDhTP
Description
Ce module traite du processus de développement du logiciel et de la qualité du logiciel. Le module commence par présenter la notion qualité du logiciel (norme ISO 25010), puis nous abordons les cycles de vie du logiciel (en V et Agile). La méthode de développement SCRUM est ensuite détaillée, avec mise en pratique des outils de développement en Agile (gestion des projets en Agile, Intégration continue, suivi de la qualité du développement). Pour finir, nous verrons les fondements des tests logiciels, sur la base du syllabus ISTQB 4.0 incluant les aspects pratiques de différentes techniques de test logiciel et de leur automatisation.
Objectifs pédagogiques
A l'issue du module, l'étudiant(e) sera capable de :
- Créer un ensemble d'exigences pour un développement logiciel
- Définir et savoir mettre en place une stratégie de test
- Déployer l'approche de développement Agile (SCRUM) sur un projet
- Utiliser une chaine outillée de production logiciels et de mesure de qualité
Mots-clés : Génie logiciel, méthodes agiles, SCRUM, travail en équipe
Compétence associée : Gérer un projet en groupe et communiquer
- en planifiant les étapes du projet
- en mettant en place une organisation et en environnement technique
- en réalisant un suivi basé sur des éléments factuels types métriques
Apprentissages critiques
- Appliquer les méthodes de génie logiciel pour le pilotage de projets
- Utiliser une chaine outillée de production logiciels et en assurer la qualité
Projet - Développement agile de VM ECTShCMhTDhTP
Description
Ce projet vise à mettre en oeuvre les concepts vu dans les modules de Génie Logiciel et de Compilation. Il permet à travers le travail effectué par groupe de plusieurs étudiants de réaliser un environnement complet de développement et d'exécution des langages servant d'illustration dans le cours de Compilation. La réalisation se fait suivant les principes de l'agilité et les outils professionnels de développement logiciel (gestionnaire de tickets, de version, intégration continue et de livraison continue).
Objectifs pédagogiques
A l'issue du module, l'étudiant(e) sera capable de :
- Réaliser et prouver la validité des règles de compilations pour passer d'un langage à un autre
- Réaliser la sémantique interprétative d'un langage
- Créer un ensemble d'exigences pour un développement logiciel
- Définir et savoir mettre en place une stratégie de test
- Déployer l'approche de développement Agile (SCRUM) sur un projet
- Utiliser une chaine outillée de production logiciels et de mesure de qualité
- Rédiger des documents (techniques) clairs et concis et les présenter
Mots-clés : Génie logiciel, compilateur, méthodes agiles, travail en équipe
Compétence associée : Réaliser un système
- en identifiant et en choisissant le langage/paradigme de programmation approprié
Apprentissages critiques
- Comprendre et utiliser les principes d'interprétation d'un langage
Réseaux ECTShCMhTDhTP
Description
Les étudiants qui suivent ce cours ont déjà reçu une formation de base en réseaux. Cette formation permet d'aborder des notions pratiques et largement utilisées dans les réseaux : VLAN, NAT, Réseaux sans fils, Proxy, IPv6, Internet des objets. Le cours permet d'aborder aussi l'ingénierie des réseaux, à savoir la conception et l'analyse d'un réseau de A à Z. Cela permet donc d'avoir une connaissance solide sur le fonctionnement des réseaux. Nous utilisons le modèle OSI pour aider à la compréhension des protocoles. Les travaux dirigés permettent de mettre en oeuvre la théorie du cours et les travaux pratiques se font sur des équipements réseaux réels mais aussi sur des émulateurs.
Objectifs pédagogiques
A l'issue du module, l'étudiant(e) sera capable de :
- Identifier et configurer les éléments actifs d'un réseau (routeur, commutateur...)
- Construire un plan IP
- Comprendre le fonctionnement et le cheminement des informations dans les réseaux suivant les protocoles
- Vérifier la validité d'un réseau
Mots-clés : NAT, proxy, VLAN, routage, protocoles
Compétence associée : Administrer des systèmes informatiques communicants complexes
- en mettant en place les éléments de sécurité et de sureté de fonctionnement du système
- en choisissant le type de réseaux et moyens de communications adéquat
- mettant en place les moyens d'identifier et d'anticiper les évolutions fonctionnelles et techniques
- en identifiant les besoins et les risques, administrer le système
Apprentissages critiques
- Structurer et configurer un réseau
- Comprendre l'acheminement et la représentation de l'information dans un réseau
Développement mobile ECTShCMhTDhTP
Description
Ce module a pour objectif de donner les connaissances et les techniques pour être capable de développer une application mobile. La plateforme Android (Développement en Java avec Android Studio) est ciblée avec la mise à disposition de tablettes. Les solutions multi-plateformes (iOS, Android, etc.) et natives seront présentées, notamment les applications web progressives (PWA).
Objectifs pédagogiques
A l'issue du module, l'étudiant(e) sera capable de :
- Maîtriser la conception et la réalisation d'une application communicante pour plate-forme mobile
- Concevoir ou réutiliser une architecture MVC (Modèle Vue Contrôleur) ou ses variantes
Mots-clés : Android, Web mobile, framework
Compétence associée : Réaliser un système
- en lien avec des architectures spécifiques
Apprentissages critiques
- Maîtriser la conception et la réalisation d'une application communicante pour plate-forme mobile
Théorie des graphes et combinatoire (EAD) ECTShCMhTDhTP
Description
Cette UE a pour objectif la mise en relation des techniques avancées d'algorithmique et de la combinatoire. Du point de vue algorithmique, après avoir découvert l'algorithmique de contrôle en début de cursus informatique, puis l'algorithmique sur les données et les structures complexes (listes, files, piles, tas, arbres), et enfin l'algorithmique objet, cette UE porte sur l'algorithmique liée plus particulièrement aux graphes.
Objectifs pédagogiques
A l'issue du module, l'étudiant(e) sera capable de :
- Développer une stratégie de résolution à l'aide de structure de données et d'algorithmes de traitements des graphes
- Identifier les problèmes assimilables à des problèmes de graphe
- Comparer les solutions (à l'aide de calcul de complexité)
- Rédiger des algorithmes à un niveau d’abstraction logico-mathématique
Master 2e année - Semestre 9 (alternants)
Ingénierie Logicielle (tronc commun)
Programmation d'Applications Multi-tiers ECTShCMhTDhTP
Description
Ce cours présente les techniques et outils pour architecturer des applications multi-tiers, c'est-à-dire des applications constituées de multiples sous applications communicantes : (i) basées sur de multiples technologies (Spring, Angular, IOT) ; (ii) organisées et réparties sur des plateformes distribuées et hétérogènes (Serveur, terminaux mobiles, etc.)
Objectifs pédagogiques
A l'issue du module, l'étudiant(e) sera capable de :
- Initiation à la programmation d'applications multi-tiers, aux techniques et outils permettant d'assurer l'interopérabilité entre applications web, mobiles et conventionnelles
- Développer une application multi-plate-forme, multi-terminal répondant à un besoin commercial
Compétence associée : Réaliser un système
- en implémentant le système pour en garantir la sécurité/sûreté/efficacité de fonctionnement
- en utilisant une approche à base d'IA pour représenter ou traiter le problème
Apprentissages critiques
- Maitriser la conception et la réalisation d'applications multi-tiers
Tests fonctionnels ECTShCMhTDhTP
Description
Ce module permet de comprendre les enjeux de la mise en oeuvre d'une démarche de validation basée sur les tests fonctionnels. Il présente les différentes méthodes permettant d'établir les pas de tests, sélectionner les données et établir l'oracle du test.
Objectifs pédagogiques
A l'issue du module, l'étudiant(e) sera capable de :
- Gérer les exigences
- Définir et mettre en oeuvre des tests fonctionnels
- Gérer un référentiel de tests et des anomalies
- Exécuter des tests
Compétence associée : Gérer un projet en groupe et communiquer
- en garantissant le bon fonctionnement
Apprentissages critiques
- Mettre en œuvre des tests fonctionnels pour la qualité du logiciel
Projet Test Fonctionnel d'Applications Multi-tiers ECTShCMhTDhTP
Description
Ce module propose un projet permettant de mettre en oeuvre la réalisation d'une application multi-tiers et sa validation. Il permet à travers la mise en place d'un groupe d'étudiants de réaliser l'ensemble des étables : explicitation des exigences, réalisation des tests d'acceptation, des tests unitaires, des tests fonctionnels et bien sûr la réalisation applicative.
Objectifs pédagogiques
A l'issue du module, l'étudiant(e) sera capable de :
- En équipe, de concevoir et développer une application distribuée conséquente reposant sur les technologies du marché
- Rédiger un cahier des charges et une documentation technique
Compétence associée : Gérer un projet en groupe et communiquer
- en planifiant les étapes du projet
- en mettant en place une organisation et en environnement technique
- en communiquant (en langue anglaise) à l’oral et à l'écrit et en élaborant des documents techniques et/ou réglementaires dans cette langue
Apprentissages critiques
- Concevoir, développer et valider une application multi tiers
Anglais ECTShCMhTDhTP
Description
Ce module aborde le langage et la communication avancés associés à la lecture et à la rédaction de textes et de documents scientifiques, techniques et d'ingénierie, ainsi qu'à la présentation d'exposés oraux. L'accent sera mis sur les sujets relatifs à l'informatique, y compris le vocabulaire approprié pour les logiciels, le matériel, les systèmes, l'intelligence artificielle, etc. Les principaux sujets abordés sont les suivants : rédaction scientifique et technique, astuces pour une lecture efficace de documents techniques en anglais, compétences en matière de présentation orale, anglais professionnel, vocabulaire et terminologie informatiques spécialisés, préparation à un test de maîtrise de la langue anglaise (par exemple TOEIC)
Objectifs pédagogiques
A l'issue du module, l'étudiant(e) sera capable de :
- Communiquer à l'écrit et à l'oral dans un environnement professionnel (réalisation de poster, présentation orale, discussion de travail)
- Connaitre le format des épreuves certificatives, les situations présentées, le vocabulaire utilisé
- Mettre en oeuvre un programme d'entraînement régulier
Compétence associée : Gérer un projet en groupe et communiquer
- en communiquant (en langue anglaise) à l’oral et à l'écrit et en élaborant des documents techniques et/ou réglementaires dans cette langue
Apprentissages critiques
- Communiquer en langue anglaise dans le cadre professionnel
Configuration du logiciel (EAD) ECTShCMhTDhTP
Description
Dans le cadre général d'architectures logicielles, le cours présente d'abord le processus d'ingénierie de la ligne de produits logiciels standard, permettant des configurations variées. Dans ce contexte, la variabilité logicielle peut être spécifiée en utilisant des formules de la logique booléenne sur les briques de base, leurs caractéristiques et leurs dépendances (feature models). L'évolution de configurations et leur comportement dynamique peut être exprimé par un formalisme avec des annotations permettant la gestion de variabilité. Ces différents aspects sont illustrés sur des exemples de (dynamic) software product lines, services et applications dans le cloud, etc.
Cyber-sécurité (EAD) ECTShCMhTDhTP
Description
Cette UE vise l'acquisition de connaissances sur les questions de vulnérabilité des applications Web, d'analyse de risque de sécurité et de techniques de test de sécurité.
UEs au choix (2 parmi 3)
Ingénierie des exigences (EAD) ECTShCMhTDhTP
Description
Cette UE couvre les concepts et les pratiques de l'ingénierie des exigences, que ce soit dans un cycle de développement par phase (type cycle en V) ou dans un cycle de développement itératif et incrémental (type agile). L'ingénierie des exigences concerne l'expression de besoins dans le cadre d'un projet logiciel, avec des phases de collecte, d'analyse, de spécification et de validation & vérification de ces exigences.
Spécification et preuve de programme (EAD) ECTShCMhTDhTP
Description
Cet enseignement présente différents contextes d'application d'une approche logique en informatique. On y apprend notamment à formaliser des énoncés dans diverses logiques formelles (propositionnelle, du premier ordre, de Hoare, de typage, etc), à concevoir, construire et présenter rigoureusement des raisonnements dans ces logiques, puis à utiliser des logiciels d'aide à la mécanisation de ces démonstrations, comme Cubicle, Why3 ou Coq.
Machine Learning (EAD) ECTShCMhTDhTP
Description
Ce module présentera le paradigme de l'apprentissage machine, ses fondements, la manière dont une architecture doit être conçue pour répondre à un problème posé spécifique. Comment structurer les données, comment s'appuyer sur une architecture existante et la personnaliser, comment analyser un apprentissage et quels outils mettre en place pour analyser et optimiser ses performances seront autant de questions abordées dans ce module. Plusieurs exercices pratiques seront proposés dans ce sens.
Master 2e année - Semestre 10 (alternants)
Management des hommes (EAD) ECTShCMhTDhTP
Description
Ce cours fournit les outils de base relatifs à ce domaine de la gestion en matière de recrutement, d'appréciation du personnel, de formation, de rémunération. Il s'agit également d'ouvrir des pistes de réflexion utiles à l'action.
UEs au choix (2 parmi 3)
Systèmes et algorithmes distribués (EAD) ECTShCMhTDhTP
Description
Le but de cette UE est d'acquérir des compétences dans la maîtrise du développement d'applications et de services en réseau, principalement du point de vue des problématiques de communication et de synchronisation. Nous abordons donc les différents aspects liés à la communication entre programmes, leur mise en œuvre sur différents supports de communication, et à la synchronisation entre processus distribués.
Vérification à base d'automates (EAD) ECTShCMhTDhTP
Description
L'objectif de cette UE est d'approfondir la notion d'automate, particulièrement dans le cadre de la modélisation et de la vérification des systèmes. En effet, pour des raisons d'expressivité et d'algorithmique, de nombreuses approches formelles de la modélisation et de l'analyse des systèmes s'appuient sur des graphes finis enrichis, en marquant les états et les transitions. On obtient alors différents modèles d'automates finis étendus, pour lesquels il est nécessaire de maintenir un équilibre entre expressivité et complexité algorithmique des différents problèmes. En parallèle, il convient d'utiliser des logiques compatibles afin de décrire les propriétés voulues.
Test non fonctionnel (EAD) ECTShCMhTDhTP
Description
Cette UE a pour objectif de présenter plusieurs aspects, techniques ou méthodes innovantes, de test non fonctionnel. Elle présente différentes problématiques non strictement fonctionnelles, incluant le test de lignes de produit, les techniques de planification des tests d'intégration, la production de test avec un objectif non fonctionnel, comme le cas du contrôle d'accès et des politiques de sécurité, le test de performance et le stress testing.
Mémoire période 2 en entreprise ECTShCMhTDhTP
Description
Mémoire et soutenance correspondant à la seconde période en entreprise (de novembre à juin)