Master d'informatique - Science et Ingénierie du Logiciel (SIL)

Liste chronologique des étapes d’admission
Etape
Validation d'une licence d'informatique
Modalités
Dossier via une plateforme Web (Parcours Sup, e-candidat, mon master, site web organisme de formation)
Lieu
transmission de documents (courrier postal ou électronique, dépôt sur un site web)
Bloc de compétences
Libellé descriptif du bloc
Tronc commun
Peut être suivi de manière indépendante sous réserve d’avoir les compétences pré-requises
Non
Qualification associée inscrite au RNCP ou Répertoire spécifique
Non
Ce bloc est
Libellé descriptif du bloc
Enseignements de parcours
Peut être suivi de manière indépendante sous réserve d’avoir les compétences pré-requises
Non
Qualification associée inscrite au RNCP ou Répertoire spécifique
Non
Libellé descriptif du bloc
Préparation et validation d’une immersion en entreprise (apprentissage)
Peut être suivi de manière indépendante sous réserve d’avoir les compétences pré-requises
Non
Qualification associée inscrite au RNCP ou Répertoire spécifique
Non
Ce bloc est
Niveau de diplôme minimum pour accéder à l’action via une VAPP
Nombre minimum d’année(s) d’expérience continue
5.00
Caractéristiques de l’action
Description détaillée
Niveau de diplôme minimum requis
Bac+3 / Niveau 6
Diplôme délivré
Master
Déroulement de l’action
Type(s) de parcours concerné(s)
Licence / Bachelor+ Master / Mastère
Modalité(s)
Durée globale
2.00
Unité
Année(s)
En Alternance
Non
Nombre d’heures en entreprise
2600
Précisions (fréquence, période, …)
Apprentissage ou stage à réaliser sur l'année (septembre à août) suivant le calendrier d'alternance établi annuellement

Formation en alternance dès la 1e année de Master
Rythme d'alternance hebdomadaire en Master 1: 2 jours à l'Université / 3 jours en entreprise
Rythme d'alternance hebdomadaire en Master 2: 1 semaine par mois à l'Université
Alternance sur une durée de
2.00
Unité
Année(s)
Raison sociale
Université de Strasbourg
Points de contact
Zone(s) géographique(s) gérée(s) par le contact pour l'action
Alsace : Bas-Rhin (67)
Fonction
Responsable du suivi des apprenants
Civilité
Madame
Prénom
Alice
Nom
AGOSTINI
Téléphone
03 68 85 01 92
Contact interne de l’organisme pour les processus de gestion du Numéric’Emploi
On
Zone(s) géographique(s) gérée(s) par le contact pour l'action
Alsace : Bas-Rhin (67)
Fonction
Responsable Admission des stagiaires / étudiants
Responsable du suivi des apprenants
Civilité
Madame
Prénom
Scolarité
Nom
UFR de mathématique et d'informatique
Téléphone
+33 (0)3 68 85 01 23
Contact interne de l’organisme pour les processus de gestion du Numéric’Emploi
Off
Affichage média(s) de contact dans le répertoire
Zone(s) géographique(s) gérée(s) par le contact pour l'action
Alsace : Bas-Rhin (67)
Fonction
Responsable Relations avec les Entreprises (pour stage/alternance)
Civilité
Monsieur
Prénom
Stéphane
Nom
CATELOIN
Téléphone
+33 (0)3 68 85 02 42
Contact interne de l’organisme pour les processus de gestion du Numéric’Emploi
Off
Affichage média(s) de contact dans le répertoire
Bloc de compétence
Phase de rattachement du bloc de compétence
Connaissances requises
Connaissances, Savoir-faire, Savoir-être abordés
Titre du module
Compilation
Thème(s) abordé(s) dans le module
Cet enseignement présente les principes fondamentaux implémentés dans les compilateurs de langages de programmation, et généralise leurs concepts à tout traitement d’un texte source d’entrée : analyse et/ou transformation en un autre texte de sortie.

Les principales étapes de traduction d'un programme source par un compilateur sont étudiées :
- Analyse lexicale : expressions régulières, utilisation de l'outil Lex,
- Analyse syntaxique : analyses ascendantes et descendantes, grammaires LL/SLR/LALR, utilisation de l'outil Yacc/Bison,
- Traduction dirigée par la syntaxe : association d’actions aux règles de grammaire et d’attributs aux symboles de la grammaire,
- Génération de code intermédiaire : implémentation des principales structures de contrôle des langages de programmation,
- Optimisation de programmes : tour d’horizon des principales passes d’analyse et d’optimisation des compilateurs,
- Réalisation d’un mini-compilateur dans le cadre d’un projet par équipe.
Titre du module
Algorithmique avancée
Thème(s) abordé(s) dans le module
Étude des principales stratégies algorithmiques : diviser pour régner, méthodes gloutonnes, programmation dynamique, branch and bound.Trois aspects sont abordés : la formalisation des problèmes, la conception des algorithmes, et l’analyse de leur complexité.
Titre du module
Sécurité
Thème(s) abordé(s) dans le module
Cette UE introduit les concepts de base de la sécurité de systèmes d'informations et présente son organisation en France. Elle explore les vulnérabilités auxquelles sont exposés les humains (mots de passe, ingénierie sociale), les systèmes (privilèges, confinement, concurrence), les services (web, accès distants) et les réseaux (écoute, authentification, déni de service). Elle traite des moyens de sécurisation techniques notamment la cryptographie, ainsi que les méthodologies de sécurité organisationnelles. Elle propose de mettre en œuvre ces notions au travers de divers travaux pratiques (manipulation de la bibliothèque openssl, gestion de certificats électroniques, filtrage, recherche de vulnérabilités, méthodologie d'attaque).
Titre du module
Calculabilité et complexité
Thème(s) abordé(s) dans le module
On décrit les modèles les plus généraux de calcul et de décision en informatique (qui sont équivalents) : machine de Turing, grammaire, fonction mu-récursive (avec cas particulier des fonctions récursives primitives). On précise la signification du non-déterminisme dans le calcul et la décision. Ensuite on donne les limites de ces modèles en montrant l'impossibilité de décider généralement certaines questions, comme l'arrêt d'une machine de Turing. Enfin on donne les classes fondamentales de complexité des algorithmes, P, NP et EXP, en particulier les problèmes NP-complets.
Titre du module
Programmation parallèle
Thème(s) abordé(s) dans le module
Cette unité d'enseignement étudie les concepts et la mise en œuvre de la programmation parallèle pour accélérer les traitements sur les architectures informatiques qui en sont capables. Les différentes architectures parallèles (machines vectorielles, multi-cœurs, clusters, accélérateurs matériels) y sont présentées ainsi que les différents types de parallélisme (parallélisme de tâches, de threads, d'instructions et de données) et leur efficacité (loi d'Amdahl, évaluation de performances). Cette UE abordera les techniques de parallélisation (analyse de dépendances, ordonnancement) et d'optimisation (localité mémoire, minimisation des communications). Les erreurs classiques de la programmation parallèle y sont détaillées (data race, défaut de synchronisation, incohérence des données), ainsi que les moyens de les identifier et les éviter. Les principes fondamentaux seront mis en oeuvre par la programmation multi-thread pour architecture à mémoire partagée en OpenMP, et par passage de messages pour architectures à mémoire distribuée en MPI.

Cet enseignement présentera :
- Les différents types d’architectures parallèles
- Les différentes méthodes de parallélisation d’applications
- Comment effectuer des mesures de performances fiables et vérifier l’efficacité d’une parallélisation
- Le langage MPI : communications point-à-point, communications collectives, communications non-bloquantes. Il est mis en oeuvre en TP par le développement de quelques applications types.
- Le langage OpenMP : directives de création de région parallèle, de partage de travail entre groupes de threads (boucles, sections, tâches), de synchronisation explicites. Il est mis en oeuvre en TP par la parallélisation de nombreux exemples de codes selon différentes techniques.

Un projet utilisant OpenMP et MPI est réalisé en binômes à la fin de cet enseignement
Cours / Topos en synchrone (heures)
72.00
Travaux dirigés en synchrone (heures)
70.00
Travaux pratiques en groupe en synchrone (heures)
36.00
Nom du bloc de compétence
10152
Etape(s) concernée(s)
Phase de rattachement du bloc de compétence
Connaissances requises
Connaissances, Savoir-faire, Savoir-être abordés
Titre du module
Preuves assistées par ordinateur
Thème(s) abordé(s) dans le module
Cet enseignement présente une introduction à la vérification formelle des preuves et les assistants de preuve en utilisant le programme Coq. Cette matière développe des outils pour comprendre l'interaction entre la formalisation des résultats mathématiques et la programmation.

- Motivations. Logiciels critiques. Outils pour garantir la fiabilité des logiciels. Exemples d’utilisation des assistants de preuve pour prouver des propriétés mathématiques et la correction de systèmes informatiques critiques.
- Preuves en logique propositionnelle et calcul des prédicats
- Langages d’interaction à base de tactiques.
- Types énumérés, types produit et types somme.
- Structures de données inductives (listes, arbres), prédicats inductifs.
- Définitions, filtrage, fonctions récursives structurelles.
- Preuves par récurrence.
- Polymorphisme et arguments implicites.
- Fonctions d’ordre supérieur : fold, map.
- Sémantique de Brouwer/Heyting/Kolmogorov. Correspondance de Curry-Howard.
Titre du module
Architecture et développement web
Thème(s) abordé(s) dans le module
Cet enseignement présente les principes et techniques avancés de développement client/serveur permettant de réaliser et faire communiquer entre elles des applications WEB ou mobile. Les différentes briques nécessaires à cet objectif y seront abordées pour en maîtriser les principaux aspects. Durant ce cours, les étudiants réalisent un mini-développement mettant en œuvre tout ou partie de ces principes dans le cadre d'un projet.

MVC (séparation des responsabilités, moteurs de templates, frameworks php, rewrites rule apache)

Développement web avancé (système de dépendances php et injection, système de dépendances npm, sass / less, webpack)

Web services (XML + SOAP client & serveur, Json + REST client & serveur)

Développement d’API REST (bonnes pratiques rest, GraphQL + gRPC)

Les mécaniques de temps réel (Http stateless, Serveur node & socket.io)
Cours / Topos en synchrone (heures)
29.00
Travaux pratiques en groupe en synchrone (heures)
31.00
Nom du bloc de compétence
10153
Etape(s) concernée(s)
Phase de rattachement du bloc de compétence
Connaissances requises
Connaissances, Savoir-faire, Savoir-être abordés
Titre du module
Mission S1
Thème(s) abordé(s) dans le module
Stage professionnel ou de recherche (tout au long du semestre). Rapport de début de stage comportant, entre autres, une description précise des différents environnements du stage (logistique, scientifique, humain, etc.), de son contexte, de ses problématiques et de ses objectifs, et le cas échéant, un descriptif des premiers travaux accomplis.

Faire une page de titre
Faire un plan de rapport (synthétiser et structurer la restitution de son travail en entreprise)
Relire et vérifier l’orthographe et la grammaire du rapport
Faire une bibliographie
Cours / Topos en synchrone (heures)
26.00
Nom du bloc de compétence
10154
Etape(s) concernée(s)
Phase de rattachement du bloc de compétence
Connaissances requises
Connaissances, Savoir-faire, Savoir-être abordés
Titre du module
Algorithmes distribués
Thème(s) abordé(s) dans le module
Cette unité d'enseignement présente différents modèles des systèmes distribués et traite des grandes catégories de problèmes théoriques liées à l'algorithmique distribuée. Pour chaque catégorie de problèmes, de nombreuses solutions algorithmiques sont présentées en fonction du contexte (modèle de communication et type d'architecture sous-jacente). Ces solutions, de leur complexité à leur démonstration, sont discutées et comparées en détail. Cette UE permet aussi de découvrir et de pratiquer un langage de spécification/vérification dédié aux algorithmes distribués, le langage Promela. D'autres aspects plus techniques sont également abordés en TP via la plateforme de simulation JBotSim.

Les algorithmes présentés dans ce cours traitent les problématiques suivantes dans le contexte des systèmes distribués :
- Horloges logiques, ordre total et précédence causale
- Mécanismes de diffusion pour la cohérence et le partage des données réparties
- Exclusion mutuelle.
- Élection d’un leader.
- Détection d’interblocage et de terminaison.
- Calcul d’un état global cohérent pour garantir des points de reprise fiables.
- Consensus.
- Blockchain.
- Protocoles de population.
- Essaim de robots.
- Spécifier et vérifier les grands principes algorithmiques d'une solution distribuée avec le langage Promela
Titre du module
Programmation avancée
Thème(s) abordé(s) dans le module
L’objectif de cette UE est de faire un tour d’horizon des principaux concepts des langages de programmation. Ce cours sera illustré de petits exemples écrits dans de nombreux langages différents afin d’illustrer les différents concepts.Les concepts suivants seront présentés:typage fort/faible, typage dynamique/statique, concept de compilation, interprétation, JIT, bytecode, VM, programmation objet orientée classe vs prototype polymorphisme ad-hoc et polymorphisme paramétrique, sous typage, héritage vs héritage multiple, traits et mixins, surcharge, gestion de la mémoire (GC, comptage de références, pointeurs intelligents), pointeurs et références, clôtures, liaison statique vs liaison dynamique, programmation par continuations, types de données algébriques, réutilisation et modèles de composants logiciels (design patterns), variance et covariance, genericité: modules/foncteurs/interfaces, meta-programmation.
Titre du module
Architecture des logiciels
Thème(s) abordé(s) dans le module
Les grands logiciels actuels ont une complexité telle que la définition d’une archi-tecture logicielle est devenue un préalable à leur conception. Ces architectures ont des impacts tant en termes de coûts de développement, de déploiement et d’exploitation qu’en termes de dimensionnement, d’efficacité énergétique ou de flux réseaux.Cet enseignement a pour objectif de présenter les principales notions utilisées dans les architectures logicielles et les impacts croisés entre l’architecture du logiciel et les contraintes opérationnelles. Les aspects pratiques sont centrés sur les outils et les métiers autour du DevOps.
Titre du module
Travail d'étude et de recherche - en anglais
Thème(s) abordé(s) dans le module
Cette UE est une ouverture aux travaux de recherche scientifique en général et à ceux du domaine de l'informatique en particulier. Son objectif est de présenter le domaine d'activité de la recherche scientifique (métiers, laboratoires, instituts, qu'ils soient publics ou privés), ses interactions avec la société, et former aux problématiques, méthodes et productions de la recherche en informatique (lecture et analyse critique d'articles scientifiques, prospective, outils et plateformes). Elle donnera un aperçu des problèmes ouverts dans les thématiques des équipes de recherche auxquelles s'adossent les différents parcours du master informatique. Elle proposera une première expérience de recherche, tuteurée par un chercheur ou un enseignant-chercheur, donnant lieu à un mémoire et une soutenance devant un jury composé de chercheurs et d'enseignants-chercheurs.
Cours / Topos en synchrone (heures)
70.00
Apprentissage et travaux pratiques en autonomie / asynchrone (heures)
150.00
Travaux dirigés en synchrone (heures)
28.00
Travaux pratiques en groupe en synchrone (heures)
40.00
Nom du bloc de compétence
10152
Etape(s) concernée(s)
Phase de rattachement du bloc de compétence
Connaissances requises
Connaissances, Savoir-faire, Savoir-être abordés
Titre du module
Système et programmation temps-réel
Thème(s) abordé(s) dans le module
Cet enseignement présente les concepts fondamentaux des applications « temps-réel » : ordonnancement, analyse d’ordonnancement, tâches périodiques et apériodiques, inversion de priorité, dépendances entre tâches. Leurs mises en œuvre sont illustrées par des travaux pratiques utilisant les extensions temps-réel de la norme POSIX, sur une architecture classique et sur une plateforme embarquée.

Les principaux concepts des systèmes temps-réel sont étudiés :
Types de tâches : tâches périodiques, tâches apériodiques, serveurs de tâches apériodiques.
Stratégies d’ordonnancement temps-réel : high priority first, rate-monotonic, earliest deadline first, least laxity first.
Méthodes d’analyse d’ordonnancement : taux d’utilisation du processeur, analyse rate-monotonic, analyse itérative basée sur le théorème de la zone critique.
Techniques d’ordonnancement sous contraintes de dépendances.
Protocoles de minimisation de l’inversion de priorité.
Pratique des extensions temps-réel de la norme POSIX.
Déploiement sur plateforme embarquée et cross-compilation.
Titre du module
Optimisation et transformations de code
Thème(s) abordé(s) dans le module
Cette UE présente des techniques de transformation de programmes permettant d’améliorer sensiblement leurs performances en termes de vitesse d’exécution et de consommation d’énergie.

Analyse de boucles et de boucles imbriquées : analyse de dépendances, localité temporelle et spatiale des accès aux données, validité des transformations.
Transformation de boucles et de boucles imbriquées : échange de boucles, fusion/fission de boucles, pavage de boucles, torsion de boucles.
Généralisation des transformations de boucles avec le modèle polyédrique.
Transformations génériques : réduction du nombre d’opérations, pré-calculs, réduction du nombre de conditionnelles, réduction de force, calcul approximé.
Optimisations des fonctions : inlining, spécialisation, mémoïsation (fonctions récursives).
Techniques d’analyse et de profilage de code : outils de profilage (gprof, perf, papi, likwid), registres compteurs, modèle roofline.
Cours / Topos en synchrone (heures)
22.00
Travaux dirigés en synchrone (heures)
10.00
Travaux pratiques en groupe en synchrone (heures)
28.00
Nom du bloc de compétence
10153
Etape(s) concernée(s)
Phase de rattachement du bloc de compétence
Connaissances requises
Connaissances, Savoir-faire, Savoir-être abordés
Titre du module
Mission 2
Thème(s) abordé(s) dans le module
Stage professionnel ou de recherche (tout au long du semestre). Rapport de début de stage comportant, entre autres, une description précise des différents environnements du stage (logistique, scientifique, humain, etc.), de son contexte, de ses problématiques et de ses objectifs, et le cas échéant, un descriptif des premiers travaux accomplis.

Faire une page de titre
Faire un plan de rapport (synthétiser et structurer la restitution de son travail en entreprise)
Relire et vérifier l’orthographe et la grammaire du rapport
Faire une bibliographie
Nom du bloc de compétence
10154
Etape(s) concernée(s)
Phase de rattachement du bloc de compétence
Connaissances requises
Connaissances, Savoir-faire, Savoir-être abordés
Titre du module
Traitement et données large échelle
Thème(s) abordé(s) dans le module
Cet enseignement a pour objectif d'enseigner les principes du développement d’applications de calcul et de manipulation des données profitant des avantages offerts par les architectures distribuées modernes en terme de robustesse, de fiabilité et de scalabilité. Les systèmes de gestion de données NoSQL ainsi que les méthodes d'indexation efficaces pour des recherches optimisées sur des masses de données seront introduits. Les stratégies de fragmentation et de réplication de données adaptées aux architectures fortement distribuées seront présentées. La mise en place et la configuration d’architecture distribuées pour le calcul réparti seront traitées dans ce cours. Le paradigme de programmation map/reduce pour la répartition des traitements sera présenté et mis en pratique par l’utilisation des framework de calcul distribué Hadoop et Spark.

- Présentation des différents modèles de bases de données, en particulier des modèles dit NoSQL :
°Bases de données clé-valeur.
°Bases de données documents.
°Bases de données graphes.
°Autres modèles.
- Contrainte de la répartition sur la cohérence des données et sur les performances des opérations de manipulation de données. Théorème CAP.
- Architecture multi-maîtres. Architecture nœud primaire – nœuds secondaires.
- Fragmentation des données. Fragmentation horizontale et verticale. Fragmentation par intervalle, par fonction de hachage. Fragmentation dynamique : intervalle dynamique et hachage cohérent.
- Réplication. Écritures synchrone/synchrone. Mécanismes de résistances aux pannes.
- Paradigme de programmation Map/Reduce. Traduction d’algorithmes standards dans le paradigme de programmation Map/Reduce.
- Architecture pour le calcul répartie utilisant Map/Reduce :
°Systèmes de fichiers HDFS.
°Présentation des framework Hadoop et Spark
Titre du module
Projet de master
Thème(s) abordé(s) dans le module
Cet enseignement a pour objectif la réalisation d'un projet d'ampleur dans le domaine correspondant au parcours de master. Les étudiants y mettent en œuvre à la fois leur expertise technique et leur capacité à travailler en autonomie ou en équipe pour répondre à un maître d'ouvrage. Les sujets, tournés vers la R&D et l'innovation, sont proposés par des entreprises, des chercheurs ou par les étudiants eux-mêmes. Ils correspondent au niveau technique et organisationnel attendu de la part des diplômés de niveau master en informatique. Ils permettent aux étudiants de valoriser leur travail et d'augmenter leur visibilité pour leur entrée dans le monde professionnel ou leur poursuite d'études en doctorat.
Titre du module
Langue
Thème(s) abordé(s) dans le module
Objectifs linguistiques et langagiersn: travail individualisé sur la langue en fonction du niveau des étudiants et de leurs besoins leur permettant de viser des compétences C1 en master, soit en centre de ressources ou à distance.
Selon votre profil (filière et disponibilité horaire), vous aurez un choix plus ou moins large de modules d’anglais auxquels vous pourrez vous inscrire.
Titre du module
Vie professionnelle
Thème(s) abordé(s) dans le module
Ce module est composé de quatre matières :
- Impact environnemental et sociétal du numérique
- Droit
- Communication
- Entrepreneuriat
Cours / Topos en synchrone (heures)
70.00
Travaux dirigés en synchrone (heures)
40.00
Travaux pratiques en groupe en synchrone (heures)
6.00
Nom du bloc de compétence
10152
Etape(s) concernée(s)
Phase de rattachement du bloc de compétence
Connaissances requises
Connaissances, Savoir-faire, Savoir-être abordés
Titre du module
Certification du logiciel
Thème(s) abordé(s) dans le module
Tout développement logiciel est confronté au défi d'éviter les bugs ou, après coup, de vérifier leur absence. L’objectif de cette U.E. est de présenter différentes techniques permettant de garantir la correction d'un logiciel avec un bon degré de confiance. On présentera la sémantique des langages de programmation, aussi bien du point de vue opérationnel qu’axiomatique (Logique de Hoare).Nous utiliserons l’assistant de preuves Coq pour décrire formellement ses sémantiques ainsi que leurs propriétés. Nous implanterons quelques programmes simples dans ce cadre.

Outils pour garantir la fiabilité du logiciel.
Approche formelle et utilisation du logiciel Coq.
Descriptions formelles des sémantiques opérationnelles (petits pas et grands pas) et de la sémantique axiomatique
Lien entre ces deux types de sémantique
Exemples de preuves en logique de Hoare
Implantation de la logique de Hoare en Coq et preuves formelles de programmes simples
Approches alternatives pour garantir la fiabilité du logiciel
Titre du module
Analyse et architecture logicielle orientée objet
Thème(s) abordé(s) dans le module
Réutilisation et modèles de composants logiciels (design patterns), applications à base de composants, langage de description d’architecture logicielle, notation unifiée de modélisation (UML). Mise en œuvre de notions acquises dans les modules de génie logiciel précédents, à travers la conception et le développement dans un langage à objets d’une application conséquente. Phases à prendre en compte : gestion d’un projet, analyse d’un problème, description de l’architecture, procédures de qualité, métriques du logiciel, rédaction d’une documentation (utilisateur et administrateur), construction de jeux de tests, problèmes liés à l’évolutivité.

Quelques généralités d'introduction, avec un bréviaire rapide UML.
Principe généraux d'architecture, incluant aussi la dimension sociale du travail d'architecte.
Les design patterns.
Un exemple réel de construction organique d'une architecture dans le cadre d'un jeu vidéo.
Un cas d'étude sur l'impact de l'architecture sur les performances.
SOLID
Titre du module
Programmation mobile avancée
Thème(s) abordé(s) dans le module
Cet enseignement présente les différentes plateformes mobiles (téléphones, tablettes, TV, affichage voiture) ainsi que les deux principaux systèmes d’exploitation mobile actuels (iOS, Android).Comprendre les besoins et l'utilisation des applications mobiles, pour déterminer la technologie de développement à préconiser (Native, Cross Plateform, Web Progressive, No-Code).Il initie à la programmation sur terminaux mobiles physique ou émulé. Ceci pour maitriser au mieux l’écosystème mis à disposition pour créer efficacement des applications mobiles modernes.

Historique de l’environnement mobile
Android Studio/Wb Kit, émulateurs
Frameworks de développement
API Rest
Systèmes de publication d’applications mobiles et politique des stores
Qualité du code, bonnes pratiques de développement
Ergonomie et expérience de l’utilisateur final (UX/UI)
Titre du module
Programmation embarquée
Thème(s) abordé(s) dans le module
Ce cours aborde tous les aspects de la programmation des micro-contrôleurs : compréhension de l'architecture, lecture d'un schéma de description de circuits, compilation croisée, association de capteurs et d'actionneurs externes compatibles

Architecture des micro-controleurs
Schéma de description de circuits
Compilation croisée
Association de capteurs et d’actionneurs externes
Utilisation des kit arduino en TP
Cours / Topos en synchrone (heures)
72.00
Travaux dirigés en synchrone (heures)
6.00
Travaux pratiques en groupe en synchrone (heures)
42.00
Nom du bloc de compétence
10153
Etape(s) concernée(s)
Phase de rattachement du bloc de compétence
Connaissances requises
Connaissances, Savoir-faire, Savoir-être abordés
Titre du module
Accompagnement de stage
Thème(s) abordé(s) dans le module
Recherche du stage et insertion dans l’entreprise ou le laboratoire.
Suivi et encadrement du stage, via des bilans intermédiaires.
Rédaction du mémoire et préparation de la soutenance.
Cours / Topos en synchrone (heures)
26.00
Apprentissage et travaux pratiques en autonomie / asynchrone (heures)
11.00
Nom du bloc de compétence
10154
Etape(s) concernée(s)
Label attribué
Non
Période(s) de démarrage d’une session (promotion)
Zone géographique
Adresse
Pôle API - Bâtiment J, 300 Boulevard Sébastien Brant - 67412 Illkirch Graffenstaden cedex
Mois de début
Nombre minimum d’apprenants par session
10
Nombre maximum d’apprenants par session
20
Domaine de compétences du diplôme
Présentation générale
Ce parcours vise à former des spécialistes en ingénierie des logiciels, capables de concevoir, développer, optimiser et certifier des logiciels dans un large spectre de situations. L'expertise en développement se traduira par la capacité de participer ou de gérer des projets de développement, qu'ils concernent des logiciels embarqués sur systèmes temps-réel, des calculs intensifs sur systèmes parallèles, des applications industrielles, web ou mobiles.

Master d'informatique - Science et Ingénierie du Logiciel (SIL)

Cursus : Enseignement supérieur (Universités, Ecoles d'ingénieur, Ecoles privées,...)
Parcours : Licence / Bachelor+ Master / Mastère
Toutes les informations affichées dans cette page sont communiquées à titre indicatif et sont non contractuelles. Veuillez contacter l’organisme de formation pour toute vérification.
  • Ce parcours vise à former des spécialistes en ingénierie des logiciels, capables de concevoir, développer, optimiser et certifier des logiciels dans un large spectre de situations. L'expertise en développement se traduira par la capacité de participer ou de gérer des projets de développement, qu'ils concernent des logiciels embarqués sur systèmes temps-réel, des calculs intensifs sur systèmes parallèles, des applications industrielles, web ou mobiles.
    • Semestre 1

      Tronc commun
      Caractéristique du bloc
      • Etape du parcours : Cycle Master/Mastère (M1)
      • Ce bloc est : obligatoire
      Formation - Volume horaire : 178.0 heure(s) dont 178.0 heure(s) en synchrone
      • Travaux dirigés en synchrone (heures) : 70.0
      • Cours / Topos en synchrone (heures) : 72.0
      • Travaux pratiques en groupe en synchrone (heures) : 36.0
      Modalité de validation :
      • Contrôle de connaissances
      • Exercice sur une plateforme numérique en ligne
      • Exercice en situation reconstituée (TD/TP)
      Prérequis nécessaire(s) pour suivre le bloc :
      • Connaissances acquises lors d'une action précédente du parcours OU par le diplôme prérequis
      Module(s) :
      • Compilation
        • Type de module : obligatoire
        • Thèmes abordés :
          Cet enseignement présente les principes fondamentaux implémentés dans les compilateurs de langages de programmation, et généralise leurs concepts à tout traitement d’un texte source d’entrée : analyse et/ou transformation en un autre texte de sortie.

          Les principales étapes de traduction d'un programme source par un compilateur sont étudiées :
          - Analyse lexicale : expressions régulières, utilisation de l'outil Lex,
          - Analyse syntaxique : analyses ascendantes et descendantes, grammaires LL/SLR/LALR, utilisation de l'outil Yacc/Bison,
          - Traduction dirigée par la syntaxe : association d’actions aux règles de grammaire et d’attributs aux symboles de la grammaire,
          - Génération de code intermédiaire : implémentation des principales structures de contrôle des langages de programmation,
          - Optimisation de programmes : tour d’horizon des principales passes d’analyse et d’optimisation des compilateurs,
          - Réalisation d’un mini-compilateur dans le cadre d’un projet par équipe.
      • Algorithmique avancée
        • Type de module : obligatoire
        • Thèmes abordés :
          Étude des principales stratégies algorithmiques : diviser pour régner, méthodes gloutonnes, programmation dynamique, branch and bound.Trois aspects sont abordés : la formalisation des problèmes, la conception des algorithmes, et l’analyse de leur complexité.
      • Sécurité
        • Type de module : obligatoire
        • Thèmes abordés :
          Cette UE introduit les concepts de base de la sécurité de systèmes d'informations et présente son organisation en France. Elle explore les vulnérabilités auxquelles sont exposés les humains (mots de passe, ingénierie sociale), les systèmes (privilèges, confinement, concurrence), les services (web, accès distants) et les réseaux (écoute, authentification, déni de service). Elle traite des moyens de sécurisation techniques notamment la cryptographie, ainsi que les méthodologies de sécurité organisationnelles. Elle propose de mettre en œuvre ces notions au travers de divers travaux pratiques (manipulation de la bibliothèque openssl, gestion de certificats électroniques, filtrage, recherche de vulnérabilités, méthodologie d'attaque).
      • Calculabilité et complexité
        • Type de module : obligatoire
        • Thèmes abordés :
          On décrit les modèles les plus généraux de calcul et de décision en informatique (qui sont équivalents) : machine de Turing, grammaire, fonction mu-récursive (avec cas particulier des fonctions récursives primitives). On précise la signification du non-déterminisme dans le calcul et la décision. Ensuite on donne les limites de ces modèles en montrant l'impossibilité de décider généralement certaines questions, comme l'arrêt d'une machine de Turing. Enfin on donne les classes fondamentales de complexité des algorithmes, P, NP et EXP, en particulier les problèmes NP-complets.
      • Programmation parallèle
        • Type de module : obligatoire
        • Thèmes abordés :
          Cette unité d'enseignement étudie les concepts et la mise en œuvre de la programmation parallèle pour accélérer les traitements sur les architectures informatiques qui en sont capables. Les différentes architectures parallèles (machines vectorielles, multi-cœurs, clusters, accélérateurs matériels) y sont présentées ainsi que les différents types de parallélisme (parallélisme de tâches, de threads, d'instructions et de données) et leur efficacité (loi d'Amdahl, évaluation de performances). Cette UE abordera les techniques de parallélisation (analyse de dépendances, ordonnancement) et d'optimisation (localité mémoire, minimisation des communications). Les erreurs classiques de la programmation parallèle y sont détaillées (data race, défaut de synchronisation, incohérence des données), ainsi que les moyens de les identifier et les éviter. Les principes fondamentaux seront mis en oeuvre par la programmation multi-thread pour architecture à mémoire partagée en OpenMP, et par passage de messages pour architectures à mémoire distribuée en MPI.

          Cet enseignement présentera :
          - Les différents types d’architectures parallèles
          - Les différentes méthodes de parallélisation d’applications
          - Comment effectuer des mesures de performances fiables et vérifier l’efficacité d’une parallélisation
          - Le langage MPI : communications point-à-point, communications collectives, communications non-bloquantes. Il est mis en oeuvre en TP par le développement de quelques applications types.
          - Le langage OpenMP : directives de création de région parallèle, de partage de travail entre groupes de threads (boucles, sections, tâches), de synchronisation explicites. Il est mis en oeuvre en TP par la parallélisation de nombreux exemples de codes selon différentes techniques.

          Un projet utilisant OpenMP et MPI est réalisé en binômes à la fin de cet enseignement
      Enseignements de parcours
      Caractéristique du bloc
      • Etape du parcours : Cycle Master/Mastère (M1)
      • Ce bloc est : obligatoire pour un parcours de spécialisation au sein de l'action
      Formation - Volume horaire : 60.0 heure(s) dont 60.0 heure(s) en synchrone
      • Cours / Topos en synchrone (heures) : 29.0
      • Travaux pratiques en groupe en synchrone (heures) : 31.0
      Modalité de validation :
      • Contrôle de connaissances
      • Exercice sur une plateforme numérique en ligne
      • Exercice en situation reconstituée (TD/TP)
      Prérequis nécessaire(s) pour suivre le bloc :
      • Connaissances acquises lors d'une action précédente du parcours OU par le diplôme prérequis
      Module(s) :
      • Preuves assistées par ordinateur
        • Type de module : obligatoire au sein d'un parcours de spécialisation
        • Thèmes abordés :
          Cet enseignement présente une introduction à la vérification formelle des preuves et les assistants de preuve en utilisant le programme Coq. Cette matière développe des outils pour comprendre l'interaction entre la formalisation des résultats mathématiques et la programmation.

          - Motivations. Logiciels critiques. Outils pour garantir la fiabilité des logiciels. Exemples d’utilisation des assistants de preuve pour prouver des propriétés mathématiques et la correction de systèmes informatiques critiques.
          - Preuves en logique propositionnelle et calcul des prédicats
          - Langages d’interaction à base de tactiques.
          - Types énumérés, types produit et types somme.
          - Structures de données inductives (listes, arbres), prédicats inductifs.
          - Définitions, filtrage, fonctions récursives structurelles.
          - Preuves par récurrence.
          - Polymorphisme et arguments implicites.
          - Fonctions d’ordre supérieur : fold, map.
          - Sémantique de Brouwer/Heyting/Kolmogorov. Correspondance de Curry-Howard.
      • Architecture et développement web
        • Type de module : obligatoire au sein d'un parcours de spécialisation
        • Thèmes abordés :
          Cet enseignement présente les principes et techniques avancés de développement client/serveur permettant de réaliser et faire communiquer entre elles des applications WEB ou mobile. Les différentes briques nécessaires à cet objectif y seront abordées pour en maîtriser les principaux aspects. Durant ce cours, les étudiants réalisent un mini-développement mettant en œuvre tout ou partie de ces principes dans le cadre d'un projet.

          MVC (séparation des responsabilités, moteurs de templates, frameworks php, rewrites rule apache)

          Développement web avancé (système de dépendances php et injection, système de dépendances npm, sass / less, webpack)

          Web services (XML + SOAP client & serveur, Json + REST client & serveur)

          Développement d’API REST (bonnes pratiques rest, GraphQL + gRPC)

          Les mécaniques de temps réel (Http stateless, Serveur node & socket.io)
      Préparation et validation d’une immersion en entreprise (apprentissage)
      Caractéristique du bloc
      • Etape du parcours : Cycle Master/Mastère (M1)
      • Ce bloc est : obligatoire
      Formation - Volume horaire : 26.0 heure(s) dont 26.0 heure(s) en synchrone
      • Cours / Topos en synchrone (heures) : 26.0
      Modalité de validation :
      • Exercice en situation professionnelle
      Prérequis nécessaire(s) pour suivre le bloc :
      • Connaissances acquises lors d'une action précédente du parcours OU par le diplôme prérequis
      Module(s) :
      • Mission S1
        • Type de module : obligatoire au sein d'un parcours de spécialisation
        • Thèmes abordés :
          Stage professionnel ou de recherche (tout au long du semestre). Rapport de début de stage comportant, entre autres, une description précise des différents environnements du stage (logistique, scientifique, humain, etc.), de son contexte, de ses problématiques et de ses objectifs, et le cas échéant, un descriptif des premiers travaux accomplis.

          Faire une page de titre
          Faire un plan de rapport (synthétiser et structurer la restitution de son travail en entreprise)
          Relire et vérifier l’orthographe et la grammaire du rapport
          Faire une bibliographie
    • Semestre 2

      Tronc commun
      Caractéristique du bloc
      • Etape du parcours : Cycle Master/Mastère (M1)
      • Ce bloc est : obligatoire
      Formation - Volume horaire : 288.0 heure(s) dont 138.0 heure(s) en synchrone
      • Apprentissage et travaux pratiques en autonomie / asynchrone (heures) : 150.0
      • Travaux dirigés en synchrone (heures) : 28.0
      • Cours / Topos en synchrone (heures) : 70.0
      • Travaux pratiques en groupe en synchrone (heures) : 40.0
      Modalité de validation :
      • Contrôle de connaissances
      • Exercice sur une plateforme numérique en ligne
      • Exercice en situation reconstituée (TD/TP)
      Prérequis nécessaire(s) pour suivre le bloc :
      • Connaissances acquises lors d'une action précédente du parcours OU par le diplôme prérequis
      Module(s) :
      • Algorithmes distribués
        • Type de module : obligatoire
        • Thèmes abordés :
          Cette unité d'enseignement présente différents modèles des systèmes distribués et traite des grandes catégories de problèmes théoriques liées à l'algorithmique distribuée. Pour chaque catégorie de problèmes, de nombreuses solutions algorithmiques sont présentées en fonction du contexte (modèle de communication et type d'architecture sous-jacente). Ces solutions, de leur complexité à leur démonstration, sont discutées et comparées en détail. Cette UE permet aussi de découvrir et de pratiquer un langage de spécification/vérification dédié aux algorithmes distribués, le langage Promela. D'autres aspects plus techniques sont également abordés en TP via la plateforme de simulation JBotSim.

          Les algorithmes présentés dans ce cours traitent les problématiques suivantes dans le contexte des systèmes distribués :
          - Horloges logiques, ordre total et précédence causale
          - Mécanismes de diffusion pour la cohérence et le partage des données réparties
          - Exclusion mutuelle.
          - Élection d’un leader.
          - Détection d’interblocage et de terminaison.
          - Calcul d’un état global cohérent pour garantir des points de reprise fiables.
          - Consensus.
          - Blockchain.
          - Protocoles de population.
          - Essaim de robots.
          - Spécifier et vérifier les grands principes algorithmiques d'une solution distribuée avec le langage Promela
      • Programmation avancée
        • Type de module : obligatoire
        • Thèmes abordés :
          L’objectif de cette UE est de faire un tour d’horizon des principaux concepts des langages de programmation. Ce cours sera illustré de petits exemples écrits dans de nombreux langages différents afin d’illustrer les différents concepts.Les concepts suivants seront présentés:typage fort/faible, typage dynamique/statique, concept de compilation, interprétation, JIT, bytecode, VM, programmation objet orientée classe vs prototype polymorphisme ad-hoc et polymorphisme paramétrique, sous typage, héritage vs héritage multiple, traits et mixins, surcharge, gestion de la mémoire (GC, comptage de références, pointeurs intelligents), pointeurs et références, clôtures, liaison statique vs liaison dynamique, programmation par continuations, types de données algébriques, réutilisation et modèles de composants logiciels (design patterns), variance et covariance, genericité: modules/foncteurs/interfaces, meta-programmation.
      • Architecture des logiciels
        • Type de module : obligatoire
        • Thèmes abordés :
          Les grands logiciels actuels ont une complexité telle que la définition d’une archi-tecture logicielle est devenue un préalable à leur conception. Ces architectures ont des impacts tant en termes de coûts de développement, de déploiement et d’exploitation qu’en termes de dimensionnement, d’efficacité énergétique ou de flux réseaux.Cet enseignement a pour objectif de présenter les principales notions utilisées dans les architectures logicielles et les impacts croisés entre l’architecture du logiciel et les contraintes opérationnelles. Les aspects pratiques sont centrés sur les outils et les métiers autour du DevOps.
      • Travail d'étude et de recherche - en anglais
        • Type de module : obligatoire
        • Thèmes abordés :
          Cette UE est une ouverture aux travaux de recherche scientifique en général et à ceux du domaine de l'informatique en particulier. Son objectif est de présenter le domaine d'activité de la recherche scientifique (métiers, laboratoires, instituts, qu'ils soient publics ou privés), ses interactions avec la société, et former aux problématiques, méthodes et productions de la recherche en informatique (lecture et analyse critique d'articles scientifiques, prospective, outils et plateformes). Elle donnera un aperçu des problèmes ouverts dans les thématiques des équipes de recherche auxquelles s'adossent les différents parcours du master informatique. Elle proposera une première expérience de recherche, tuteurée par un chercheur ou un enseignant-chercheur, donnant lieu à un mémoire et une soutenance devant un jury composé de chercheurs et d'enseignants-chercheurs.
      Enseignements de parcours
      Caractéristique du bloc
      • Etape du parcours : Cycle Master/Mastère (M1)
      • Ce bloc est : obligatoire pour un parcours de spécialisation au sein de l'action
      Formation - Volume horaire : 60.0 heure(s) dont 60.0 heure(s) en synchrone
      • Travaux dirigés en synchrone (heures) : 10.0
      • Cours / Topos en synchrone (heures) : 22.0
      • Travaux pratiques en groupe en synchrone (heures) : 28.0
      Modalité de validation :
      • Contrôle de connaissances
      • Exercice sur une plateforme numérique en ligne
      • Exercice en situation reconstituée (TD/TP)
      Prérequis nécessaire(s) pour suivre le bloc :
      • Connaissances acquises lors d'une action précédente du parcours OU par le diplôme prérequis
      Module(s) :
      • Système et programmation temps-réel
        • Type de module : obligatoire au sein d'un parcours de spécialisation
        • Thèmes abordés :
          Cet enseignement présente les concepts fondamentaux des applications « temps-réel » : ordonnancement, analyse d’ordonnancement, tâches périodiques et apériodiques, inversion de priorité, dépendances entre tâches. Leurs mises en œuvre sont illustrées par des travaux pratiques utilisant les extensions temps-réel de la norme POSIX, sur une architecture classique et sur une plateforme embarquée.

          Les principaux concepts des systèmes temps-réel sont étudiés :
          Types de tâches : tâches périodiques, tâches apériodiques, serveurs de tâches apériodiques.
          Stratégies d’ordonnancement temps-réel : high priority first, rate-monotonic, earliest deadline first, least laxity first.
          Méthodes d’analyse d’ordonnancement : taux d’utilisation du processeur, analyse rate-monotonic, analyse itérative basée sur le théorème de la zone critique.
          Techniques d’ordonnancement sous contraintes de dépendances.
          Protocoles de minimisation de l’inversion de priorité.
          Pratique des extensions temps-réel de la norme POSIX.
          Déploiement sur plateforme embarquée et cross-compilation.
      • Optimisation et transformations de code
        • Type de module : obligatoire au sein d'un parcours de spécialisation
        • Thèmes abordés :
          Cette UE présente des techniques de transformation de programmes permettant d’améliorer sensiblement leurs performances en termes de vitesse d’exécution et de consommation d’énergie.

          Analyse de boucles et de boucles imbriquées : analyse de dépendances, localité temporelle et spatiale des accès aux données, validité des transformations.
          Transformation de boucles et de boucles imbriquées : échange de boucles, fusion/fission de boucles, pavage de boucles, torsion de boucles.
          Généralisation des transformations de boucles avec le modèle polyédrique.
          Transformations génériques : réduction du nombre d’opérations, pré-calculs, réduction du nombre de conditionnelles, réduction de force, calcul approximé.
          Optimisations des fonctions : inlining, spécialisation, mémoïsation (fonctions récursives).
          Techniques d’analyse et de profilage de code : outils de profilage (gprof, perf, papi, likwid), registres compteurs, modèle roofline.
      Préparation et validation d’une immersion en entreprise (apprentissage)
      Caractéristique du bloc
      • Etape du parcours : Cycle Master/Mastère (M1)
      • Ce bloc est : obligatoire
      Modalité de validation :
      • Exercice en situation professionnelle
      Prérequis nécessaire(s) pour suivre le bloc :
      • Connaissances acquises lors d'une action précédente du parcours OU par le diplôme prérequis
      Module(s) :
      • Mission 2
        • Type de module : obligatoire au sein d'un parcours de spécialisation
        • Thèmes abordés :
          Stage professionnel ou de recherche (tout au long du semestre). Rapport de début de stage comportant, entre autres, une description précise des différents environnements du stage (logistique, scientifique, humain, etc.), de son contexte, de ses problématiques et de ses objectifs, et le cas échéant, un descriptif des premiers travaux accomplis.

          Faire une page de titre
          Faire un plan de rapport (synthétiser et structurer la restitution de son travail en entreprise)
          Relire et vérifier l’orthographe et la grammaire du rapport
          Faire une bibliographie
    • Semestre 3

      Tronc commun
      Caractéristique du bloc
      • Etape du parcours : Cycle Master/Mastère (M2)
      • Ce bloc est : obligatoire
      Formation - Volume horaire : 116.0 heure(s) dont 116.0 heure(s) en synchrone
      • Travaux dirigés en synchrone (heures) : 40.0
      • Cours / Topos en synchrone (heures) : 70.0
      • Travaux pratiques en groupe en synchrone (heures) : 6.0
      Modalité de validation :
      • Contrôle de connaissances
      • Exercice sur une plateforme numérique en ligne
      • Exercice en situation reconstituée (TD/TP)
      Prérequis nécessaire(s) pour suivre le bloc :
      • Connaissances acquises lors d'une action précédente du parcours OU par le diplôme prérequis
      Module(s) :
      • Traitement et données large échelle
        • Type de module : obligatoire
        • Thèmes abordés :
          Cet enseignement a pour objectif d'enseigner les principes du développement d’applications de calcul et de manipulation des données profitant des avantages offerts par les architectures distribuées modernes en terme de robustesse, de fiabilité et de scalabilité. Les systèmes de gestion de données NoSQL ainsi que les méthodes d'indexation efficaces pour des recherches optimisées sur des masses de données seront introduits. Les stratégies de fragmentation et de réplication de données adaptées aux architectures fortement distribuées seront présentées. La mise en place et la configuration d’architecture distribuées pour le calcul réparti seront traitées dans ce cours. Le paradigme de programmation map/reduce pour la répartition des traitements sera présenté et mis en pratique par l’utilisation des framework de calcul distribué Hadoop et Spark.

          - Présentation des différents modèles de bases de données, en particulier des modèles dit NoSQL :
          °Bases de données clé-valeur.
          °Bases de données documents.
          °Bases de données graphes.
          °Autres modèles.
          - Contrainte de la répartition sur la cohérence des données et sur les performances des opérations de manipulation de données. Théorème CAP.
          - Architecture multi-maîtres. Architecture nœud primaire – nœuds secondaires.
          - Fragmentation des données. Fragmentation horizontale et verticale. Fragmentation par intervalle, par fonction de hachage. Fragmentation dynamique : intervalle dynamique et hachage cohérent.
          - Réplication. Écritures synchrone/synchrone. Mécanismes de résistances aux pannes.
          - Paradigme de programmation Map/Reduce. Traduction d’algorithmes standards dans le paradigme de programmation Map/Reduce.
          - Architecture pour le calcul répartie utilisant Map/Reduce :
          °Systèmes de fichiers HDFS.
          °Présentation des framework Hadoop et Spark
      • Projet de master
        • Type de module : obligatoire
        • Thèmes abordés :
          Cet enseignement a pour objectif la réalisation d'un projet d'ampleur dans le domaine correspondant au parcours de master. Les étudiants y mettent en œuvre à la fois leur expertise technique et leur capacité à travailler en autonomie ou en équipe pour répondre à un maître d'ouvrage. Les sujets, tournés vers la R&D et l'innovation, sont proposés par des entreprises, des chercheurs ou par les étudiants eux-mêmes. Ils correspondent au niveau technique et organisationnel attendu de la part des diplômés de niveau master en informatique. Ils permettent aux étudiants de valoriser leur travail et d'augmenter leur visibilité pour leur entrée dans le monde professionnel ou leur poursuite d'études en doctorat.
      • Langue
        • Type de module : obligatoire
        • Thèmes abordés :
          Objectifs linguistiques et langagiersn: travail individualisé sur la langue en fonction du niveau des étudiants et de leurs besoins leur permettant de viser des compétences C1 en master, soit en centre de ressources ou à distance.
          Selon votre profil (filière et disponibilité horaire), vous aurez un choix plus ou moins large de modules d’anglais auxquels vous pourrez vous inscrire.
      • Vie professionnelle
        • Type de module : obligatoire
        • Thèmes abordés :
          Ce module est composé de quatre matières :
          - Impact environnemental et sociétal du numérique
          - Droit
          - Communication
          - Entrepreneuriat
      Enseignements de parcours
      Caractéristique du bloc
      • Etape du parcours : Cycle Master/Mastère (M2)
      • Ce bloc est : obligatoire pour un parcours de spécialisation au sein de l'action
      Formation - Volume horaire : 120.0 heure(s) dont 120.0 heure(s) en synchrone
      • Travaux dirigés en synchrone (heures) : 6.0
      • Cours / Topos en synchrone (heures) : 72.0
      • Travaux pratiques en groupe en synchrone (heures) : 42.0
      Modalité de validation :
      • Contrôle de connaissances
      • Exercice sur une plateforme numérique en ligne
      • Exercice en situation reconstituée (TD/TP)
      Prérequis nécessaire(s) pour suivre le bloc :
      • Connaissances acquises lors d'une action précédente du parcours OU par le diplôme prérequis
      Module(s) :
      • Certification du logiciel
        • Type de module : obligatoire au sein d'un parcours de spécialisation
        • Thèmes abordés :
          Tout développement logiciel est confronté au défi d'éviter les bugs ou, après coup, de vérifier leur absence. L’objectif de cette U.E. est de présenter différentes techniques permettant de garantir la correction d'un logiciel avec un bon degré de confiance. On présentera la sémantique des langages de programmation, aussi bien du point de vue opérationnel qu’axiomatique (Logique de Hoare).Nous utiliserons l’assistant de preuves Coq pour décrire formellement ses sémantiques ainsi que leurs propriétés. Nous implanterons quelques programmes simples dans ce cadre.

          Outils pour garantir la fiabilité du logiciel.
          Approche formelle et utilisation du logiciel Coq.
          Descriptions formelles des sémantiques opérationnelles (petits pas et grands pas) et de la sémantique axiomatique
          Lien entre ces deux types de sémantique
          Exemples de preuves en logique de Hoare
          Implantation de la logique de Hoare en Coq et preuves formelles de programmes simples
          Approches alternatives pour garantir la fiabilité du logiciel
      • Analyse et architecture logicielle orientée objet
        • Type de module : obligatoire au sein d'un parcours de spécialisation
        • Thèmes abordés :
          Réutilisation et modèles de composants logiciels (design patterns), applications à base de composants, langage de description d’architecture logicielle, notation unifiée de modélisation (UML). Mise en œuvre de notions acquises dans les modules de génie logiciel précédents, à travers la conception et le développement dans un langage à objets d’une application conséquente. Phases à prendre en compte : gestion d’un projet, analyse d’un problème, description de l’architecture, procédures de qualité, métriques du logiciel, rédaction d’une documentation (utilisateur et administrateur), construction de jeux de tests, problèmes liés à l’évolutivité.

          Quelques généralités d'introduction, avec un bréviaire rapide UML.
          Principe généraux d'architecture, incluant aussi la dimension sociale du travail d'architecte.
          Les design patterns.
          Un exemple réel de construction organique d'une architecture dans le cadre d'un jeu vidéo.
          Un cas d'étude sur l'impact de l'architecture sur les performances.
          SOLID
      • Programmation mobile avancée
        • Type de module : obligatoire au sein d'un parcours de spécialisation
        • Thèmes abordés :
          Cet enseignement présente les différentes plateformes mobiles (téléphones, tablettes, TV, affichage voiture) ainsi que les deux principaux systèmes d’exploitation mobile actuels (iOS, Android).Comprendre les besoins et l'utilisation des applications mobiles, pour déterminer la technologie de développement à préconiser (Native, Cross Plateform, Web Progressive, No-Code).Il initie à la programmation sur terminaux mobiles physique ou émulé. Ceci pour maitriser au mieux l’écosystème mis à disposition pour créer efficacement des applications mobiles modernes.

          Historique de l’environnement mobile
          Android Studio/Wb Kit, émulateurs
          Frameworks de développement
          API Rest
          Systèmes de publication d’applications mobiles et politique des stores
          Qualité du code, bonnes pratiques de développement
          Ergonomie et expérience de l’utilisateur final (UX/UI)
      • Programmation embarquée
        • Type de module : obligatoire au sein d'un parcours de spécialisation
        • Thèmes abordés :
          Ce cours aborde tous les aspects de la programmation des micro-contrôleurs : compréhension de l'architecture, lecture d'un schéma de description de circuits, compilation croisée, association de capteurs et d'actionneurs externes compatibles

          Architecture des micro-controleurs
          Schéma de description de circuits
          Compilation croisée
          Association de capteurs et d’actionneurs externes
          Utilisation des kit arduino en TP
    • Semestre 4

      Préparation et validation d’une immersion en entreprise (apprentissage)
      Caractéristique du bloc
      • Etape du parcours : Cycle Master/Mastère (M2)
      • Ce bloc est : obligatoire
      Formation - Volume horaire : 37.0 heure(s) dont 26.0 heure(s) en synchrone
      • Apprentissage et travaux pratiques en autonomie / asynchrone (heures) : 11.0
      • Cours / Topos en synchrone (heures) : 26.0
      Modalité de validation :
      • Exercice en situation professionnelle
      • Exposé
      • Rapport de projet
      Prérequis nécessaire(s) pour suivre le bloc :
      • Connaissances acquises lors d'une action précédente du parcours OU par le diplôme prérequis
      Module(s) :
      • Accompagnement de stage
        • Type de module : obligatoire
        • Thèmes abordés :
          Recherche du stage et insertion dans l’entreprise ou le laboratoire.
          Suivi et encadrement du stage, via des bilans intermédiaires.
          Rédaction du mémoire et préparation de la soutenance.
    • Planification

      Mode de planification
      • Sessions planifiées de manière récurrente
      Période(s) de démarrage d’une session (promotion)

      Alsace : Bas-Rhin (67)
      • Lieu : Pôle API - Bâtiment J, 300 Boulevard Sébastien Brant - 67412 Illkirch Graffenstaden cedex
      • Début de session en Septembre
      • Nombre minimum d’apprenants par session : 10
      • Nombre maximum d’apprenants par session : 20

    • Modalités n°1

      Durée globale 2.0 année(s)
      Proportion de l'action pouvant être réalisé à distance : Pas de possibilité ou non autorisé
      Immersion en entreprise :
      • Nombre d'heure en entreprise : 2600
      • Modalité : Contrat d'alternance, alternance sur une durée de 2.0 année(s)
      • Précisions:
        Apprentissage ou stage à réaliser sur l'année (septembre à août) suivant le calendrier d'alternance établi annuellement

        Formation en alternance dès la 1e année de Master
        Rythme d'alternance hebdomadaire en Master 1: 2 jours à l'Université / 3 jours en entreprise
        Rythme d'alternance hebdomadaire en Master 2: 1 semaine par mois à l'Université
    • Validation de l'action

      Contrôle continu au cours des deux années
      Périodes en entreprise
    • Modalité pédagogique

      • Cours / Topo
      • Travaux Pratiques en groupe encadrés par enseignant / professionnel d’entreprise
      • Projet individuel
      • Projet en groupe
      • Formalisation structurée des travaux (rapport de projet)
      • Immersion en entreprise pour mise en pratique des compétences en contexte professionnel
    • Outils pédagogiques

      • Plateforme technique pour les exercices
      • Poste de travail et périphériques informatiques
      • Banque de médias contenant des documents, des tutos vidéos, …
    • Moyens techniques

      • Poste de travail informatique de type PC au centre de formation
      • Poste de travail (PC portable, tablette, ...) appartenant au stagiaire
      • Plateforme de serveurs, container, ... (à préciser)
    • Etape n°1 - Validation d'une licence d'informatique

      Modalité : Dossier via une plateforme Web (Parcours Sup, e-candidat, mon master, site web organisme de formation)
      Lieu : transmission de documents (courrier postal ou électronique, dépôt sur un site web)