Listen to a podcast, please open Podcast Republic app. Available on Google Play Store and Apple App Store.
Écrire un petit programme informatique est facile. Concevoir et réaliser un logiciel complet qui soit fiable, pérenne et résistant aux attaques reste extraordinairement difficile. C'est le but des sciences du logiciel que de concevoir et développer les principes, les formalismes mathématiques, les techniques empiriques et les outils informatiques nécessaires pour concevoir, programmer et vérifier des logiciels fiables et sécurisés.
L'enseignement de la chaire Sciences du logiciel vise à explorer cette problématique et à présenter la recherche contemporaine dans ce domaine. Le cours privilégie les approches dites « formelles », par opposition à l'empirisme souvent de mise en génie logiciel. Ces approches s'appuient sur des fondements mathématiquement rigoureux, connus ou en émergence : sémantiques formelles, logiques de programmes, systèmes déductifs, équivalences de programmes, calculs de processus… Historiquement, ces concepts ont émergé de considérations de programmation très terre-à-terre avant de se parer de rigueur mathématique. Le cours s'efforce de retracer ce cheminement des idées en partant de l'intuition du programmeur et en allant jusqu'à la mécanisation de ces approches formelles.
Les premières années de cet enseignement auraient pu s'intituler « Programmer, démontrer », car ils ont exploré plusieurs modes d'interaction entre la programmation de logiciels et la démonstration d'énoncés mathématiques : programmer puis démontrer, comme dans les logiques de programmes pour la vérification déductive ; programmer pour démontrer, comme dans les logiques constructives et l'assistant à la démonstration Coq ; enfin, programmer égale démontrer, comme dans la féconde correspondance de Curry-Howard, objet de la première année du cours.
La recherche de la chaire Sciences du logiciel s'effectue dans le cadre de l'équipe-projet Cambium, commune avec l'Inria. Les travaux de l'équipe visent à améliorer la fiabilité, la sûreté et la sécurité du logiciel en faisant progresser les langages de programmation et les méthodes de vérification formelle de programmes. Les principaux thèmes de recherche sont les systèmes de types et les algorithmes d'inférence de types, la vérification déductive de programmes, le parallélisme à mémoire partagée, et les modèles mémoires faiblement cohérents. L'équipe conçoit et développe deux grands logiciels de recherche qui intègrent et font passer dans la pratique bon nombre de ses résultats : OCaml, un langage de programmation fonctionnel statiquement typé et son implémentation, et CompCert, un compilateur formellement vérifié pour logiciels embarqués critiques.
| Episode | Date |
|---|---|
|
Séminaire - David Pointcheval : Le chiffrement fonctionnel : agréger des données sensibles
|
Dec 18, 2025 |
|
07 - Le calcul sécurisé : calculer sur des données chiffrées ou privées : Sécuriser le calcul : nouvelles directions et conclusions
|
Dec 18, 2025 |
|
Séminaire - Michele Orrù : Des preuves zero-knowledge à l'anonymat en ligne
|
Dec 11, 2025 |
|
06 - Le calcul sécurisé : calculer sur des données chiffrées ou privées : Calcul vérifiable et preuves zero-knowledge
|
Dec 11, 2025 |
|
Séminaire - Geoffroy Couteau : Calcul sécurisé et aléa corrélé, de la théorie à la pratique
|
Dec 04, 2025 |
|
05 - Le calcul sécurisé : calculer sur des données chiffrées ou privées : Calcul multipartite sécurisé : circuits brouillés et transfert inconscient
|
Dec 04, 2025 |
|
Séminaire - Ilaria Chillotti : Chiffrement totalement homomorphe : panorama, applications et nouvelles directions
|
Nov 27, 2025 |
|
04 - Le calcul sécurisé : calculer sur des données chiffrées ou privées : Calcul multipartite sécurisé : partager des secrets
|
Nov 27, 2025 |
|
Séminaire - Damien Stehlé : Chiffrement totalement homomorphe CKKS
|
Nov 20, 2025 |
|
03 - Le calcul sécurisé : calculer sur des données chiffrées ou privées : Chiffrement totalement homomorphe : calculer sur des données chiffrées (2)
|
Nov 20, 2025 |
|
Séminaire - Pierrick Gaudry : Outils cryptographiques pour le vote électronique
|
Nov 13, 2025 |
|
02 - Le calcul sécurisé : calculer sur des données chiffrées ou privées : Chiffrement totalement homomorphe : calculer sur des données chiffrées (1)
|
Nov 13, 2025 |
|
01- Le calcul sécurisé : calculer sur des données chiffrées ou privées : Sécuriser le calcul : introduction et étude de cas
|
Nov 06, 2025 |
|
Séminaire - Daan Leijen : Design and Compilation of Efficient Effect Handlers in the Koka Language
|
Mar 14, 2024 |
|
08 - Structures de contrôle : de « goto » aux effets algébriques : 08 - Structures de contrôle : de « goto » aux effets algébriques : Logiques de programmes pour le contrôle et les effets
|
Mar 14, 2024 |
|
Séminaire - Matija Pretnar : Effect handlers and mathematically inspired language constructs
|
Mar 07, 2024 |
|
07 - Structures de contrôle : de « goto » aux effets algébriques : Typage et analyse statique des effets
|
Mar 07, 2024 |
|
Séminaire - Olivier Danvy : Les continuations : cinq minutes pour les apprendre, toute une vie pour les comprendre
|
Feb 29, 2024 |
|
06 - Structures de contrôle : de « goto » aux effets algébriques : Théorie des effets : des monades aux effets algébriques
|
Feb 29, 2024 |
|
Séminaire - Andrew Kennedy : Compiling with Continuations
|
Feb 22, 2024 |
|
05 - Structures de contrôle : de « goto » aux effets algébriques : Pratique des effets : des exceptions aux gestionnaires d'effets
|
Feb 22, 2024 |
|
Séminaire - Delphine Demange : Représentations intermédiaires pour la compilation : s'affranchir du graphe de flot de contrôle
|
Feb 15, 2024 |
|
04 - Structures de contrôle : de « goto » aux effets algébriques : Programmer ses structures de contrôle : continuations et opérateurs de contrôle
|
Feb 15, 2024 |
|
Séminaire - Caroline Collange : Comment concilier parallélisme et contrôle ? Approches des architectures de processeurs généralistes et graphiques
|
Feb 08, 2024 |
|
03 - Structures de contrôle : de « goto » aux effets algébriques : Chassez le contrôle... : la programmation déclarative
|
Feb 08, 2024 |
|
02 - Structures de contrôle : de « goto » aux effets algébriques : Structures de contrôle avancées : des subroutines aux coroutines et au parallélisme
|
Feb 01, 2024 |
|
01 - Structures de contrôle : de « goto » aux effets algébriques : Naissance des structures de contrôle : du « goto » à la programmation structurée
|
Jan 25, 2024 |
|
Séminaire - Pierre-Etienne Meunier : Une algèbre de modifications, ou : le contrôle de versions pour tous
|
Apr 20, 2023 |
|
07 - Structures de données persistantes : À la recherche du vecteur perdu : limites théoriques et conclusions
|
Apr 20, 2023 |
|
Séminaire - Arthur Charguéraud : Comment allier persistance et performance
|
Apr 13, 2023 |
|
06 - Structures de données persistantes : De la dérivation formelle à la navigation dans une structure : contextes, zippers, index, etc.
|
Apr 13, 2023 |
|
Séminaire - KC Sivaramakrishnan : Mergeable Replicated Data Types
|
Apr 07, 2023 |
|
05 - Structures de données persistantes : Systèmes de numération et types non réguliers
|
Apr 07, 2023 |
|
Séminaire - Jean-Christophe Filliatre : Structures de données semi-persistantes
|
Mar 30, 2023 |
|
04 - Structures de données persistantes : Comment rendre persistante une structure impérative ?
|
Mar 30, 2023 |
|
Séminaire - Tobias Nipkow : Verification of functional data structures: Correctness and complexity
|
Mar 23, 2023 |
|
03 - Structures de données persistantes : Concilier amortissement et persistance : de l'importance de la paresse
|
Mar 23, 2023 |
|
02 - Structures de données persistantes : Arbres équilibrés + copie de branches = persistance
|
Mar 16, 2023 |
|
01 - Structures de données persistantes : Introduction aux structures persistantes et à la programmation purement fonctionnelle
|
Mar 09, 2023 |
|
07 - Sécurité du logiciel : quel rôle pour les langages de programmation ?
|
Apr 21, 2022 |
|
06 - Sécurité du logiciel : quel rôle pour les langages de programmation ?
|
Apr 14, 2022 |
|
05 - Sécurité du logiciel : quel rôle pour les langages de programmation ?
|
Apr 07, 2022 |
|
04 - Sécurité du logiciel : quel rôle pour les langages de programmation ?
|
Mar 31, 2022 |
|
03 - Sécurité du logiciel : quel rôle pour les langages de programmation ?
|
Mar 24, 2022 |
|
02 - Sécurité du logiciel : quel rôle pour les langages de programmation ?
|
Mar 17, 2022 |
|
01 - Sécurité du logiciel : quel rôle pour les langages de programmation ?
|
Mar 10, 2022 |
|
07 - Logiques de programmes : quand la machine raisonne sur ses logiciels
|
Apr 15, 2021 |
|
06 - Logiques de programmes : quand la machine raisonne sur ses logiciels
|
Apr 08, 2021 |
|
05 - Logiques de programmes : quand la machine raisonne sur ses logiciels
|
Apr 01, 2021 |
|
04 - Logiques de programmes : quand la machine raisonne sur ses logiciels
|
Mar 25, 2021 |
|
03 - Logiques de programmes : quand la machine raisonne sur ses logiciels
|
Mar 18, 2021 |
|
02 - Logiques de programmes : quand la machine raisonne sur ses logiciels
|
Mar 11, 2021 |
|
01 - Logiques de programmes : quand la machine raisonne sur ses logiciels
|
Mar 04, 2021 |
|
08 - Sémantiques mécanisées : quand la machine raisonne sur ses langages
|
Feb 13, 2020 |
|
07 - Sémantiques mécanisées : quand la machine raisonne sur ses langages
|
Feb 06, 2020 |
|
06 - Sémantiques mécanisées : quand la machine raisonne sur ses langages
|
Jan 30, 2020 |
|
05 - Sémantiques mécanisées : quand la machine raisonne sur ses langages
|
Jan 16, 2020 |
|
04 - Sémantiques mécanisées : quand la machine raisonne sur ses langages
|
Jan 09, 2020 |
|
03 - Sémantiques mécanisées : quand la machine raisonne sur ses langages
|
Dec 19, 2019 |
|
02 - Sémantiques mécanisées : quand la machine raisonne sur ses langages
|
Dec 12, 2019 |
|
01 - Sémantiques mécanisées : quand la machine raisonne sur ses langages
|
Nov 28, 2019 |
|
11 - Programmer = démontrer ? La correspondance de Curry-Howard aujourd'hui
|
Jan 30, 2019 |
|
10 - Programmer = démontrer ? La correspondance de Curry-Howard aujourd'hui
|
Jan 23, 2019 |
|
09 - Programmer = démontrer ? La correspondance de Curry-Howard aujourd'hui
|
Jan 16, 2019 |
|
08 - Programmer = démontrer ? La correspondance de Curry-Howard aujourd'hui
|
Jan 09, 2019 |
|
07 - Programmer = démontrer ? La correspondance de Curry-Howard aujourd'hui
|
Jan 09, 2019 |
|
06 - Programmer = démontrer ? La correspondance de Curry-Howard aujourd'hui
|
Dec 19, 2018 |
|
05 - Programmer = démontrer ? La correspondance de Curry-Howard aujourd'hui
|
Dec 12, 2018 |
|
04 - Programmer = démontrer ? La correspondance de Curry-Howard aujourd'hui
|
Dec 05, 2018 |
|
03 - Programmer = démontrer ? La correspondance de Curry-Howard aujourd'hui
|
Nov 28, 2018 |
|
02 - Programmer = démontrer ? La correspondance de Curry-Howard aujourd'hui
|
Nov 21, 2018 |
|
01 - Programmer = démontrer ? La correspondance de Curry-Howard aujourd'hui
|
Nov 21, 2018 |
|
Leçon inaugurale - Xavier Leroy : Le logiciel, entre l'esprit et la matière
|
Nov 15, 2018 |