Supports De Cours
AVERTISSEMENT Cette page existe à titre d’archive car je n’aime pas que les choses disparaissent du web. Mais les ressources qui s’y trouvent sont dépassés depuis longtemps et n’ont pour la plupart probablement qu’un pur intérêt archéologique!
Compilateurs
Vous trouverez ci-dessous les ressources liées au cours de conception de compilateurs que j’ai donné à la Haute École Arc de 2004 à 2010. Il est à noter que ce cours a également fait l’objet d’une présentation à PyCon 2010.
La contribution la plus originale de cours consiste en une série de tutoriaux sur la conception d’un compilateur avec le package python PLY. Ce tutoriel peut probablement être utile hors du cadre de ces cours, puisqu’il s’agit de l’une des rares sources d’information en français sur l’utilisation de PLY. Je commence donc par ça:
Tutoriel et projet: conception d’un compilateur en python avec PLY
NB: Avant de commencer la série de tutoriaux, téléchargez l’archive contenant les ressources nécessaires à sa réalisation.
-
La première partie propose une Prise en main de PLY avec ce qui constitue en quelques sorte le Hello World des compilateurs: un interpréteur d’expressions arithmétiques.
-
La deuxième partie, Perfectionnement de PLY, va un peu plus loin en introduisant la gestion des variables et la construction d’un arbre syntaxique abstrait (AST). L’utilisation d’un petit package maison permet d’obtenir (via Graphviz et PyDot) une représentation graphique de l’arbre:
-
La troisième partie est consacrée à l’Analyse sémantique. Après avoir ajouté une instruction print et une boucle while à notre langage, on s’attaque à la couture de l’arbre syntaxique; là aussi, une représentation graphique permet de mieux voir ce que l’on fait (jusqu’à un certain point…):
Remarque: pour éviter de trop imbriquer le code des différentes étapes de compilation, une forme élémentaire de programmation orientée aspects est utilisée (à l’aide d’un “décorateur” python); ceci permet d’enrichir les fonctionnalités des classes développées tout en gardant le nouveau code dans un fichier séparé.
-
La quatrième et dernière partie est consacrée à la Partie arrière. Elle aborde l’interprétation récursive, l’interprétation itérative, puis la compilation (vers du bytecode pour svm, une machine virtuelle simpliste à but pédagogique disponibles dans les ressources que vous avez téléchargées).
Les étudiants sont ensuite appelés à réaliser leur propre compilateur (Donnée). Par exemple:
- En 2009, David Jacot et Anthony Mougin ont réalisé VSL Compiler, qui constitue un bel exemple de compilateur complet avec machine virtuelle, le tout réalisé en python avec l’aide de PLY.
- En 2008, Fabienne Roth et Yann Voumard ont mis au point Trucky, un interpréteur (inspiré de NetLogo) permettant de décrire collectivement le comportement de nombreux agents (des voitures et des camions) et de visualiser leurs interactions dans un backend en PyGame.
Cours et exercices
Et le background théorique pour tout ce qui précède…
Python
Attention, vieux supports encore basés sur python 2.x!
- Cours
- Travaux pratiques et exercices
- Prise en main de python
- Exercices de base et corrigé (plus un petit kit pour programmer un jeu)
- Exercices sur les strucures avancées et corrigé
- Exercices de programmation fonctionnelle et corrigé
Intelligence artificielle
Cours datant de 2008 - la notion même de ce qu’on appelle IA a passablement évolué depuis!
- Introduction
- Algorithmes de jeux
- Recherche heuristique et méta-heuristique
- Exercice sur l’algorithme A*
- Travail pratique sur A* (utilisant ces données)
- Travail pratique: Aborder le problème du voyageur de commerce avec les algorithmes génétiques
- Raisonnement automatique
- Exercices en logique
- Travaux pratiques sur Prolog: première partie et deuxième partie
- Réseaux bayésiens
Cryptologie
- Cours
- Travaux pratiques
Un peu en marge du cours: le support pompeusement intitulé Cryptologie et physique quantique: Espoirs et menaces. Il s’agit d’une brève introduction au calcul quantique fortement vulgarisée et principalement inspirée de l’excellent site d’Alexandre Blais - le tout accompagné de quelques réflexions sur les impacts possibles sur la cryptologie.
Sécurité informatique
- Cours
- Travaux pratiques