Cette page liste les cours que j'ai donné à Paris 8 entre 2020 et 2026 (période LMD4).
Méthodologie de la programmation
Cours donné en 2020–2021 au premier semestre de L1 informatique.
L'objectif de ce cours est d'apprendre à apprendre à programmer. Il s'agit d'acquérir les bases essentielles à l'apprentissage de la programmation et donc à la poursuite de la licence. Ce cours est une introduction à l'utilisation de plusieurs langages de programmation (Python, C, Bash, LaTeX), ainsi que de quelques outils essentiels (interpréteurs, compilateurs, gestionnaire de contrôle de version, gestionnaire de compilation). Chaque point sera revu et approfondi par la suite dans d'autres cours de la licence.
Bash
Python
- Chapitre 1 : La programmation impérative avec Python.
- TP 1 : Premiers pas avec Python.
- Chapitre 2 : La programmation objet avec Python (fichiers).
- TP 2 : Reversi (fichiers).
- Chapitre 3 : La programmation modulaire avec Python (fichiers).
- TP 3 : Messages secrets.
- Chapitre 4 : Pygame (fichiers).
- TP 4 : MiniPaint (fichiers).
LaTeX
- Chapitre 5 : Production de documents avec LaTeX (fichiers).
- TP 5 : Rapport de projet (fichiers).
C
- Chapitre 6 : Aperçu du langage C : introduction.
- Chapitre 7 : Aperçu du langage C : mémoire, modules, compilation (fichiers).
Gestion d'identité en ligne
Cours donné de 2020 à 2026 au premier semestre de L1 informatique.
L'objectif de ce cours est d'apprendre les bonnes pratiques à adopter pour faire attention à son image en ligne, ainsi qu'à créer et maintenir une page web personnelle simple qui sera alimentée par les différents projets académiques et personnels de chacun·e.
Introduction
- Introduction et présentation du cours.
- TP Console : Travailler dans le terminal.
Web
- Chapitre 1 : Édition de pages web avec HTML.
- Chapitre 2 : Mise en forme de pages web avec CSS.
- TP Web : Création d'un site web personnel.
Git
- Chapitre 3 : Gestion de versions avec Git.
- TP Git : Premiers pas avec Git.
- Chapitre 4 : La forge logicielle GitLab et GitLab Pages.
LaTeX
- Chapitre 5 : Production de documents avec LaTeX (fichiers).
- TP LaTeX : Créer son CV avec LaTeX.
Pix
- “Cultivez vos compétences numériques” avec Pix.
Systèmes et réseaux
Cours donné de 2020 à 2026 au second semestre de L2 informatique.
L'objectif de ce cours est l'apprentissage de la programmation système d'une part, et des modèles et de la programmation réseau (qui utilise elle-même la programmation système) d'autre part. Il s'agit de comprendre le fonctionnement de couches logicielles de bas niveau qui sont la plupart du temps abstraites, afin de ne pas se retrouver coincer lorsque des problèmes apparaissant au niveau applicatif ont leurs origines dans les couches inférieures du système.
Système
- Chapitre 1 : Entrées/sorties, fichiers, répertoires.
- TP 1 : Boîte à outils (fichiers).
- Chapitre 2 : Mémoire et processus.
- TP 2 : La rue et le temps (fichiers).
- Chapitre 3 : Communication inter-processus.
- TP 3 : Coquillette.
- Chapitre 4 : Module noyau (fichiers).
- TP 4 : /dev/drop.
Réseau
- Chapitre 5 : Chargement d'une page web (fichiers).
- Chapitre 6 : Couches d'accès réseau.
- Chapitre 7 : Couche internet.
- TP 5 : ICMP (fichiers).
- Chapitre 8 : Couche transport (fichiers).
- Chapitre 9 : Couches application.
- TP 6 : Netcat.
- Chapitre 10 : Protocoles.
- TP 7 : Tchat.
Histoire de l'informatique
Cours donné de 2020 à 2026 au second semestre de L2 informatique.
Ce cours a pour objectif de contextualiser la discpline informatique dans la société, autant historiquement que socialement ou environnementalement, afin de faire réfléchir les étudiant·es aux impacts de leur choix futurs en tant que développeur·euses informatiques. Pour cela, l'histoire de l'informatique est abordée sujet par sujet, et des parallèles sont faits avec l'actualité autant que possible.
- Chapitre 0 : Introduction.
- Chapitre 1 : Histoire du calcul.
- Chapitre 2 : Histoire des machines.
- Chapitre 3 : Histoire des systèmes.
- Chapitre 4 : Histoire des langages de programmation.
- Chapitre 5 : Histoire de la logique.
- Chapitre 6 : Histoire de la cryptologie.
- Chapitre 7 : Histoire du logiciel libre.
Introduction à la sécurité
Cours donné de 2020 à 2026 au premier semestre de L3 informatique.
Ce cours aborde les bases de la sécurité informatique et traite surtout de la cryptographie. Son objectif est de faire prendre conscience aux étudiant·es des enjeux liés à la sécurité, afin qu'iels se posent les bonnes questions lorsqu'iels seront amené·es à concevoir un système d'information à l'avenir, même s'iels ne poursuivent pas leurs études spécifiquement dans le domaine de la sécurité.
- Chapitre 0 : Présentation du cours et introduction.
- Chapitre 1 : Le chiffrement par substitution (fichiers).
- TP 1 : Cryptographie historique (fichiers).
- Chapitre 2 : La cryptographie symétrique (fichiers).
- TP 2 : Chiffrement par bloc.
- Chapitre 3 : La cryptographie asymétrique.
- TP 3 : RSA.
- Chapitre 4 : La cryptanalyse classique (fichiers).
- TP 4 : Cryptanalyse linéaire (fichiers).
- Chapitre 5 : Les canaux auxiliaires.
- TP 5 : Attaques par canaux auxiliaires (fichiers).
Interprétation et compilation
Cours donné de 2021 à 2026 au premier semestre de L3 informatique.
Les langages de programmation sont les outils des informaticien·nes. Pour résoudre un problème, il est nécessaire d'utiliser un outil adapté. Être capable de créer son propre langage de programmation est donc l'abstraction ultime. L'objectif de ce cours est justement d'apprendre à implémenter soi-même un langage de programmation, de la lecture du code source jusqu'à sa traduction en assembleur.
Introduction
- Introduction et présentation du cours (fichiers).
- Chapitre 1 : Introduction à OCaml (fichiers).
- TP 1 : Calculatrice.
Assembleur
- Chapitre 2 : Introduction à l'assembleur MIPS avec SPIM.
- TP 2 : Premiers pas en MIPS avec SPIM (fichiers).
- Chapitre 3 : Production d'assembleur MIPS depuis OCaml (fichiers).
- TP 3 : Programmation MIPS (fichiers).
Interprétation
- Chapitre 4 : Représentation intermédiaire (fichiers).
- TP 4 : Un premier interpréteur + mini-projet.
Compilation
- Chapitre 5 : Compilation de langages imperatifs (fichiers).
- TP 5 : Compilation de langages impératifs.
- Chapitre 6 : Gestion de la mémoire.
- TP 6 : Gestion des chaînes de caractères constantes (fichiers).
Sémantique
- Chapitre 7 : Analyse sémantique.
- TP 7 : Typage (fichiers).
Syntaxe
- Chapitre 8 : Analyse lexicale (fichiers).
- Chapitre 9 : Analyse syntaxique (fichiers).
- TP 8 : Analyses lexicale et syntaxique (fichiers).
Projet
- TP 9 : Démarrage et méthodologie (fichiers).
Ancienne version du cours
Une ancienne version de ce cours, donnée avant 2021, est encore disponible ci-dessous.
Analyse de code source
- Chapitre 1 : Analyse lexicale (fichiers).
- TP 1 : Analyse lexicale avec Racket.
- Chapitre 2 : Analyse syntaxique (fichiers).
- TP 2 : Analyse syntaxique avec Racket.
- Chapitre 3 : Analyse sémantique (fichiers).
- TP 3 : Analyse sémantique (fichiers).
Interprétation
- Chapitre 4 : Écriture d'un interpréteur (fichiers).
- TP 4 : Calculatrice.
Programmation assembleur
- Chapitre 5 : MIPS et SPIM.
- TP 5 : Premiers pas en MIPS avec SPIM (fichiers).
Compilation
- Chapitre 6 : Compilation de langages impératifs (fichiers).
- TP 6 : Aide au démarrage du projet (fichiers).
- Chapitre 7 : La mémoire (fichiers).
- TP 7 : Programmation MIPS (fichiers).
- Chapitre 8 : Représentations intermédiaires.
- Chapitre 9 : Compilation vers le λ-calcul (fichiers).
Développement de logiciels libres
Cours donné de 2020 à 2026 au second semestre de L3 informatique.
Savoir développer des petits ou moyens logiciels qu'on contrôle d'un bout à l'autre est une chose, mais être réellement capable de travailler sur une base de code large et qu'on ne maîtrise pas en est une bien différente.
Le but de ce cours est d'apprendre à travailler sur un véritable projet en ayant pour objectif de réaliser une vraie contribution à un logiciel libre, ce qui nécessitera de s'approprier les outils et plateformes de développement du projet, ses conventions de programmation et d'organisations, les moyens de communications de sa communauté et de ses développeur·ses, etc.
Introduction
- Chapitre 0 : Introduction et présentation du cours.
- Chapitre 1 : Contribuer à un projet libre.
Outils
- Chapitre 2 : Gestion de versions avec Git.
- TP Git : Premiers pas avec Git.
- Chapitre 3 : Déroulement d'une contribution.
- TP Contribution : Utilisation d'une forge.
Organisation
- Chapitre 4 : Histoire du logiciel libre.
- Chapitre 5 : Gouvernance des projets libres.
- Chapitre 6 : Enjeux actuels du libre.
Approche technique de l'espace numérique
Cours donné de 2020 à 2026 au premier semestre de M2 Géopolitique, parcours Cyberespace.
L'objectif de ce cours est de s'approprier les concepts et outils techniques nécessaires à la compréhension des enjeux cyber.
Internet
- Chapitre 1 : Fonctionnement (et gouvernance) d'Internet.
- Chapitre 2 : Chargement d'une page web.
- Chapitre 3 : Quelques outils réseau.
Cyberattaque
- Chapitre 4 : Qu'est-ce qu'une cyberattaque ?.
- Chapitre 5 : Études de cas : Stuxnet.
Programmation
- Chapitre 6 : Introduction à la programmation (impérative).
- Chapitre 7 : Premiers pas avec Python (fichiers).
- Chapitre 8 : Introduction à la programmation réseau (fichiers).
Contrôle
- Chapitre 9 : Modéliser le contrôle dans un système d'information.
Bonus
- Chapitre 10 : Le réseau Tor.
- Chapitre 11 : Introduction technocritique aux blockchains.
Introduction aux enjeux techniques du cyberespace
Cours donné en 2024 et 2025 dans le diplôme universitaire « révolution numérique : enjeux stratégiques et géopolitiques ».
L'objectif de ce cours est de s'approprier les concepts et outils techniques nécessaires à la compréhension des enjeux cyber.
Internet
- Chapitre 1 : Histoire et fonctionnement des Internets.
- Chapitre 2 : Chargement d'une page web.
Cyberattaque
- Chapitre 3 : Qu'est-ce qu'une cyberattaque ?.
- Chapitre 4 : Études de cas : Stuxnet.