diff --git a/slides/cours_8.md b/slides/cours_8.md
index 0323e6f0629daf05e53708a969f36dd56c864874..62a49995936f5ea3a02564bc205fb52e0edf7b7d 100644
--- a/slides/cours_8.md
+++ b/slides/cours_8.md
@@ -331,5 +331,83 @@ mémoire).
 
 . . .
 
-Hé oui vous avez deviner: un tableau!
+Et oui vous avez deviner: un tableau!
+
+## La structure: de quoi avons-nous besoin (pile de taille fixe)?
+
+. . .
+
+```C
+#define MAX_CAPACITY 500
+typedef struct stack_ {
+    int data[MAX_CAPACITY]; // les données
+    int top;                // indice du sommet
+} stack;
+```
+
+# Les piles (4/N)
+
+## Initialisation
+
+. . .
+
+```C
+void stack_init(stack *s) {
+    s->top = -1;
+}
+```
+
+## Est vide?
+
+. . .
+
+```C
+bool stack_is_empty(stack s) {
+    return s.top == -1;
+} 
+```
+
+## Empiler (ajouter un élément au sommet)
+
+. . .
+
+```C
+void stack_push(stack *s, int val) {
+    stack->top += 1;
+    stack->data[stack->top] = val;
+}
+```
+
+# Les piles (5/N)
+
+## Dépiler (enlever l'élément du sommet)
+
+. . .
+
+```C
+int stack_pop(stack *s) {
+    stack->top -= 1;
+    return stack->data[stack->top+1];
+}
+```
+
+## Jeter un oeil (regarder le sommet)
+
+. . .
+
+```C
+int stack_peek(stack *s) {
+    return stack->data[stack->top];
+}
+```
+
+## Voyez-vous des problèmes potentiels avec cette implémentation?
+
+. . .
+
+* Empiler avec une pile pleine.
+* Dépiler avec une pile vide.
+* Jeter un oeil au sommet d'une pile vide.
+
+