Deuxième année (M1 SIF)
La seconde année du parcours informatique de l'ENS Rennes correspond au M1 informatique parcours SIF (M1 SIF). Le tronc commun est plus petit, laissant plus de place pour la spécialisation.
C'est également le début de l'initiation à la recherche via des cours de méthodologie (XTRA 1 et 2) et un projet de recherche encadré par un.e chercheur.se du laboratoire IRISA de Rennes.
Le tableau suivant récapitule l'ensemble des cours disponibles en M1 SIF :
M1 SIF – Semestre 1 | M1 SIF – Semestre 2 | ||||||
Tronc commun | Options (Un cours à prendre pour chaque ligne) | Tronc commun | Options (2 parmi les 4 suivantes) | ||||
SEM1 - Séminaire de recherche 1 | BOX - Bio-informatique expérimentale | THX- Théorie de la complexité | SEM2 - Séminaire de recherche 2 | MVFA - Modélisation et Vérification Formelle par Automates | LRC - Logique et représentation des connaissances | ||
ANG - Anglais | TS - Traitement du signal | MPI - Programmation parallèle | ANG - Anglais | CG - Introduction to Computer Graphics | ML - Machine learning | ||
XTRA1 - Préparation à la recherche 1 | SEM - Sémantique | ACF - Analyse et conception formelle | XTRA2 - Préparation à la recherche 2 | ||||
PROJ1 - Projet de recherche 1 | PROJ2 - Projet de recherche 2 | ||||||
SEA - Systèmes d'Exploitation Avancés | STG - Stage de recherche | ||||||
SOBR - Sobriété numérique | GCC - General Compiler Concepts | ||||||
TI - Théorie de l'Information | |||||||
EPISTEMO - Epistémologie des sciences |
Modules communs S1 et S2
Initiation à la recherche
Cette section comprends les modules d'initiation à la recherche suivants :
- Séminaire 1 (SEM1) - Semestre 1
- Préparation à la recherche 1 (XTRA1)
- Séminaire 2 (SEM2) - Semestre 2
- Préparation à la recherche 2 (XTRA2)
L'objectif des modules d'initiation à la recherche est de former les étudiant.e.s aux métiers de la recherche. Les deux modules de séminaires permetttent aux étudiant.e.s d'ouvrir leurs perspectives scientifiques en rencontrant des chercheurs.ses représentant tous les aspects de la recherche en informatique.
Les deux modules de préparation à la recherche visent à former les étudiant.e.s à la méthodologie du métier de chercheur. Le premier module consiste porte sur la réalisation d'une présentation scientifique et le second sur le travail d'écriture d'un document de recherche.
Anglais
Cette section comprends les modules suivants :
- Anglais 1 - Semestre 1
- Anglais 2 - Semestre 2
Les étudiant.e.s suivent des cours d'anglais chaque semaine en fonction de leur niveau. L'année s'achève par l'examen du TOEIC qui valide le niveau d'anglais nécessaire à l'obtention du diplome de l'établissement.
Projet de recherche (PROJ)
Cette section comprends les modules suivants :
- Projet de recherche 1 - Semestre 1
- Projet de recherche 2 - Semestre 2
Le projet de recherche est un module centrale du M1 SIF : il consiste à collaborer avec un.e chercheur.se pendant toute l'année scolaire. L'étudiant.e sélectionne un sujet de projet en début d'année et rencontre son encadrant.e chaque semaine. Entre deux rendez-vous, l'étudiant.e doit consacrer plusieurs heures à ce projet afin de pouvoir présenter de nouveaux résultats ou de nouvelles idées lors du prochain rendez-vous.
Ce module permet de mieux connaitre le métier de chercheur, d'approfondir une thématique de recherche, et d'acquerir des soft-skills nécessaire pour organiser son travail de recherche et les intéractions avec l'encadrant.e.
M1 SIF - Semestre 1
Systèmes d'exploitation avancés (SEA)
L'objectif de ce module est d'initier les étudiants à l'utilisation et la réalisation de systèmes d'exploitation. Y sont étudiés les concepts fondamentaux des systèmes d'exploitation (processus lourds et légers, synchronisation, édition de liens statique et dynamique, entrées/sorties, adressage virtuel, pagination à la demande, allocation dynamique de mémoire), ainsi que leur mise en oeuvre sur machine. Des travaux pratiques permettent d'acquérir des compétences techniques via un projet au choix : (i) modification dynamique de code sur Linux (utilisation de *ptrace* et des ressources contenues dans */proc*) (ii) de développer les morceaux centraux d'un petit système d'exploitation (synchronisation entre processus, pagination à la demande, fichiers mappés).Théorie de la complexité (THX)
La théorie de la complexité permet de classer les problèmes algorithmiques en fonction de leur complexité intrinsèque. Cette classification permet de motiver les choix utilisés en pratique pour résoudre un tel problème. Par exemple, pour un problème NP-complet, il est raisonnable en pratique de s'appuyer sur un solveur SAT. Le cours débute avec les classes de complexité usuelles : LOGSPACE, NLOGSPACE, P, NP, PSPACE, etc.On étudiera les machines de Turing alternantes qui permettent d'offrir un point de vue jeu à 2 joueurs pour démontrer des résultats de complexité.
On démontre certains grands théorème de la théorie de la complexité comme le théorème de Saitch, le théorème de Immerman-Szelepcsényi, les théorèmes de hiérarchie et le théorème de Karp-Lipton.
Bio-informatique expérimentale (BOX)
L'objectif de ce cours est d'introduire les concepts fondamentaux de la bioinformatique des séquences et de fournir aux étudiants en informatique théorique une expérience pratique sur la manière dont les algorithmes avancés et les structures de données sont appliqués dans la réalité. Le cours aborde les principes de base du séquençage de l'ADN et permet de comprendre le type de données générées par ces technologies, ainsi que les concepts essentiels utilisés pour leur analyse, tels que l'assemblage et l'alignement des séquences, incluant des techniques plus contemporaines comme le sketching. Enfin, le cours comprend la lecture et la présentation de publications sur des méthodes avant-gardistes ainsi qu'un projet pratique de développement logiciel, qui implique la conception et l'implémentation d'algorithmes pour résoudre un problème bioinformatique spécifique.Sémantique (SEM)
Ce cours a un double objectif : d'une part présenter les concepts les concepts et techniques pour étudier les fondements des langages de programmation, et d'autre part apprendre à mener une démonstration en interaction avec l'assistant de preuve Coq. Le thème central est une vision des programmes et des langages comme étant des objets mathématiques sur lesquels il est possible de raisonner. Les sujets abordés comprennent en particulier les techniques opérationnelles pour définir des sémantiques formelles de langages de programmation, ainsi que les systèmes de types.Analyse et Conception Formelles (ACF)
L’UE ACF vise à initier les étudiants à l’utilisation de méthodes formelles pour la spécification et le développement de logiciels sûrs. L’accent est mis sur la compréhension des formules logiques et sur leur utilisation pour la spécification de propriétés de programmes. Les programmes considérés seront définis dans un style fonctionnel. L'outil de développement formel utilisé est Isabelle/HOL et le langage d'exportation et d'intégration choisi est Scala.A l’issue de cette UE, l’étudiant doit être capable de programmer une application dans un langage de type fonctionnel et de définir en logique les propriétés attendues de cette application. Il doit, également, être en mesure de formaliser les programmes et les propriétés à l’aide d’un assistant de preuve et de mener à bien leur vérification dans cet outil.
Traitement du signal (TS)
L'objectif du module est d'enseigner aux étudiants les concepts de base des problèmes de reconstruction. Le cours revisite plusieurs problèmes/résultats standards dans un formalisme commun et permet aux étudiants d'avoir une vision unifiée de la littérature scientifique de ce domaine.Programmation parallèle (HPC)
L’objectif du module est d’entretenir et améliorer votre niveau en programmation C. Il y a finalement assez peu de concepts apportés dans ce module, et beaucoup de pratique. Cela ne veut pas dire qu’il n’y a pas de concepts intéressants en HPC, mais seulement que ce module fait le choix de mettre l’accent sur la pratique.Sobriété numérique (SOBR)
Le module est séparé en deux parties : une partie qui vise à rappeler les concepts de base de l'étude du système Terre pour étudier l'anthropocène, et de sa déclinaison numérique. Une partie qui étudie un des usages verts du numérique : pour de la modélisation.M1 SIF - Semestre 2
General Compiler Concepts (GCC)
Ce module présente une vue d'ensemble des concepts utilisés pour concevoir un compilateur. Le cours présente les notions de bases de langages formels nécessaire pour écrire un parser, les algorithmes permettant de construire une représentation interne similaire à ce qui est utilisé dans les compilateur classiques, quelques optimisations classiques et les phases critique du back-end du compilateur.Le cours est accompagné d'une série de TP visant à implémenter un compilateur pour un langage proche du C, vers une architecture RISC-V.
Théorie de l'information (TI)
TODOLogique et Représentation des Connaissances (LRC)
Ce cours est une introduction à l'Intelligence Artificielle (IA) qui met l'accent sur les fondations logiques et les problèmes de représentation des connaissances et du raisonnement. Avant le succès récent des méthodes d'apprentissage automatique et de l'IA parfois dite "numérique" basée sur les données, l'IA avait beaucoup été développée en se fondant sur la logique et la notion de connaissance. Ce cours se veut une introduction à cette IA parfois dite "symbolique", un domaine de recherche qui est toujours très actif en IA. Les étudiants apprendront des méthodes et outils formels qui permettent à des agents (artificiels) de raisonner, de coopérer et de prendre des décisions individuelles ou collectives de façon autonome.Computer Graphics (CG)
Ce module propose d'aborder les aspects avancés de l'animation graphique en se focalisant d'une part sur l'animation de scènes 3D virtuelles: chaines cinématiques pour représenter les squelettes polyarticulés, animation procédurale et animation par capture de mouvement, blending entre mouvements capturés, adaptation de posture, et d'autre part sur techniques de planification de mouvements pour les entités virtuelles: représentation de l'environnement, planification d'actions et de trajectoires, detection de collision et adaptation de trajectoires. Différentes applications seront détaillées (animation de personnages, animation de caméra).La partie TP se composera d'un temps de montée en compétences sur les technologies de l'animation, et d'un projet à réaliser consistant à animer une créature virtuelle à l'aide des techniques vues en cours.
Modélisation et Vérification Formelle par Automates (MVFA)
L'objectif de ce cours est de transmettre certaines techniques classiques, basées sur le "model checking", afin de mener une analyse fonctionnelle d'un système informatique réactif aux étapes précoces de sa conception.Machine Learning (ML)
Ce module vise à couvrir les notions et problèmes classiques en apprentissage machine (Machine Learning) : apprentissage à partir d'exemples, types de supervision, évaluation des modèles, représentation des données, modèles standards et réseaux de neurones profonds.À la fin du cours, vous serez en mesure de
- reconnaître le contexte d'apprentissage auquel vous êtes confronté·e ;
- choisir un modèle adapté, l'appliquer, et évaluer ses performances ;
- préparer les données.
Philosophie des sciences (EPISTEMO)
Le module présente des questions d'épistémologie en se servant de *La structure des révolutions scientifiques* de Thomas Kuhn (la SRS) comme fil conducteur. À chaque étape, la SRS est confrontée à d'autres propositions, plus anciennes ou plus récentes. À l'issue de ce cours, les participants auront exploré une grande partie des questions épistémologiques classiques et auront appris à en parler subtilement.Stage de recherche (Stage)
Stage de recherche dans un laboratoire public ou privé à l'étranger. L'objectif de ce module est de poursuivre l'initiation à la recherche de l'étudiant en découvrant les environnements de recherche à l'étranger. Ce stage doit durer au minimum 8 semaines. L'évaluation du module est réalisée par l'encadrant du stage et pendant la soutenance de stage qui a lieu juste avant la rentrée suivante.
Mise à jour le 14 janvier 2025