diff --git a/slides/cours_8.md b/slides/cours_8.md
index 62a49995936f5ea3a02564bc205fb52e0edf7b7d..8155af0d87b3a10c3d75c90b23eadfed782915e8 100644
--- a/slides/cours_8.md
+++ b/slides/cours_8.md
@@ -409,5 +409,76 @@ int stack_peek(stack *s) {
 * Dépiler avec une pile vide.
 * Jeter un oeil au sommet d'une pile vide.
 
+# Gestion d'erreur, level 0
 
+* Il y a plusieurs façon de traiter les erreur:
+    * Rien faire (laisser la responsabilité à l'utilisateur).
+    * Faire paniquer le programme (il plante plus ou moins violemment).
+    * Utiliser des codes d'erreurs.
+
+## La panique
+
+* En C on a les `assert()` pour faire paniquer un programme.
+
+
+# Assertions (1/3)
+
+```C
+#include <assert.h>
+void assert(int expression);
+```
+
+## Qu'est-ce donc?
+
+- Macro permettant de tester une condition lors de l'exécution d'un programme:
+  - Si `expression == 0`{.C} (condition fausse), `assert()`{.C} affiche un message d'erreur sur `stderr`{.C} et termine l'exécution du programme.
+  - Sinon l'exécution se poursuit normalement.
+  - Peuvent être désactivés avec `-DNDEBUG` (équivalent à `#define
+    NDEBUG`)
+
+## À quoi ça sert?
+
+- Permet de réaliser des tests unitaires.
+- Permet de tester des conditions catastrophiques d'un programme.
+- **Ne permet pas** de gérer les erreurs.
+
+# Assertions (2/3)
+
+<!-- \footnotesize -->
+
+## Exemple
+
+```C
+#include <assert.h>
+void stack_push(stack *s, int val) {
+    assert(s->top < MAX_CAPACITY - 1);
+    stack->top += 1;
+    stack->data[stack->top] = val;
+}
+int stack_pop(stack *s) {
+    assert(s->top >= 0);
+    stack->top -= 1;
+    return stack->data[stack->top+1];
+}
+int stack_peek(stack *s) {
+    assert(s->top >= 0);
+    return stack->data[stack->top];
+}
+```
+
+# Assertions (3/3)
+
+## Cas typiques d'utilisation
+
+- Vérification de la validité des pointeurs (typiquement `!= NULL`{.C}).
+- Vérification du domaine des indices (dépassement de tableau).
+
+## Bug vs erreur de *runtime*
+
+- Les assertions sont là pour détecter les bugs (erreurs d'implémentation).
+- Les assertions ne sont pas là pour gérer les problèmes externes au programme (allocation mémoire qui échoue, mauvais paramètre d'entrée passé par l'utilisateur, ...).
+
+. . .
+
+- Mais peuvent être pratiques quand même pour ça...