Articles

Article (Arrêté du 9 septembre 2004 fixant le programme des concours d'admission en première année et en troisième année à l'Ecole normale supérieure de Cachan)

Article (Arrêté du 9 septembre 2004 fixant le programme des concours d'admission en première année et en troisième année à l'Ecole normale supérieure de Cachan)


A. - Architecture des machines et systèmes d'exploitation
1. Circuits logiques


Portes logiques, algèbre de Boole.
Circuits combinatoires : décodeurs, multiplexeurs, comparateurs. Circuits de calcul : décaleur, demi-additionneur, additionneur. Structure d'une unité arithmétique et logique.
Circuits à mémoire : bascules RS, bascule D. Structure d'une mémoire. Structure d'un ordinateur.


2. Microprogrammation


Architecture d'une micromachine, chemin des données, structure et exécution des micro-instructions, interprétation du langage machine.


3. Interruptions et entrées-sorties


Commutations de contexte, interruptions : niveaux et traitements.
Structure des bus, principe des entrées-sorties.


4. Processus


Etat d'un processus, représentation interne d'un processus par un bloc de contrôle.
Modèles de représentation des processus : graphes et automates finis.
Interactions de processus, problème du blocage : conditions nécessaires de blocage, méthodes de prévention, algorithme de détection, méthode d'évitement : algorithme du banquier.
Synchronisation de processus : problème de l'exclusion mutuelle, solutions logicielles.
Sémaphores, utilisation des sémaphores pour résoudre des problèmes classiques de synchronisation : le problème de l'exclusion mutuelle, le problème du producteur et du consommateur, le problème du lecteur et du rédacteur.


5. Gestion de la mémoire centrale
et ordonnancement de l'unité centrale


Principe de l'allocation contiguë, systèmes à partitions fixes ou variables.
Principe de l'allocation non contiguë, organisation matérielle des systèmes paginés et des systèmes segmentés, principaux algorithmes de pagination.
Ordonnanceurs, principaux algorithmes d'ordonnancement de l'unité centrale.


6. Gestion de la mémoire secondaire


Description des disques, algorithmes d'ordonnancement du disque.
Structure logique des fichiers, modes d'accès, allocation contiguë ou non contiguë, principales méthodes d'organisation des répertoires.


B. - Algorithmique et structures de données
1. Algorithmes


Notion d'algorithme, complexité d'un algorithme au sens du nombre d'opérations, exemples de calculs de complexité.


2. Structures de données classiques et algorithmes élémentaires


Listes, ensembles, arbres, graphes et leurs implantations.
Méthodes de parcours des arbres et des graphes : parcours en profondeur et en largeur.
Fermeture transitive, recherche des composantes connexes d'un graphe.
Arbres de recouvrement minimum d'un graphe, complexité.


3. Algorithmes de recherche


Recherche séquentielle, recherche dichotomique, arbres binaires de recherche : analyse du nombre de comparaisons.
Arbres AVL : adjonction et suppression, rééquilibrage.
Principe des méthodes de hachage, résolution des collisions par chaînage : chaînage séparé, hachage coalescent ; résolution des collisions par calcul : hachage linéaire et double hachage.


4. Algorithmes de tri


Tri par sélection, tri par insertion, tri rapide, tri par tas.
Complexité des algorithmes de tri : optimalité de la borne en O (n log2 n) pour les tris par comparaison.


C. - Théorie des langages et compilation
1. Langages


Structure de monoïde, monoïde libre, mots sur un alphabet, équations sur les mots.
Langages, systèmes de réécriture, grammaires et classification de Chomsky.


2. Langages rationnels


Expressions rationnelles et langages rationnels.
Automates finis et langages reconnaissables, lemme de l'étoile et théorème de Kleene.
Automates finis non déterministes, algorithme de déterminisation.
Algorithme de minimisation d'un automate fini.
Propriétés de fermeture de la famille des langages rationnels.


3. Langages algébriques


Grammaires algébriques (ou non contextuelles), arbres de dérivation, simplification des grammaires algébriques, forme normale de Greibach.
Automates à piles et langages algébriques, lemme d'itération.
Propriétés de fermeture de la famille des langages algébriques.


4. Analyse lexicale et analyse syntaxique


Rôle de l'analyse lexicale, spécification et reconnaissance des unités lexicales, utilisation d'automates finis déterministes pour l'analyse lexicale.
Rôle de l'analyse syntaxique, utilisation d'une grammaire pour l'analyse syntaxique.
Analyse descendante, analyse par descente récursive, grammaires LL (k).
Analyse ascendante, décalage et réduction, grammaires LR (k).


5. Compilation


Méthodes de traduction, contrôle de type, environnement d'exécution et production de code à partir de graphes acycliques.


D. - Calculabilité
1. Fonctions récursives, machines de Turing
et lambda-calcul


Ensembles partiellement ordonnés, treillis, fonctions monotones, fonctions continues, opérateur de point fixe.
Machines de Turing déterministes et non déterministes, machines à registres, langages récursifs et récursivement énumérables.
Fonctions calculables par une machine de Turing, fonctions récursives et primitives récursives.
Lambda-calcul, bêta-conversion, théorème de Church-Rosser, représentation des fonctions récursives, équivalence avec le modèle des machines de Turing, théorèmes de point fixe.


2. Décidabilité


Langages et problèmes indécidables : exemple du problème de l'arrêt d'une machine de Turing. Techniques de réduction.
Propriétés de décidabilité des langages rationnels et algébriques.


3. NP-complétude


Problèmes polynomiaux, définition de la classe P.
Transformations polynomiales, problèmes polynomialement équivalents.
Complexité des machines de Turing non déterministes, définition de la classe NP.
Problèmes NP-complets, théorème de Cook, autres exemples de problèmes NP-complets.


E. - Sémantique et logique
1. Logique


Formules logiques, interprétation d'une formule, validité d'une formule, notion de modèle. Classification des formules logiques, calcul propositionnel et calcul des prédicats du premier ordre. Théorèmes de complétude, de compacité et de finitude.
Formes normales prénexe, conjonctive et disjonctive, théorème de Herbrand.
Déduction naturelle, méthode de résolution et algorithme d'unification.
Eléments de programmation logique.


2. Sémantique


Description sémantique des programmes : sémantique dénotationnelle.
Interprétation des programmes par plus petit point fixe, théorème du point fixe de Knaster-Tarski.


3. Vérification de programmes


Logique de Hoare et preuves de programmes par assertions. Transformations de programme et preuves de correction.