Apporter aux étudiants les connaissances théoriques,
techniques et pratiques leur permettant
d'étudier, concevoir et réaliser
des logiciels correspondant aux besoins de l'organisme
auquel ces logiciels sont destinés.
Plan du cours
Méthodologie
Schéma directeur d'un projet permettant de replacer le travail
à accomplir dans le cadre stratégique général du système
d'information de l'organisme.
Approche de la gestion de projet en vue d'acquérir les bases de
l'organisation des développements, de pouvoir en évaluer
les coûts, les risques et les délais.
Méthodes formelles de spécification et vérification
La méthode Z : spécification en logique du premier ordre.
Abstraction et raffinement.
Les ASM (abstract state machines) de Yuri Gurevich.
Modélisation de l'environnement par des algèbres et du
déroulement du calcul par une évolution de ces algèbres
selon des systèmes finis d'équations pour la mise a jour.
Le langage ASML et ses variantes : spécification exécutable.
Outils et langages de modélisation
Merise et UML et logiciels associés (Power designor, Rose,...)
afin d'acquérir les connaissances pratiques de la formalisation
et atteindre un niveau de compétence opérationnelle compatible
avec leur rôle professionnel.
Comparaison de quelques langages de programmation d'usage courant
afin d'être aptes à effectuer des choix techniques raisonnés.
Etude de cas
Travail demandé aux étudiants qui devront étudier un cas,
l'analyser, le résoudre et y apporter des solutions concrètes,
opérationnelles et réalistes sur les plans scientifiques,
organisationnels, techniques et économiques.
Pré-requis
Avoir une bonne pratique de la programmation.
Bibliographie
J. SPIVEY. The Z Notation : A reference Manual.
Traduit en francais par M. Lemoine,
Coll. Méthodologies du logiciel, Paris, Masson.
Pascal ANDRE et Alain VAILLY.
Tome 1 : Conception des systèmes d'information;
Tome 2 : Spécification des logiciels : Deux exemples
de pratiques récentes, Z et UML.
Editions Ellipses, dans la collection TECHNOSUP.
James K. HUGGINS and Charles WALLACE.
An Abstract State Machine Primer,
Technical Report CS-TR-02-04, Computer Science Department,
Michigan Technological University, 4 December 2002.
(Accessible sur le web)
Pierre-Alain MULLER. Modélisation objet avec UML.
Editions Eyrolles.
Nathalie LOPEZ, Jorge MIGUEIS et Emmanuel PICHON.
Intégrer UML dans vos projets.
Editions Eyrolles.
H. TARDIEU, A. ROCHEFELD, R. COLETTI.
La méthode Merise, Tome 1 Principes et outils.
Editions d'organisation.
H. TARDIEU, A. ROCHEFELD, R. COLETTI, G. PANET, G. VAHÉE.
La méthode Merise, Tome 2 Démarche et pratiques.
Editions d'organisation.
AFNOR, Secrétariat Général de la commission Centrale
des Marchés - Informatique et Communication. Conduite de
projets informatiques, le référentiel SAPHIR.
Pham Thu QUANG et Jean-Jacques GONNIN.
Réussir la Conduite de Projets Informatiques.
Editions Eyrolles.
Ce cours se propose de fournir aux étudiants des connaissances de
base sur les aspects juridiques liés à la création, usage et
diffusion de logiciels et systèmes d'information.
Ce cours se propose de fournir aux étudiants des connaissances de
base sur les
nouveaux modes de développement du logiciel qui se généralisent
aujourd'hui, comme le logiciel libre et l'open source, qui
nécessitent une bonne compréhension des nouveaux modèles
économiques et des nouvelles modalités de license qu'ils mettent
en oeuvre.
Le cours se concentre sur les nouveaux modes de développement du
logiciel (en particulier, le logiciel libre), ses modèles
économiques, ses mécanismes de fonctionnement et les moyens
juridiques disponibles pour protéger l'investissement en
développement logiciel.
Plan du cours
Mécanismes de protection de l'investissement
informatique, différences entre les normatives en France, en
Europe et dans le monde, évolutions législatives
droit d'auteur
secret industriel
droit des marques
brevets
Nouveaux modes de développement et diffusion du logiciel :
Notion de Logiciel Libre, et Open Source
Histoire de l'émergence du Logiciel Libre
Fonctionnement d'une communauté de développeurs
Les “fonderies” logicielles
Les nouveaux modèles économiques
Panorama des licences dites “libres” et leurs implications
Étude de cas (OCaml, Scilab, OpenCascade, ...)
Bibliographie
International Institute of Infonomics, University of Maastricht:
Free/Libre and Open Source Software: Survey and Study.
Ayant comme pré-requis des connaissances des éléments des bases de
données relationnelles cette UE approfondit ces connaissance en
mettant l'accent sur les aspects système avancés. Ensuite les
récentes évolution du domaine sont abordées, en particulier les
entrepôts de données, les BD déductives, BD objets et BD
Internet.
Plan du cours
BD relationnelles : aspects système avancés
Transactions
BD distribuées
Sécurité
Index, structures de données et algorithmes
sousjacents (hachage, B-arbre, quadtree, bitmap).
BD déductives;
Présentation de BD déductives
DATALOG
Point fixe et son calcul
BD objet
Modèle de données
Langages de manipulation de
données
BD relationnelle-objet
Modèle de données
Langages de manipulation de
données
BD XML
Architectures des BD Internet
Modèle de données XML
Langages XML et XSL, modèles CWM, PMML, XMLSchema
Pré-requis
Éléments de bases de données relationnelles, d'algèbre relationnelle,
SQL;
logique propositionnelle et de premier ordre
Programmation logique
programmation orientée objet
Bibliographie
Serge ABITEBOUL, Richard HULL, Victor VIANU, Fondements des bases
de données, Vuibert informatique, 2000
Serge Abiteboul, Dan Suciu, Peter Buneman
Data on the Web: From Relations to Semistructured Data and XML, Morgan
Kaufmann Series in Data Management Systems, 1999
Database Systems - The complete book.
Hector Garcia-Molina, Jeffrey D. Ullman, Jennifer Widom
Prentice Hall.
Ce cours est une introduction au fonctionnement d'un processeur.
L'objectif est de montrer comment la combinaison de composants électroniques
très simples (transistors, portes logiques) peut permettre d'aboutir à
l'outil puissant qui constitue le cerveau d'un ordinateur.
Une présentation des circuits élémentaires aboutit au concept d'instruction,
qui permet ensuite
de définir un jeu d'instructions de base avec lequel on aborde la programmation
en langage machine et la traduction d'un langage de programmation de bas niveau
comme C.
Des développements comme les multiprocesseurs, les entrées/sorties ou l'optimisation
de code pourront être évoqués en fonction de l'avancée du cours et de la demande
des étudiants.
Plan du cours
Des transistors aux circuits
transistors
cellules de base (portes logiques, verrous, bascules,
cellules mémorisantes...)
circuits logiques et arithmétiques
circuits de séparation et de mémorisation
Architecture d'un processeur
chemin de données et chemin d'instructions
un petit processeur et son langage machine
Traduction du C en langage machine
structures de contrôle et jeu d'instructions associé
structures de données et accès à la mémoire
Pré-requis
Connaissance d'un langage de programmation impérative.
Bibliographie
B. Goossens, Architecture et micro-architecture des processeurs
Springer, 2002.
D. Patterson, J. Hennessy, Conception et organisation des ordinateurs,
Dunod, 1994.
Etude des techniques de compilation. L'application de ces techniques consiste
en la réalisation d'un mini compilateur sous forme de projet, en s'appuyant sur
la méthode d'analyse ascendante et les outils Lex et Yacc sous Unix. On suppose
connue l'analyse lexicale et syntaxique, et on se concentre sur les parties
propres d'un compilateur, de l'arbre de syntaxe abstraite à la génération de
code pour une machine cible.
Plan du cours
Représentation de code source (syntaxe abstraite). Structures de données pour les syntaxes abstraites.
Analyse statique : construction de tables d'environnements et typage.
Environnements dynamiques, modèle d'exécution utilisant une
pile, mécanismes d'appels de procédures.
Production de code intermédiaire.
Transformation de code intermédiaire, production de code assembleur.
Techniques d'allocation des registres.
Techniques d'optimisation.
Allocation de mémoire, aspects statiques et dynamiques.
Garbage collection.
Machines virtuelles, exemple de la machine JAVA.
Traitement des langages à objets : représentation dynamique de la hiérarchie de classes, interprétation dynamique des messages.
Pré-requis
Langages formels, analyse syntaxique, une bonne connaissance du langage Ocaml.
Maitriser les bases de l'algorithmique des graphes et des mots. Connaitre les grands principes de la conception et de l' analyse des algorithmes.
Plan du cours
Algorithmes dans les graphes :
structures de données,
parcours de graphes,
tri topologique,
arbres couvrants (Prim, Kruskal),
plus courts chemins (Dijkstra, Floyd-Warshal, Bellman-Fordl),
Algorithmes sur les mots :
Recherche de motif (Boyer-Moore, Knuth-Morris-Pratt, Rabin-Karp)
Distances et sous-séquences communes
Thème transversal: “Grands principes” de l'algorithmique
Diviser pour régner
Algorithmes gloutons et retour-arrière
Programmation dynamique
Pré-requis
Tri, files de priorités et tas. Arbres.
Bibliographie
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest
and Clifford Stein, Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001.
D. Beauquier, J. Berstel, Ph. Chretienne : Eléments d'algorithmique,
Masson.
Discerner les problèmes que l'on peut théoriquement résoudre avec une
machine. Évaluer la difficulté en temps et en espace des problèmes que l'on
peut résoudre.
Plan du cours
Modèles de calcul :
Machines de Turing (MT) : définitions, programmation, variantes,
complexités en temps et en espace, non déterminisme, énumération.
Machines RAM : définitions, équivalence avec les MT
(complexité).
Fonctions récursives.
Décidabilité et indécidabilité :
Propriétés des langages R et RE.
MT universelles.
Réduction.
Problèmes indécidables.
Complexité :
Comparaison des classes de complexité (temps, espace, déterministe
et non déterministe).
Exemples de problèmes : satisfaisabilité, circuits booléens,
graphes, ...
Réduction et complétude.
Exemples de problèmes P-complets, NP-complets, PSPACE-complets,
…
Calcul parallèle (classe NC).
Pré-requis
Théorie des automates.
Bibliographie
J. E. Hopcroft and J. D. Ullman, Introduction to Automata Theory,
Languages and Computation.
Addison-Wesley, 1974.
M. Sipser, Introduction to the Theory of Computation.
PWS publishing Company, 1997.
J.-M. Autebert, Calculabilité et Décidabilité.
Masson, 1992.
P. Wolper, Introduction à la calculabilité.
InterÉditions, 1991.
H. R. Lewis and C. Papadimitriou, Elements of the theory of
computation.
Prentice-Hall, 1981.
C. Papadimitriou, Computational complexity.
Addison-Wesley, 1995.
D. Welsh, Codes and Cryptography.
Clarendon Press, 1988.
J. Stern, Fondements mathématiques de l'informatique.
McGraw-Hill, 1990.
Les automates sont extrêmement utiles pour modéliser des phénomènes
complexes et pour développer des algorithmes efficaces sur ces modèles.
Le plus souvent, on utilise des extensions de la notion classique
d'automate fini. Ces extensions peuvent porter sur l'objet à reconnaître :
mot infini, arbre, fonction, relation, ...ou sur la méthode de
reconnaissance : non déterminisme, alternance, condition d'acceptation, ...Ces généralisations d'automates sont utilisées avec succès pour de
nombreuses applications : vérification automatique de systèmes, calcul de
propriétés quantitatives, compression, algorithmique du génôme,
algorithmique du texte, systèmes de numération, ...
L'objectif du cours est de présenter certaines extensions des automates et
certaines de leurs applications.
Plan du cours
Modélisation de processus infinitaires : mots infinis, automates
sur les mots infinis, conditions d'acceptation (Büchi, Muller, parité,
...), déterminisme, expressions rationnelles.
Minimisation des automates déterministes sur les mots finis,
relations de simulation sur les automates non déterministes,
application à la réduction d'automates non déterministes sur les
mots finis ou infinis.
Automates alternants pour les mots finis ou infinis : équivalence
avec les automates classiques, automates alternants faibles et application
à la déterminisation des automates de Büchi.
Logiques du premier ordre, logiques monadiques du second ordre
ou logiques temporelles pour spécifier les propriétés des systèmes,
lien avec les automates sur les mots finis ou infinis, application à
la vérification automatique.
Pour compléter, on traitera certains des points suivants :
Modélisation de propriétés quantitatives : semi-anneaux, séries
formelles, automates à multiplicité, théorème de Schützenberger,
applications.
Fonctions et relations rationnelles : caractérisation des
relations reconnaissables (Théorème de Elgot et Mezei), problèmes de
décidabilité des relations rationnelles, décidabilité de l'égalité de
deux fonctions rationnelles et de la fonctionnalité d'une relation
rationnelle.
Arbres : automates d'arbres (ascendants et descendants),
Langages d'arbres reconnaissables, propriétés de clôture,
expressions régulières, caractérisations logiques, applications
Systèmes de numération : arithmétique dans des bases non classiques
(Avizienis, Fibonacci, ...), problème d'ambiguïté et de recherche de
représentants canoniques, complexité des opérations arithmétiques dans
ces bases.
Pré-requis
Automates finis.
Bibliographie
G. Rozenberg and A. Salomaa Eds.,
Handbook of Formal Languages (volumes 1, 2, 3),
Springer, 1997.
D. Perrin et J.-E. Pin,
Infinite Words,
Pure and Applied Mathematics vol. 141,
Academic Press, 2003.
M. Crochemore, C. Hancart and T. Lecroq,
Algorithmique du texte,
Vuibert, 2001
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. Les projets sont
réalisés en Java.
Plan du cours
Introduction aux systèmes graphiques:
- architecture
- logiciel graphique standard.
Traitement d'images:
- transformée rapide de Fourier
- échantillonnage
- analyse d'images (amélioration, compression, ...).
Mathématiques pour la synthèse d'image:
- transformations
- projections
Courbes et surfaces (B-Spline, Bezier).
Elimination des lignes et surfaces cachées.
Géométrie fractale et applications.
Le tracé de rayon.
Textures.
Pré-requis
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.
Ce cours s'adresse aux étudiants en M1 qui suivront soit la filière recherche soit la filière professionnelle orientée logiciels critiques.
Il a comme but de former les étudiants à construire des applications concurrentes et distribuées ainsi qu'à raisonner sur leur propriétés.
Pour cela, on des langages de programmation spécialisés et des outils CAD basés sur différents modèles formels de la concurrence.
A la fin du cours, l'étudiant devra être capable :
de comprendre les concepts fundamentaux de la concurrence,
de construire des programmes concurrents et distribués élémentaires en C et Java,
de modéliser quelques algorithmes concurrents et distribués, et
d'utiliser au moins un outil de CAD basé sur des modèles formels.
Plan du cours
Introduction à la programmation concurrente.
Propriétés des programmes concurrents (entrelacement, atomicité, sûreté, équité, vivacité).
Modèles et outils CAD pour le programmes concurrents et distribués.
On considéra, en fonction du recouvrement avec les autres cours, aux moins deux exemples parmi :
algèbres de processus, par exemple LOTOS avec l'outil CADP
réseaux de Pétri et comme outil PEP
automates communiquants et comme outil SPIN,
flots de données et comme outil Lustre.
Pour la programmation distribuée, on étudiéra les deux modèles de la communication : synchronnes et asynchronnes.
Vérification de proprietés des programmes concurrents.
Deux méthodes seront exposées : la vérification basée sur les modèles et la preuve algébrique (pour les algèbres de processus).
Moniteurs : émulation avec et des sémaphores, problème des lecteurs et écrivans.
Langages dédiés pour la programmation distribuée : Ada, Occam, Linda. Pour ces langages on étudiera que leurs primitives spécifiques et on les utilisera pour programmer des problèmes classiques comme la multiplication des matrices, exclusion mutuelle distribuée, terminaison distribuée, le problème du répas des philosophes.
Pré-requis
Programmation en Java et C.
Systèmes d'exploitation.
Mathématique pour l'informatique.
Bibliographie
R. Milner, Communication and Concurrency,
Prentice-Hall, 1989.
M. Ben-Ari, Principles of Concurrent and Distributed
Programming 1/e, Prentice Hall, 1990.
G. Holzmann, The Spin Model Checker - Primer and Reference Manual, Addison-Wesley Publ., 2003.
J.-M. Rifflet et J.-B. Yunes, Programmation sous Unix,
Dunod 2003.
G. Roussel, E. Duris, N. Bedon et R. Forax, Java et
Internet, Vuibert 2002.
L'objectif de ce cours est de présenter les principales techniques
utilisées dans le domaine de la preuve assistée par ordinateur,
que ce soit dans le cadre de la formalisation effective des
mathématiques sur machine ou dans le cadre de la certification
logicielle.
La problématique de la démonstration sur machine recouvre en réalité
deux approches.
D'une part la démonstration automatique, dans laquelle la
recherche et la construction de la preuve est entièrement confiée à la
machine, mais qui n'est réalisable que dans des fragments restreints
des mathématiques.
D'autre part la vérification de preuve, dans laquelle la
machine se contente de vérifier la correction formelle d'une preuve
fournie par l'utilisateur, mais qui est en revanche susceptible de
traiter tous les domaines des mathématiques.
En pratique, la plupart des assistants à la démonstration
(HOL/Isabelle, PVS, Coq, PhoX, etc.) combinent les deux approches: les
grandes lignes de la preuve sont développées par l'utilisateur et
vérifiées par la machine, tandis que ses détails sont construits de
manière plus ou moins automatisée par la machine.
Ce cours se propose d'introduire les principales notions qui
sous-tendent ces deux approches. On présentera donc non seulement les
principales méthodes de recherche de preuve (résolution, recherche de
preuve sans coupure dans le calcul des séquents) en logique du premier
ordre, mais aussi les techniques qui permettent de représenter les
objets mathématiques en logique d'ordre supérieur (lambda-calcul
simplement typé et théorie des types simples de Church), lesquelles
sont à la base des assistants à la preuve tels que HOL/Isabelle, PVS,
PhoX et Coq. En parallèle avec le cours, les notions introduites
seront illustrées par des travaux pratiques effectués à l'aide de
l'assistant à la démonstration Coq.
Plan du cours
Calcul des prédicats
Déduction naturelle
Calcul des séquents
Notion de coupure et de preuve sans coupure
Théorème d'élimination des coupures
Techniques de démonstration automatique
Unification au 1er ordre
Méthode de résolution
Recherche de preuve en calcul des séquents
Formalismes d'ordre supérieur
Logique d'ordre supérieur
Lambda-calcul simplement typé
Théorie des types simples de Church
Représentation des objets-preuves
Introduction au système Coq
Langage de spécification
Système de tactiques
Définition inductives, preuves par induction
Extraction de programmes
Pré-requis
Notions élémentaires de logique
Pratique de la programmation fonctionnelle
Bibliographie
R. David, K. Nour, C. Raffalli. Introduction à la
logique, Dunod.
R. Cori, J.-L. Krivine. Logique mathématique I,
Masson.
M. Fitting. First-Order Logic And Automated Theorem
Proving, Springer.
The Coq Proof Assistant Reference Manual (V7.4): http://coq.inria.fr/doc/main.html
Etudier des techniques avancées d'algorithmique dans des
domaines d'application de base. Le cours comprendra des éléments
dans les domaines suivants.
Plan du cours
Programmation linéaire. Les diverses formes.
La méthode du simplexe. La dualité.
Application aux problèmes du génôme : recherche de répétitions
dans un texte, statistique sur les fréquences d'apparition des facteurs,
problème d'alignement de squences génomiques.
Algorithmes distribué et parallèle: architecture
systolique et algorithmes de routage.
Diagrammes de décision binaire (DDB). Codage
de l'information. Opérations sur les diagrammes
(algorithmes et complexité).
Diagrammes de décision binaire ordonné.
Géometrie algorithmique : diagrammes de Voronoi, enveloppe
convexe, localisation de points.
Algorithmes d'approximation pour des problèmes NP-complets.
Pré-requis
Techniques d'algorithmique de base.
Bibliographie
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest
and Clifford Stein, Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001. Chapter 29: Linear Programming.
F. Preparata, M. Shamos. Computational Geometry, An Introduction,
Springer, 1985.
J. Jaja. An Introduction to Parallel Algorithms, Addison-Wesley,
1992.
Etude de méthodes permettant d'effectuer des
raisonnements corrects sur de
réseaux probabilistes représentant des informations
incertaines. Application aux problèmes de diagnostic
de pannes.
Plan
Réseaux Bayesiens
Méthodes de calcul: méthodes exactes,
méthodes statistiques, autres méthodes approchées
Messages locaux: étude de cas particuliers,
chemin arborescence, etc..
Pré-requis
Probabilités.
Bibliographie
F.V. Jensen, Introduction to Bayesian networks,
Springer Verlag, 1996.
22 Probabilités et systèmes à événements discrets
()
Objectifs
Le but de ce cours est double:
fournir un exposé des bases du calcul des probabilités
discrètes; ces bases sont nécessaires pour l'étude
des systèmes à événements discrets stochastiques
et sont utiles, voire essentielles, dans de nombreux cours de M2.
donner une introduction à la théorie mathématique et
à l'algorithmique des systèmes à événements discrets;
les méthodes introduites serviront de base pour la modélisation
et la simulation des algorithmes et des systèmes
étudiés dans les divers cours de niveau 2.
Plan du cours
Simulation et tables d'événements
Tirage de variables aléatoires, méthode de l'inverse et du rejet,
tables d'événements, intervalles de confiance.
Chaînes de Markov à temps discret et modélisation en
informatique et communications
Classification des états, théorèmes ergodiques, réversibilité,
couplage, simulation parfaite, théorème de Foster,
théorème de Perron-Frobenius, vitesse de convergence.
Simulation de variables uniformes sur des structures discrètes,
automates de comptage, fréquences de motifs,
files d'attente, recuit simulé, MCMC, vitesse de mélange,
stabilité de protocoles, ordonnancement.
Chaînes de Markov à temps continu et réseaux stochastiques
Construction des processus de sauts à espace d'états discrets,
classification des états, théorèmes ergodiques, réversibilité,
chaînes incluses.
Réseaux de Petri stochastiques, files d'attente de type
M/GI et GI/M.
Graphes aléatoires et réseaux dynamiques
Percolation sur la grille, théorème d'Erdos-Renyi;
Composantes connexes géantes dans les réseaux;
transition de phase dans des graphes aléatoires.
Théorie algébrique de la dynamique des réseaux
Le semi-anneau (max plus): théorie spectrale des matrices,
équations affines, chaînes de Bellman.
Equations des graphes d'événements, modèles de mécanismes
de contrôle de flux.
Les raisonnements sur les systèmes informatiques, qu'ils soient purement intellectuels ou automatisés, requièrent tous de disposer de modèles du comportement de ces systèmes informatiques à l'exécution. La conception de tels modèles mathématiques fait l'objet de la sémantique des langages de programmation.
Selon les propriétés d'intérêt de ces systèmes informatiques, le modèle utilisé comme base du raisonnement ou de la preuve doit être plus ou mois concret ou raffiné (s'il faut tenir compte des moindres détails du fonctionnement du système) ou au contraire plus ou moins abstraits, (pour pouvoir faire des raisonnements globaux en faisant abstraction des détails non pertinents).
L'interprétation abstraite est une théorie de l'approximation qui permet de formaliser cette notion d'abstraction et de construire des modèles à partir d'autres déjà connus par raffinement ou par abstraction.
Si l'abstraction est suffisamment grossière pour être calculable, on
peut dériver de la sémantique du système informatique des algorithmes
de typage, de vérification exhaustive (model checking),
d'analyse statique, etc.
Plan du cours
Éléments de la théorie de l'ordre ;
Éléments de la théorie des points fixes ;
Correspondance de Galois ;
Abstractions exactes de points fixes ;
Application à la conception de sémantiques par abstraction d'une sémantique de traces ;
Approximation constructive de points fixes ;
Inférence de type pour le lambda-calcul par interprétation abstraite ;
Conception d'algorithmes de vérification exhaustive de modèles finis (model checking) par interprétation abstraite ;
Correction et la complétude de méthodes de preuves de programmes ;
Treillis des interprétations abstraites, exemples.
Pré-requis
Éléments de logique mathématique et informatique, compilation.
Bibliographie
P. Cousot. Types as abstract interpretations. In Conference Record of the Twentyfourth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 316–331, Paris, France, January 1997. ACM Press, New York, NY, U.S.A.
P. Cousot et R. Cousot. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Conference Record of the Fourth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 238–252, Los Angeles, California, 1977. ACM Press, New York, NY, USA.
P. Cousot et R. Cousot. Systematic design of program analysis frameworks. In Conference Record of the Sixth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 269–282, San Antonio, Texas, 1979. ACM Press, New York, NY, U.S.A.
P. Cousot et R. Cousot. Abstract Interpretation
Frameworks. Journal of Logic and Computation, 2(4):511–547, August 1992.
* P. Cousot. Constructive Design of a Hierarchy of Semantics of a
Transition System by Abstract Interpretation. Theoretical Computer
Science 277(1–2):47–103.
P. Cousot et R. Cousot. Temporal abstract interpretation. In Conference Record of the Twentyseventh Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 12–25, Boston, Mass., January 2000. ACM Press, New York, NY, U.S.A.
Ce cours sert à la fois d'initiation à la cryptologie et de
préparation au cours de niveau 2. Il s'adresse aux étudiants ayant un
goût pour l'algorithmique, à la fois dans ses aspects mathématiques et
dans ses aspects pratiques. Le but de ce cours est d'enseigner la
problématique de la cryptologie, et les principaux outils utilisés par
la cryptologie pour proposer des solutions aux problèmes de sécurité.
Intégrité, confidentialité, authenticité. One Time Pad.
Cryptographie symétrique.
Chiffrement par flot.
Chiffrement par bloc.
Modes d'opération (CBC, ECB, CTR).
Exemples: DES, AES, RC4, A5/1.
Hachage, MAC.
Compléments d'algorithmique.
Algorithmique des entiers.
Algorithmique des polynômes.
Arithmétique modulaire.
Corps finis.
Cryptographie asymétrique.
RSA, Diffie-Hellman, El Gamal.
Multiplicativité de RSA (Hastad, attaques multiplicatives).
One-way Functions, trappes.
Générateurs pseudo aléatoires.
Signatures RSA, El Gamal.
Protocoles.
Introduction aux preuves à divulgation nulle de connaissance (ZK).
Identification, signatures (FS, Schnorr).
Applications.
PKI, IPSEC, EMV.
Canal sécurisé: SSL.
GSM.
Pré-requis
On aura besoin des notions de classes de complexité, de machine de Turing, de problèmes NP. Un minimum de connaissance en algèbre et en probabilité sera aussi requis. Enfin les outils algorithmiques de base doivent être maîtrisés.
Bibliographie
D. Stinson, Cryptography Theory and Practice, CRC Press.
A. Menezes, P. van Oorschot, S. Vanstone, Handbook of Applied Cryptography, CRC Press.
Dans ce cours d'introduction aux objets, techniques et applications de la géométrie algorithmique nous développons plus particulièrement l'étude des problèmes de recherche multidimensionnelle, la théorie des polytopes convexes et la programmation linéaire.
Plan du cours
Configurations de points et arrangements de droites
Chirotopes et CC-systèmes (matroide orienté de rang 3), espace de réalisation d'un chirotope;
Enveloppe convexe (marche de Jarvis, algorithme incrémental randomisé, analyse arrière);
Triangulations et pseudo-triangulations, algorithme d'énumération de Bespamyatnikh (reverse search technique), triangulations régulières, triangulation de Delaunay et diagramme de Voronoi;
Arrangement de (pseudo-)droites, théorème de la Zone, niveaux, algorithmes de construction (incrémental, par balayage), graphes et complexes de visibilité;
Recherche orthogonale et recherche simpliciale (technique de Clarkson-Shor).
Polytopes convexes et programmation linéaire
Polytope/enveloppe convexe, treillis des faces, graphe d'un polytope, conjecture de Hirsh, théorème de la borne supérieure;
Espaces de réalisation des polytopes, le cas de la dimension 3 : le théorème de Steinitz via le théorème du plongement barycentrique de Tutte et la correspondance de Maxwell-Cremona, version quantitative du théorème de Steinitz;
Le polytope des pseudo-triangulations minimales, application à la théorie de la rigidité (Carpenter Rule Problem);
La programmation linéaire et ses modèles combinatoires, exemples d'applications.
Pré-requis
Aucun pré-requis spécifique n'est attendu.
Bibliographie
B. Aronov, S. Basu, J. Pach, and M. Sharir, editors. Discrete and Computational Geometry – The Goodman-Pollack Festschrift, volume 25 of Algorithms and Combinatorics. Springer-Verlag, June 2003.
M. de Berg, M. van Kreveld, M. Overmars, and O. Schwarzkopf. Computational Geometry: Algorithms and Applications. Springer-Verlag, Berlin, Germany, 2nd edition, 2000.
E. Edelsbrunner. Geometry and Topology for Mesh Generation. Cambridge, 2001.
J. E. Goodman and J. O'Rourke, editors. Handbook of Discrete and Computational Geometry. CRC Press, 1997.
K. Mulmuley. Computational Geometry: An Introduction Through Randomized Algorithms. Prentice Hall, Englewood Cliffs, NJ, 1994.
Donald E. Knuth. Axioms and Hulls, volume 606 of Lecture Notes Comput. Sci. Springer-Verlag, Heidelberg, Germany, 1992.
J. Richter-Gebert. Realization spaces of polytopes. Number 1643 in Lecture notes in mathematics. 1996.
G. M. Ziegler. Lectures on Polytopes, volume 152 of Graduate Texts in Mathematics. Springer-Verlag, Heidelberg, 1994.
Les questions abordées dans ce cours sont motivées par des applications : le stockage, la numérisation et la transmission des données. Motivé par des questions d'ingénieur, le cours s'adresse à des étudiants en Informatique et en Mathématiques. Il vise à présenter les bases mathématiques de la théorie de Shannon et les solutions algorithmiques à ces problèmes. Il prépare les étudiants à utiliser les résultats et les méthodes de la théorie de l'information en Informatique (Compression/Télécommunications) et/ou en Mathématiques (Probabilités/Statistiques).
Plan du cours
Codage source
Entropie d'une source, théorème de codage sans bruit de Shannon. Codage arithmétique.
Codage universel I : modèles paramétriques.
Codage universel II : techniques de dictionnaires (LZ).
Codage universel III : transformée de Burrows-Wheeler.
Codage universel IV : codage par transformation grammaticale.
Codage avec pertes d'information, théorème de débit-distorsion.
Codages des sources Gaussiennes. Application aux codage linéaire prédictif.
Débit-distorsion. Algorithmes de calcul de la fonction de débit-distorsion. Codage progressif.
Codage canal
Codage canal. Capacité, random coding exponents, sphere packing bounds
Méthodes effectives, codage algébrique, codes de Reed-Solomon.
Constructions de bonnes familles de codes codables et décodables en temps linéaire, LDPPC
Le principe de séparation.
Questions de théorie de l'information multi-utilisateurs I : diffusion
Questions de théorie de l'information multi-utilisateurs II : accès multiple
Ce cours de programmation approfondie est orienté vers la manipulation
de syntaxes (notion de syntaxe abstraite) et les techniques d'implantation
de langages (Compilation vers une machine virtuelle).
Il introduit aussi le lambda-calcul comme formalisme permettant de décrire
l'évaluation des langages de programmation et la notion de règle formelle
pour le typage et l'évaluation.
On utilise le langage Objective Caml comme support des notions présentées,
des exercices et des projets.
Plan du cours
(Introduction)
Rappels sur la partie purement fonctionnelle du langage Caml.
Introduction aux aspects imperatifs, aux modules et à
la compilation séparée de fichiers)
(Structures de termes et syntaxes abstraites)
Termes formels, filtrage et unification.
Syntaxes abstraites de sous-ensembles de Caml et de Java.
Utilisation d'analyseurs syntaxiques.
(Vérification de types)
Règles de typage définies sur la syntaxe abstraite.
Vérification et synthèse de types pour Caml.
Vérification de types et traitement de la surcharge pour Java.
(Analyse syntaxique)
Rappels sur les notions d'automates et de grammaires.
Analyseurs lexicaux et automates finis.
Principes des analyseurs syntaxiques descendants (grammaires LL).
Réalisation d'analyseurs descendants à l'aide du filtrage de flots.
(Sémantique)
Introduction au lambda-calcul, calcul par beta-réduction, énoncé du
théorème de
Church-Rosser, stratégies d'évaluation définies par règles, machines
d'évaluation.
(Compilation)
Semantique operationnelle par règles.
Implantation d'un langage de programmation par compilation vers
une machine virtuelle.
Prérequis
Automates finis et grammaires
Connaissance au moins superficielle de Caml et Java