Maîtrise de Mathématiques et Informatique Programmes 09/03/02 1. Programmes des UE d'informatique UE 1 : Programmation 2 Approfondissements o traitements statique et dynamique de l'héritage et du sous-typage o algorithme de résolution de la surcharge o notion d'interface et programmation modulaire o correction des programmes: objets et invariants Programmation concurrente et distribuée o notions de processus et de processus légers o communications entre processus o principe des interactions client/serveur o objets distribués o applets Interfaces et programmation par événements o boîtes à outils graphiques : gestion de fenêtres, de vues et de contrôles o notion d'événement, boucle de gestion d'événements o outils de conception d'interfaces UE 2 : Calculabilité et complexité Le modèle des machines RAM : description d'une machine à la Von Neumann Le modèle des machines de Turing : fonctions T-calculables, machine de Turing universelle, existence de fonctions qui ne sont pas T-calculables Les fonctions primitives récursives, récursives et récursives partielles Thèse de Church : équivalence des modèles présentés comme argument en faveur de la thèse de Church Problèmes indécidables : langages récursifs et récursivement énumérables, problèmes indécidables, réduction algorithmique d'un problème à un autre, exemples Complexité abstraite : complexité en temps et en espace, classes de complexité, classes P et NP, réduction polynomiale, problèmes NP-complets UE 5 ou 6 : Programmation fonctionnelle et logique Objectif : Donner une approche conceptuelle de la programmation à travers deux grands paradigmes : la programmation fonctionnelle (langages LISP et ML) et la programmation logique (langage PROLOG). 1. Présentation des diverses approches pour la programmation. 2. Programmation fonctionnelle : o introduction à la programmation fonctionnelle non typée et typée : langages LISP (SCHEME) et ML(CAML) ; o principales caractéristiques de ces langages ; o syntaxe et structures de données ; o fonctionnalité ; o les affectations - les entrées/sorties; o évaluation des programmes - liaisons statique et dynamique des variables gestion d'environnement ; o sémantique opérationnelle pour ce type de langage : interprétation et compilation - machines à environnement. 3. Programmation logique : o introduction à la programmation logique : langage PROLOG ; o principales caractéristiques de ce type de programmation ; o syntaxe et structures de données - opérateur de coupure ; o sémantique des programmes PROLOG ; o le problème de la négation en PROLOG : l'hypothèse du monde clos et la négation par échec ; o utilisation de la méthode de résolution dans l'implantation machine de ce type de langage. Bibliographie Chazarain : Programmer avec SCHEME. De la pratique à la théorie, Thomson International, 1996. Hoogger : Programmer en logique, Masson, 1987. Weis and Leroy : Le langage CAML, Interéditions, 1993. UE 5 ou 6 : Algorithmique avancée Objectif : Maîtriser la conception d'algorithmes complexes dans des domaines d'application classiques. Chaque année, 2 ou 3 thèmes sont traités parmi : 1. Compression : - les concepts de base (modèles, entropie, performances...) ; - codage de Hufman statique et dynamique ; codage à la Ziv-Lempel ; codage arithmétique. 2. Codage : - canal de transmission ; - codage par fenêtre coulissante, par bloc ; - codage par convolution ; - illustration avec le codage du Minitel. 3. Cryptographie : - généralités : terminologie, les différentes attaques, les objectifs de la cryptographie, clé publique, clé privée ; - cryptographie élémentaire : codage par substitution par transposition ; - cryptographie à clé privée : DES ; - cryptographie à clé publique : RSA ; - cryptographie basée sur le problème du sac à dos. 4. Diagrammes de décisions binaires - fonctions booléennes, expressions booléennes, formes normales ; - arbre de décision binaire ; diagrammes de décision binaire ; opérations sur les BDD ; - applications. 5. Géométrie algorithmique : - localisation d'un point dans le plan ; - algorithmes pour l'enveloppe convexe ; - diagrammes de Voronoi UE 5 ou 6 : Algorithmique parallèle et distribuée Objectif : Comprendre les possibilités et les limites du calcul parallèle ou distribué. Etre capable de concevoir de tels algorithmes. 1. Algorithmes parallèles : - analyse des algorithmes classiques : calcul des sommes préfixes, list ranking, algorithmes de fusion de liste, calcul des composantes connexes ; - les différentes notions d'optimalité ; - les possibilités et les limites du traitement parallèle. 2. Algorithmes distribués : - modèles synchrone et asynchrone, propriétés des communications ; - algorithmes de base : élection, recherche en profondeur, plus court chemin, arbre de recouvrement minimal ; temps logiques ; photographies et détection de propriétés stables (compléments des algorithmes traités dans le tronc commun) ; aspect tolérance aux pannes : classification des défaillances, présentation des problèmes d'accord, algorithmes ou résultats d'impossibilité ; - réalisation de communications fiables, fifo, causal, atomique... (avec ou sans défaillances). Bibliographie Jaja : An introduction to parallel algorithms, Addison Wesley. N. Lynch : Distributed Algorithms, Morgan Kaufmann, 96. UE 5 ou 6 : Infographie Objectif : Présentation des principes et des méthodes à la base de l'Infographie. Une large place est faite à la géométrie algorithmique et aux développements récents liés à la synthèse d'images. Pour réaliser leurs projets, les étudiants ont accès à des systèmes graphiques de la dernière génération (Evans et Sutherland, SUN, ...) 1. Introduction au système graphique : - architecture ; - logiciel graphique standard. 2. Traitement d'image : - transformée rapide de Fourier ; - échantillonnage ; - analyse d'images (amélioration, compression, ...). 3. Mathématiques pour la synthèse d'image : - transformation ; - projections. 4. Courbes et surfaces (B-Spline, Bezier). 5. Elimination des lignes et surfaces cachées. 6. Géométrie fractale et applications. 7. Le tracé de rayon. 8. Textures. Bibliographie B. Péroche : La synthèse d'image, 1988, Hermes. D.F. Rogers : Procedural Elements for Computer Graphics, 1985, International Student Edition. J.D. Foley, A. Van dam, S.K. Feiner, J.F. Hugues : Computer Graphics, 1990, Addison Wesley. UE 5 ou 6 : Intelligence artificielle Objectif : Connaître les problèmes qui relèvent de l'IA et les méthodes permettant de les traiter. 1. Programmation logique, étude du langage PROLOG. 2. Représentation et résolution de problèmes, graphes d'états, recherches heuristiques, algorithme Ao*. 3. Systèmes experts, représentation et élaboration de connaissances, moteurs d'inférence, explications, métaconnaissances, traitement de l'incertitude ; maintenance de cohérence. Satisfaction de contraintes (Constraint Satisfaction Problem). 4. Agent intelligent. Bibliographie Bratko : Programmation en PROLOG pour l'Intelligence artificielle, Interéditions, 1988. UE 5 ou 6 : Structures algébriques de l'informatique Monoïdes et demi-anneaux : demi-groupes et monoïdes, fermeture transitive et son calcul, sous-monoïdes, morphismes de monoïdes, parties rationnelles et reconnaissables d'un monoïde Le monoïde libre : équations sur les mots, combinatoire des mots Théorème de Kleene : automates finis, déterminisation, minimisation, algorithmes de passage d'expressions rationnelles à des automates finis et inverse Arbres et algèbres libres : arbres représentés, F-algèbre, filtrage et unification Systèmes d'équations : théorème du point fixe, systèmes d'équations dans les mots et dans les arbres Systèmes de réécriture : confluence, systèmes de réécriture dans les mots et dans les arbres UE 5 ou 6 : Théorie de la Programmation Outils formels o termes formels, substitution, filtrage, unification. o relation de réduction : notions de confluence et de terminaison o systèmes de réécriture du premier ordre o lambda-calcul : étude de la réduction, étude du typage Programmation fonctionnelle o présentation du langage Objective Caml et programmation des principaux algorithmes sur les termes Description formelle d'un langage de programmation o syntaxe concrète et syntaxe abstraite o portée des identificateurs et notion d'environnement o règles de typage statique o règles d'évaluation Approches de la vérification de programmes o programmation impérative et invariants, logique de Hoare o logique d'ordre supérieure et spécification de programmes fonctionnels Mise en Oeuvre o réalisation d'un vérificateur de types puis d'un synthétiseur de types o réalisation d'un évaluateur UE 5 ou 6 : Utilisation des automates en algorithmique Chaque année, 2 ou 3 thèmes sont traités parmi : 1. Modélisation de processus infinitaires : - mots infinis ; - automates de Büchi, de Muller ; automates alternants ; - langages déterministes. 2. Logique sur les mots : - logique du premier ordre et du second ordre, logique temporelle ; - liens avec les langages rationnels et sans étoile ; - algorithmes pour tester la satisfaisabililté d'une formule ; - application à la vérification de systèmes informatiques. 3. Reconnaissance de motif (string-matching) Les méthodes de base étant supposées connues depuis la Licence, l'idée est d'introduire des méthodes plus avancées : - une méthode approchée : les différentes méthodes de reconnaissance avec erreurs d'un motif ; - reconnaissance d'une occurrence d'un motif dans un ensemble : l'algorithme de Aho-Corasick. 4. Dictionnaire Le problème posé est celui de la définition d'une structure de données efficace implémentant un index "long" (exemple : un dictionnaire, une encyclopédie, une brochure technique...) : - arbre des suffixes : Algorithmes de Creight et de Wiener ; - graphe acrylique des suffixes ; - automates des suffixes : version classique et version " condensée " (les transitions sont définies par des mots, non par des lettres). 5. Application aux problèmes du génome : - recherche de répétitions dans un texte ; statistique sur les fréquences d'apparition des facteurs ; - comparaison de mots (problème d'alignements de séquences génomiques par programmation dynamique). 6. Systèmes de numération : - arithmétique dans des bases non classiques de numération (Avezienis, Fibonacci,....) ; - problème d'ambiguité et de recherche de représentant canonique ; - complexité des opérations arithmétiques dans ces bases. 2. Programmes des UE de mathématiques UE 4 : Algèbre : Anneaux et corps (maîtrise, premier semestre) Anneaux o Anneaux euclidiens ; exemples. Anneaux principaux. o Élément irréductible. Factorisation dans Z[X], critère d'irréductibilité. o L'anneau K[X]/(P) Corps o Caractéristique o Élément algébrique. Extension algébrique, degré d'une extension finie. o Corps de rupture d'un polynôme irréductible, corps des racines d'un polynôme. o Corps finis. Factorisation de polynômes à coefficients dans Fq, algorithme de Berlekamp. UE 7 ou 8 : Codes et cryptographie (maîtrise, deuxième semestre) Codes correcteurs o Espace de Hamming, distance de Hamming. o Théorème de Shannon. Bornes usuelles (Gilbert, Hamming, Plotkin, Singleton). o Codes t-correcteurs, codes parfaits, codes MDS. o Codes linéaires. Codes cycliques. o Codes usuels: codes de Hamming, de Golay, de Reed-Muller, de ReedSolomon, codes BCH. o Le codage CIRC des CD. o Très éventuellement: réseaux associés aux codes binaires; automorphismes de codes, cas des codes de Hamming, du code de Golay G23. Rapport avec les géométries finies; t-designs. Cryptographie o Rappels sur le code RSA, sur DES. o Signature sécurisée. o o o preuves sans apport d'information (``zero knowledge''). Méthodes de factorisation: méthodes p- 1 et de Pollard, crible quadratique, méthode ECM (pour cette dernière, on définira de manière élémentaire les courbes elliptiques et leur loi de groupe, en admettant l'associativité - ou en la démontrant par du calcul formel.) Problème du logarithme discret: plus particulièrement, dans le cas de Fp*(méthode , méthodes de cribles). Bibliographie [1] J. H. Van Lint, Introduction to coding theory, 3rd edition, Springer, 1999. [2] M. Demazure, Cours d'algèbre : primalité, divisibilité, codes, Cassini, 1997. [3] N. Koblitz, A course in number theory and cryptography, 2nd edition, Springer, 1994. [4] G. Zémor, Cours de cryptographie, Cassini, 2000. UE 7 ou 8 : Analyse (maîtrise, deuxième semestre) Ce cours traitera des chapitres choisis d'analyse. Voici une liste (non exhaustive) de possibilités : Analyse de Fourier : Transformation de Fourier, séries de Fourier, formule de Poisson. Ondelettes. Équations aux dérivées partielles. Équations différentielles : Théorèmes d'existence et d'unicité. Équations à variables séparées. Équation de Newton. Équations différentielles linéaires. Fonctions d'une variable complexe : Séries entières, rayon de convergence, fonctions analytiques. Fonctions holomorphes, théorie de Cauchy. Principe du maximum. Fonctions méromorphes. Résidus. Applications. Analyse fonctionnelle : Norme d'une application linéaire. Espaces de Banach. Parties et applications convexes. Espaces lp. Espaces normés de dimension finie. Théorème de Banach-Steinhaus. Théorème du graphe fermé. Théorème de Hahn-Banach. Théorie spectrale : Opérateurs compacts. Théorie de Fredholm. Opérateurs autoadjoints : décomposition spectrale. Traitement du signal : voir le programme de l'UE de Maîtrise MIM 31MIM062 Analyse numérique : voir le programme de l'UE de Maîtrise MIM 31MIM032 UE 3 : Probabilités (maîtrise, premier semestre) Le modèle probabiliste o Variables aléatoires réelles et vectorielles o Lois de probabilités, fonctions caractéristiques Moments, covariances et régression linéaire Indépendance et conditionnement Vecteurs gaussiens Convergences o convergence presque-sûre, en probabilité o Lois des grands nombres o Théorème central limite UE 7 ou 8 : Statistique et Modélisation (maîtrise, deuxième semestre) Simulation de variables aléatoires o méthode d'inversion o méthode de rejet Notion de modèle statistique o modélisation, erreur expérimentale o modèle binomial, de Poisson, exponentiel, normal Introduction à l'estimation o méthodes des moments o principe du maximum de vraisemblance o lois limites des estimateurs o construction d'intervalles de confiance Introduction à la théorie des tests o Test de Neyman-Pearson o Test du 2 Fonction de répartition empirique o Théorème de Glivenko-Cantelli o Test de Kolmogorov-Smirnov Calcul approché d'intégrales par méthodes de Monte-Carlo o validation des résultats numériques o réduction de la variance Modèle linéaire gaussien o vecteurs gaussiens o Théorème de Cochran o estimation par les moindres carrés o Test de Fisher, de Student UE 3 : Logique (maîtrise, premier semestre) Décidabilité et méthodes de démonstration automatique : Elimination des quantificateurs. Application de l'élimination des quantificateurs, par exemple à la décidabilité de certaines arithmétiques faibles (arithmétique de Presburger). Extensions de la méthode des tableaux à la logique du premier ordre. Indécidabilité et incomplétude: Schéma d'induction. Arithmétique de Peano. Ensembles -définissables. Prouvabilité dans l'arithmétique. Fonctions représentables. Rapports avec les notions de fonction calculable et de problème indécidable. Indécidabilité de l'arithmétique de Peano et de la logique du premier ordre. Théorèmes d'incomplétude de Gödel. Réductions d'un problème à un autre. Problèmes complets dans une classe. UE 7 ou 8 : Algorithmes probabilistes et complexité (maîtrise, deuxième semestre) L'objectif de cet enseignement est une présentation de méthodes algorithmiques récentes utilisées dans différentes domaines tles que l'arithmétique, la cryptographie, la théorie des graphes et la géométrie algorithmique ainsi qu'une introduction à la mesure de complexité de ces algorithmes. Le fil conducteur est l'utilisation de résultats provenant de ces diverses branches des mathématiques pour prouver la correction des algorithmes présentés. Rappels sur les classes de complexité : P et NP et sur les problèmes NP-complets. Algorithmes de Las Vegas et de Monté Carlo. Classes de complexité probabilistes (PP, RP et BPP). Le problème de primalité est dans P et co-P. Test de primalité (Solovay-Strassen). Algorithme de Rabin-Miller. Echantillonnage aléatoire. Inégalité de Markov. Borne de Chernoff. Exemples en géom'etrie algorithmique (enveloppe convexe d'un ensemble de points). Exemples d'algorithmes sur les graphes (coupure minimale). Bibliographie [1] R. Lassaigne et M. de Rougemont, Logique et complexité, Hermès, 1996. [2] R. Motwani et P. Raghavan, Randomized algorithms, Cambridge University Press, 1995. [3] C. Papadimitriou, Computational Complexity, Addison Wessley, 1994.