Bienvenue dans le cours de programmation !
Equipe pédagogique
- Cours : François Schwarzentruber
- TPs : Augustin Laouar et Michel Nicolis
N’hésitez pas à nous contacter email : prénom.nom@ens-lyon.fr en remplaçant ç par c. Ces notes de cours sont mises à jour fréquemment par François Schwarzentruber.
Remerciement
Je tiens à remercier Michele Pagani pour son soutien, ainsi que François Pitois qui a fourni un effet considérable pour réorganiser les feuilles de TP. Je remercie les chargés de TP des années précédentes :
- 2025-2026 : Lison Blondeau-Patissier, Alice Brenon, Augustin Laouar
- 2024-2025 : Alice Brenon et François Pitois
Quand ?
- Cours/TP mercredi matin de 10h15-12h15 en amphi B
- TP d’approfondissement, mardi 8h-10h 130/E001
Motivation
Programmer c’est écrire des programmes qu’un ordinateur peut exécuter. Pour vous, qui serez enseignante, enseignante-chercheuse, ou chercheuse, c’est essentiel. Voici les messages principaux.
-
L’informatique théorique est connectée à la programmation pratique.
- Théorie des catégorie → monade en programmation
- mathématiques → simulation numérique, calcul formel, assistants de preuve
- logique formelle → solveurs, model checkers, assistants de preuve
-
Ce cours est un prérequis à d’autres cours en informatique.
- Cours de système : requiert une connaissance de C
- Cours d’algorithmique et comprendre mieux la complexité d’un algorithme
- Cours de compilation et de machine learning : requiert une connaissance de Python
- Agrégation d’informatique
-
Un programme c’est un travail sur le long terme et avec plusieurs personnes. En tant que chercheuse, on peut participer au développement logiciel de grande envergures (OCaml, Rocq, outils de vérification, librairie de bio-informatique etc.). Ce cours aborde quelques billes pour améliorer la programmation à plusieurs.
Evaluation
- Un projet pédagogique par groupe de 2-3. Au choix :
- Présentation d’une notion en cours (présentations vers la fin du semestre)
- ou Projet Wikipedia (écrire/traduire/illuster des articles)
- ou Création d’une vidéo
- ou Projet encore moins scolaire comme création d’un jeu de cartes sur la programmation
- Un projet de programmation avec soutenance
- Un examen final
Objectif du cours
- Comprendre la gestion de la mémoire bas niveau avec le langage C car c’est un langage simple. Utile pour comprendre ce qui se passe dans d’autres langages.
- Savoir améliorer du code, avoir du bon goût en programmation
- Concevoir un projet pour travailler à plusieurs et maintenir un projet dans le temps
- Avoir une culture générale en programmation (programmation objet, patrons de conception, différents langages, typage dynamique/statique, etc.) pour pouvoir lire et contribuer à du code existant mais aussi construire un projet au mieux
Organisation du cours
Le cours est composé de capsules sur des thèmes variés :
- moment bon goût où on discute ensemble d’un code pour avoir du bon goût
- histoire de la programmation pour avoir une culture générale
- utilisation d’un outil pour améliorer la fiabilité, le travail à plusieurs
La première partie sur la gestion de la mémoire est illustrée avec le langage
. Pour la plupart des autres concepts, on utilisera Python mais pas que.
Fiches de cours et travaux pratiques
Vous pouvez télécharger :