diff --git a/slides/Makefile b/slides/Makefile
index ca456632868c6c60372634b61f8c8c31360e37c7..46d7e37eef2751e0c2e3f8ef7d34d6700fe75ff9 100644
--- a/slides/Makefile
+++ b/slides/Makefile
@@ -27,7 +27,8 @@ all: puppeteer $(PDF) # La cible par défaut (all) exécute les cibles %.html et
 
 puppeteer:
 	@echo "Setting chromium to $(CHROMIUM) for puppeteer"
-	@echo -e "{\n\"executablePath\":" \"$(CHROMIUM)\" ",\n\"args\": [\"--no-sandbox\"]\n}" > .puppeteer.json
+	@echo "{\n\"executablePath\":" \"$(CHROMIUM)\" ",\n\"args\": [\"--no-sandbox\"]\n}" > .puppeteer.json
+	# @echo -e "{\n\"executablePath\":" \"$(CHROMIUM)\" ",\n\"args\": [\"--no-sandbox\"]\n}" > .puppeteer.json
 
 markdown: $(MARKDOWN) # La markdown les cibles %.markdown
 
diff --git a/slides/boucles_conditions.md b/slides/boucles_conditions.md
index 39197583aef040cc6ec734b7a9653105fbd4166c..f7dd76a6da9f5dfd33f2cc3b89319089f9e2656c 100644
--- a/slides/boucles_conditions.md
+++ b/slides/boucles_conditions.md
@@ -1,6 +1,6 @@
 ---
 title: "Boucles et conditions"
-date: "2023-09-28"
+date: "2024-09-24"
 ---
 
 # Quiz
diff --git a/slides/command_line.md b/slides/command_line.md
index 67cab0777b8365b730042bee2c97db7a4434f8eb..c736e66f31bac206fe5c6d048fd4f43b50358cbe 100644
--- a/slides/command_line.md
+++ b/slides/command_line.md
@@ -1,6 +1,6 @@
 ---
 title: "Introduction à la l'interface en ligne de commande"
-date: "2023-09-28"
+date: "2024-09-24"
 ---
 
 # Introduction
diff --git a/slides/intro.md b/slides/intro.md
index ea1d387fd87ec3865a759334ff8f632be6896e4b..5988df8965316f7d763e17536524c9e7b85e9214 100644
--- a/slides/intro.md
+++ b/slides/intro.md
@@ -1,6 +1,6 @@
 ---
 title: "Introduction générale"
-date: "2023-09-21"
+date: "2024-09-17"
 ---
 
 # La hotline
@@ -9,7 +9,7 @@ Nom                    Mél                               Bureau
 --------------------   ------------------------------    --------------------
 Kevin Heirich          kevin.heirich@hesge.ch            A403
 Quentin Leblanc        quentin.leblanc@hesge.ch          A403
-Raphael Bach           raphael.bach@hesge.ch             B411
+Damian Boquete         damian.boquete@hesge.ch           B403
 Michaël El Kharroubi   michael.el-kharroubi@hesge.ch     A403
 Paul Albuquerque       paul.albuquerque@hesge.ch         B410
 Orestis Malaspinas     orestis.malaspinas@hesge.ch       A401
@@ -32,15 +32,12 @@ Tout le contenu de ce qu'on raconte se trouve sur cyberlearn:
   [Matrix](https://matrix.to/#/!aKYVlcclmPGYXQFxAK:matrix.org?via=matrix.org), 
   installez [element.io](https://element.io).
 
-    ![](figs/matrix_qr.png){width=20%}
-* Communauté Lemmy: <https://lemmy.hepiapp.ch/c/prog_seq>
-
 # Organisation du cours (1/3)
 
 ## But: Illustration des concepts vus au cours d'algorithmique
 
-- Salle A502 pour la "théorie" (présentation langage et TPs).
-- Salles A406-A432-A433 pour la "pratique".
+- Salle B119 pour la "théorie" (présentation langage et TPs).
+- Salles A404-A406-A432-A433 pour la "pratique".
 
 ## Le bâton
 
@@ -69,7 +66,6 @@ Tout le contenu de ce qu'on raconte se trouve sur cyberlearn:
 - Il y a un certain nombre de ressources se trouvant sur <https://malaspinas.academy>.
 - Mon bureau est toujours ouvert (tapez *assez fort* sur la porte).
 - N'hésitez pas à utiliser le salon *Element*...
-- Et/ou lemmy.
 
 # Évaluations
 
diff --git a/slides/.gitignore b/slides_2023/.gitignore
similarity index 100%
rename from slides/.gitignore
rename to slides_2023/.gitignore
diff --git a/slides_2023/Makefile b/slides_2023/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..ca456632868c6c60372634b61f8c8c31360e37c7
--- /dev/null
+++ b/slides_2023/Makefile
@@ -0,0 +1,65 @@
+# PDFOPTIONS = -t beamer
+# PDFOPTIONS += -F mermaid-filter
+# PDFOPTIONS += --highlight-style my_highlight.theme
+# PDFOPTIONS += --pdf-engine pdflatex
+# PDFOPTIONS += -V theme:metropolis
+# PDFOPTIONS += -V themeoptions:numbering=none -V themeoptions:progressbar=foot
+# PDFOPTIONS += -V urlcolor=blue
+
+PDFOPTIONS  = -t beamer
+PDFOPTIONS += --pdf-engine=xelatex
+PDFOPTIONS += -F mermaid-filter
+PDFOPTIONS += --default-image-extension=pdf
+PDFOPTIONS += -V theme:metropolis
+PDFOPTIONS += -V themeoptions:numbering=none -V themeoptions:progressbar=foot
+PDFOPTIONS += -V fontsize=smaller
+PDFOPTIONS += --highlight-style espresso
+PDFOPTIONS += -H ./header.tex --listings
+
+MD=$(wildcard *.md) # Tous les fichiers .md
+HTML=$(MD:%.md=%.html) # Pour les fichier html on transforme .md -> .html
+PDF=$(MD:%.md=%.pdf) # Pour les fichier pdf on transforme .md -> .pdf
+MARKDOWN=$(MD:%.md=%.markdown) # Pour les fichier markdown on transforme .md -> .markdown
+CHROMIUM:=$(shell which chromium || which chromium-browser)
+
+# all: $(PDF) $(HTML) # La cible par défaut (all) exécute les cibles %.html et %.pdf
+all: puppeteer $(PDF) # La cible par défaut (all) exécute les cibles %.html et %.pdf
+
+puppeteer:
+	@echo "Setting chromium to $(CHROMIUM) for puppeteer"
+	@echo -e "{\n\"executablePath\":" \"$(CHROMIUM)\" ",\n\"args\": [\"--no-sandbox\"]\n}" > .puppeteer.json
+
+markdown: $(MARKDOWN) # La markdown les cibles %.markdown
+
+%.pdf: %.md metadata.yaml # %.pdf (chaque fichier %.md génère un fichier avec le même nom mais l'extension .pdf et la dépendance metadata.yaml)
+	pandoc -s $(OPTIONS) $(PDFOPTIONS) -o $@ $^
+
+%.html: %.md metadata.yaml
+	pandoc -s $(OPTIONS) $(REVEALOPTIONS) -o $@ $^
+
+%.markdown: %.md metadata.yaml yq
+	sed '1 { /^---/ { :a N; /\n---/! ba; d} }' $< > no_header
+	grep -v -F -x -f  no_header $< > header.yaml
+	echo "---" > tmp.yaml
+	./yq_linux_amd64 merge metadata.yaml header.yaml >> tmp.yaml
+	cat tmp.yaml no_header > $@
+	rm no_header header.yaml tmp.yaml
+
+yq: # On peut même télécharger un petit programme avec notre makefile
+	wget -nc https://github.com/mikefarah/yq/releases/download/3.4.1/yq_linux_amd64
+	chmod "u+x" yq_linux_amd64 
+
+index.md: gen_index.sh
+	$(shell ./gen_index.sh)
+
+index.html: index.md
+	pandoc -s $(OPTIONS) --css ../css/tufte-css/tufte.css -o $@ $^
+
+deploy: all index.html
+	mkdir -p prog_seq_c_cours
+	cp *.pdf prog_seq_c_cours
+	cp *.html prog_seq_c_cours
+
+clean:
+	rm -f *.pdf *.html *.markdown yq_linux_amd64* index.md
+
diff --git a/slides/allocation_dynamique.md b/slides_2023/allocation_dynamique.md
similarity index 100%
rename from slides/allocation_dynamique.md
rename to slides_2023/allocation_dynamique.md
diff --git a/slides_2023/boucles_conditions.md b/slides_2023/boucles_conditions.md
new file mode 100644
index 0000000000000000000000000000000000000000..39197583aef040cc6ec734b7a9653105fbd4166c
--- /dev/null
+++ b/slides_2023/boucles_conditions.md
@@ -0,0 +1,269 @@
+---
+title: "Boucles et conditions"
+date: "2023-09-28"
+---
+
+# Quiz
+
+\footnotesize
+
+## Que fait le code suivant?
+
+```C
+#include <stdio.h>
+#include <stdlib.h>
+int main() {
+  printf("Enter n: ");
+  int n = 0;
+  scanf("%d", &n);
+  int res = 0;
+  for (int i = 0; i <= n; ++i) {
+    res += i;
+  }
+  printf("For = %d, the result is %d\n", n, res);
+  if (res != n * (n+1) / 2) {
+    printf("Error: the answer is wrong.\n");
+    return EXIT_FAILURE;
+  }
+  return EXIT_SUCCESS;
+}
+```
+
+# Génération d'un exécutable
+
+- Pour pouvoir être exécuté un code C doit être d'abord compilé (avec `gcc` ou `clang`).
+- Pour un code `prog.c` la compilation "minimale" est
+
+    ```bash
+    $ clang prog.c
+    $ ./a.out # exécutable par défaut
+    ```
+
+- Il existe une multitude d'options de compilation:
+
+    ```bash
+    $ clang -std=c11 -Wall -Wextra prog.c -o prog
+    ```
+    1. `-std=c11` utilisation de C11.
+    2. `-Wall` et `-Wextra` activation des warnings.
+    3. `-o` défini le fichier exécutable à produire en sortie.
+
+# Structures de contrôle: `if`{.C} .. `else if`{.C} .. `else`{.C} (1/2)
+
+\footnotesize
+
+## Syntaxe
+
+```C
+if (expression) {
+    instructions;
+} else if (expression) { // optionnel
+                         // il peut y en avoir plusieurs
+    instructions;
+} else {
+    instructions; // optionnel
+}
+```
+
+```C
+if (x) { // si x s'évalue à `vrai`
+    printf("x s'évalue à vrai.\n");
+} else if (y == 8) { // si y vaut 8
+    printf("y vaut 8.\n");
+} else {
+    printf("Ni l'un ni l'autre.\n");
+}
+```
+
+
+# Structures de contrôle: `continue`{.C}, `break`{.C}
+
+\footnotesize
+
+- `continue`{.C} saute à la prochaine itération d'une boucle.
+
+    ```C
+    int i = 0;
+    while (i < 10) {
+        if (i == 3) {
+            i += 1;
+            continue;
+        }
+        printf("%d\n", i);
+        i += 1;
+    }
+    ```
+
+- `break`{.C} quitte le bloc itératif courant d'une boucle.
+
+    ```C
+    for (int i = 0; i < 10; i++) {
+        if (i == 3) {
+            break;
+        }
+        printf("%d\n", i);
+    }
+    ```
+
+# La fonction `main()` (1/2)
+
+## Généralités
+
+- Point d'entrée du programme.
+- Retourne le code d'erreur du programme:
+    - 0: tout s'est bien passé.
+    - Pas zéro: problème.
+- La valeur de retour peut être lue par le shell qui a exécuté le programme.
+- `EXIT_SUCCESS`{.C} et `EXIT_FAILURE`{.C} (de `stdlib.h`) sont des valeurs de retour **portables** de programmes C. 
+
+# La fonction `main()` (2/2)
+
+## Exemple
+
+```C
+int main() {
+    // ...
+    if (error) {
+	    return EXIT_FAILURE;
+    } else {
+	    return EXIT_SUCCESS;
+    }
+}
+```
+
+- Le code d'erreur est lu dans le shell avec `$?`{.bash}
+
+```bash
+$ ./prog
+$ echo $?
+0 # tout s'est bien passé par exemple
+$ if [ $? -eq 0 ]; then echo "OK"; else echo "ERROR"; fi
+ERROR # si tout s'est mal passé
+```
+
+# Entrées/sorties: `printf()`{.C} (1/2)
+
+## Généralités
+
+- La fonction `printf()`{.C} permet d'afficher du texte sur le terminal:
+
+    ```C
+    int printf(const char *format, ...);
+    ```
+- Nombre d'arguments variables.
+- `format`{.C} est le texte, ainsi que le format (type) des variables à afficher.
+- Les arguments suivants sont les expressions à afficher.
+
+# Entrées/sorties: `printf()`{.C} (2/2)
+
+## Exemple
+
+```C
+#include <stdio.h>
+#include <stdlib.h>
+int main() {
+    printf("Hello world.\n");
+    int val = 1;
+    // %d => int
+    printf("Hello world %d time.\n", val); 
+    // %f => float
+    printf("%f squared is equal to %f.\n", 
+           2.5, 2.5*2.5); 
+    // %s => string
+    printf("Hello world %s.\n", "Hello world"); 
+    return EXIT_SUCCESS;
+}
+```
+
+# Entrées/sorties: `scanf()`{.C} (1/2)
+
+## Généralités
+
+- La fonction `scanf()`{.C} permet de lire du texte formaté entré au clavier:
+
+    ```C
+    int scanf(const char *format, ...);
+    ```
+
+- `format`{.C} est le format des variables à lire (comme `printf()`{.C}).
+- Les arguments suivants sont les variables où sont stockées les valeurs lues.
+
+# Entrées/sorties: `scanf()`{.C} (2/2)
+
+## Exemple
+
+```C
+#include <stdio.h>
+#include <stdlib.h>
+
+int main() {
+    printf("Enter 3 numbers: \n");
+    int i, j, k;
+    scanf("%d %d %d", &i, &j, &k); // !!! &
+    printf("You entered: %d %d %d\n", i, j, k);
+    
+    return EXIT_SUCCESS;
+}
+```
+
+# Nombres aléatoires: `rand()`, `srand()`{.C} (2/2)
+
+\footnotesize
+
+```
+$ man 3 rand
+The  rand()  function  returns  a  pseudo-random  integer  
+in  the  range  0  to RAND_MAX inclusive (i.e., the 
+mathematical range [0, RAND_MAX]).
+```
+
+## Exemple
+
+```C
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+int main() {
+    srand(0);          // every run will be identical
+    srand(time(NULL)); // every run will be be different
+    for (int i = 0; i < 50; ++i) {
+        printf("%d\n", rand() % 50); // à quoi sert % 50?
+    }
+    return EXIT_SUCCESS;
+}
+```
+
+# Le cas du nombre secret
+
+## But du programme
+
+* Faire chercher un nombre aléatoire,
+* Le nombre est compris entre 0 et une borne max.
+
+## Quelles sont les étapes?
+
+
+1. Donner une borne maximale à l'ordinateur, MAX.
+
+. . .
+
+2. Faire tirer un nombre aléatoire à l'ordinateur entre 0 et MAX-1.
+
+. . .
+
+3. Le·la joueur·se joue un nombre.
+
+. . .
+
+4. L'ordinateur vérifie la réponse:
+
+    * Si correct le jeu est fini,
+    * Sinon indiquer si le nombre secret est plus grand ou plus petit et revenir à 3.
+
+# La fin
+
+1. Y a-t-il des questions?
+
+. . .
+
+2. Si oui, répondre et revenir à 1, sinon aller faire l'exercice en A432/433/406.
diff --git a/slides_2023/command_line.md b/slides_2023/command_line.md
new file mode 100644
index 0000000000000000000000000000000000000000..67cab0777b8365b730042bee2c97db7a4434f8eb
--- /dev/null
+++ b/slides_2023/command_line.md
@@ -0,0 +1,220 @@
+---
+title: "Introduction à la l'interface en ligne de commande"
+date: "2023-09-28"
+---
+
+# Introduction
+
+## Généralités
+
+* *Command line interface* (CLI) en anglais.
+* Interface textuelle vers l'ordinateur.
+* Peut s'appeler le *shell*, le *terminal*, la *console*, ...
+* Semble obscure, mais est très pratique (automatisation de tâches, copier-coller, ...).
+* Vous devrez l'utiliser tout au long de vos études.
+* Existe sous Linux, MacOS, et même Windows (les commandes peuvent varier!).
+* Ici on ne parlera que de *Linux*.
+
+# A quoi ça sert?
+
+## Équivalent textuel d'un GUI
+
+Toutes les informations obtenues avec une interface graphique, peuvent être obtenues à l'aide de la ligne de commande (liste loin d'être exhaustive):
+
+* Changement d'un répertoire: `cd`{.bash}
+* Affichage du contenu d'un répertoire: `ls`{.bash}
+* Déplacement de fichier: `mv`{.bash}
+* Copie de fichier: `cp`{.bash}
+* Création de répertoire: `mkdir`{.bash}
+* Recherche de fichier: `find`{.bash}
+* Recherche de texte dans un fichier: `grep`{.bash}
+* Etc, etc, etc, etc, etc
+
+## Mais aussi
+
+* Télécharger des documents, compiler, éditer des fichiers, ...
+
+# Ouvrir un terminal
+
+\footnotesize
+
+Dépendant de votre distribution de Linux l'ouverture d'un terminal peut varier.
+
+Ce qui marche *presque* tout le temps:
+
+1. Appuyer sur le bouton `Super` (`Windows`) du clavier.
+2. Commencer à taper "terminal".
+
+![](figs/terminal_open.png){width=100%}
+
+Raccourcis clavier:
+
+* `Ctrl+Alt+T`{.bash}
+* `Super+T`{.bash}
+* Vous pouvez customiser les raccourcis.
+
+# Une fois le terminal ouvert
+
+Vous pouvez taper des commandes puis `Entrée`.
+
+```bash
+$ pwd
+/home/orestis
+```
+
+Exemple: `pwd`{.bash} affiche le répertoire courant (**p**rint **w**orking **d**irectory).
+
+**Attention: les commandes sont sensibles à la casse!**
+
+Exemple: `cd`{.bash} change de répertoire (**c**hange **d**irectory).
+
+:::::::::::::: {.columns}
+
+::: {.column width="45%"}
+
+```bash
+$ pwd
+/home/orestis
+$ cd ..
+$ pwd
+/home
+```
+
+:::
+::: {.column width="45%"}
+
+```bash
+$ cd orestis
+$ pwd
+/home/orestis
+$ cd ../..
+$ pwd
+/
+```
+
+:::
+::::::::::::::
+
+# Remarque: chemins relatifs ou absolus
+
+Un *chemin* est relatif à moins que le chemin commence par `/` ou `~`.
+
+```bash
+$ pwd
+/home/orestis
+$ cd Downloads
+$ pwd
+/home/orestis/Downloads
+$ cd /tmp
+$ pwd
+/tmp
+$ cd ~/Downloads
+$ pwd
+/home/orestis/Downloads
+```
+
+# Ouvrir un éditeur de texte et éditer un ficher
+
+* Installer un éditeur de texte: `codium`, `vim`, `nvim`, ...
+* Ouvrir l'éditeur de texte (ici codium):
+
+    ```bash
+    $ codium
+    ```
+* Écrire `Hello World!` dans le fichier et sauver sous `cours.dat`.
+
+* Ou alors utiliser `nano`, `vi`, `nvim`, ...
+
+    ```bash
+    $ nano cours.dat
+    ```
+* Écrire `Hello World!` puis `Ctrl+X` et `Y`.
+
+# Quelques commandes utiles (1/3)
+
+\footnotesize
+
+## `mkdir`, création de répertoire
+
+```bash
+$ mkdir tmp
+$ cd tmp
+$ pwd
+/home/orestis/tmp
+```
+
+## `ls`, affiche le contenu d'un répertoire
+
+```bash
+$ ls
+Desktop  Documents  git  Music     Public     tmp
+Docker   Downloads  go   Pictures  Templates  Videos
+$ ls -ltr
+... # des répertoires
+drwxr-xr-x  3 orestis orestis 4096 31 aoû 09:54 Documents
+drwxr-xr-x 11 orestis orestis 4096  7 sep 15:59 Downloads
+drwxr-xr-x  2 orestis orestis 4096  9 sep 11:14 Pictures
+drwxr-xr-x  2 orestis orestis 4096  9 sep 12:41 tmp
+-rw-r--r--  1 orestis orestis    6  9 sep 12:52 cours.dat
+```
+
+# Quelques commandes utiles (2/3)
+
+## `cp`{.bash}, copie de fichiers/répertoires
+
+```bash
+$ cp cours.dat tmp/ # cp cours.dat -> tmp
+$ ls tmp # affiche le rép tmp
+cours.dat
+$ cp -r tmp tmp2 # option -r => recursive
+$ ls
+cours.dat  Docker     Downloads  go     Pictures  Templates  tmp2
+Desktop    Documents  git        Music  Public    tmp        Videos
+```
+
+## `mv`{.bash}, déplacement de fichiers/répertoires
+
+```bash
+$ ls tmp
+$ mv cours.dat tmp # déplace cours.dat -> tmp
+$ ls tmp
+cours.dat
+```
+
+# Quelques commandes utiles (3/3)
+
+## `rm`{.bash}, effacer des fichiers/répertoires
+
+```bash
+$ ls tmp
+cours.dat
+$ rm tmp/cours.dat
+$ ls tmp
+$ rm -r tmp tmp2
+$ ls
+Desktop  Documents  git  Music     Public     Videos
+Docker   Downloads  go   Pictures  Templates
+```
+
+# La touche `tab`{.bash}
+
+Probablement la touche la plus utile du clavier:
+
+* permet la complétion d'une commande.
+* permet la complétion d'un nom de fichier.
+* permet d'afficher les complétions possibles.
+
+Fait gagner un temps considérable.
+
+# Éditeurs de texte
+
+Il existe différents éditeurs de texte qui pourraient être utiles:
+
+* `vscode`{.bash} ou `codium`{.bash} (la version sans l'espionnage M\$)
+* `vim`{.bash}
+* `geany`{.bash}
+* `gedit`{.bash}
+* ...
+
+Ne vous reposez pas trop sur l'éditeur pour tout faire à votre place.
+
diff --git a/slides/compilation_make.md b/slides_2023/compilation_make.md
similarity index 100%
rename from slides/compilation_make.md
rename to slides_2023/compilation_make.md
diff --git a/slides/examen.md b/slides_2023/examen.md
similarity index 100%
rename from slides/examen.md
rename to slides_2023/examen.md
diff --git a/slides/fichiers.md b/slides_2023/fichiers.md
similarity index 100%
rename from slides/fichiers.md
rename to slides_2023/fichiers.md
diff --git a/slides/figs/compilation.svg b/slides_2023/figs/compilation.svg
similarity index 100%
rename from slides/figs/compilation.svg
rename to slides_2023/figs/compilation.svg
diff --git a/slides/figs/compilation_plusieurs.svg b/slides_2023/figs/compilation_plusieurs.svg
similarity index 100%
rename from slides/figs/compilation_plusieurs.svg
rename to slides_2023/figs/compilation_plusieurs.svg
diff --git a/slides/figs/complex_makefile.svg b/slides_2023/figs/complex_makefile.svg
similarity index 100%
rename from slides/figs/complex_makefile.svg
rename to slides_2023/figs/complex_makefile.svg
diff --git a/slides/figs/double_pointeur.svg b/slides_2023/figs/double_pointeur.svg
similarity index 100%
rename from slides/figs/double_pointeur.svg
rename to slides_2023/figs/double_pointeur.svg
diff --git a/slides/figs/ex_makefile.svg b/slides_2023/figs/ex_makefile.svg
similarity index 100%
rename from slides/figs/ex_makefile.svg
rename to slides_2023/figs/ex_makefile.svg
diff --git a/slides/figs/ex_makefile_cible.svg b/slides_2023/figs/ex_makefile_cible.svg
similarity index 100%
rename from slides/figs/ex_makefile_cible.svg
rename to slides_2023/figs/ex_makefile_cible.svg
diff --git a/slides/figs/ex_makefile_dep.svg b/slides_2023/figs/ex_makefile_dep.svg
similarity index 100%
rename from slides/figs/ex_makefile_dep.svg
rename to slides_2023/figs/ex_makefile_dep.svg
diff --git a/slides/figs/ex_makefile_regle.svg b/slides_2023/figs/ex_makefile_regle.svg
similarity index 100%
rename from slides/figs/ex_makefile_regle.svg
rename to slides_2023/figs/ex_makefile_regle.svg
diff --git a/slides/figs/matrix_qr.png b/slides_2023/figs/matrix_qr.png
similarity index 100%
rename from slides/figs/matrix_qr.png
rename to slides_2023/figs/matrix_qr.png
diff --git a/slides/figs/memory.svg b/slides_2023/figs/memory.svg
similarity index 100%
rename from slides/figs/memory.svg
rename to slides_2023/figs/memory.svg
diff --git a/slides/figs/pointer_arithmetics.svg b/slides_2023/figs/pointer_arithmetics.svg
similarity index 100%
rename from slides/figs/pointer_arithmetics.svg
rename to slides_2023/figs/pointer_arithmetics.svg
diff --git a/slides/figs/pointer_struct.svg b/slides_2023/figs/pointer_struct.svg
similarity index 100%
rename from slides/figs/pointer_struct.svg
rename to slides_2023/figs/pointer_struct.svg
diff --git a/slides/figs/pointer_struct_ok.svg b/slides_2023/figs/pointer_struct_ok.svg
similarity index 100%
rename from slides/figs/pointer_struct_ok.svg
rename to slides_2023/figs/pointer_struct_ok.svg
diff --git a/slides/figs/terminal_open.png b/slides_2023/figs/terminal_open.png
similarity index 100%
rename from slides/figs/terminal_open.png
rename to slides_2023/figs/terminal_open.png
diff --git a/slides_2023/gen_index.sh b/slides_2023/gen_index.sh
new file mode 100755
index 0000000000000000000000000000000000000000..5ecece660e8a02222c9c5d85e270a2f9f1b4b427
--- /dev/null
+++ b/slides_2023/gen_index.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+set -e
+
+function get_info() {
+    local field=$(echo "$fullName" | sed "$2q;d" $1);
+    IFS=$3;
+    local field=($field); 
+    if [ "${field}" != $5 ]; then
+        return 1
+    fi
+    local field=${field[1]};
+    IFS=$4;
+    local field=($field);
+    local field=${field[1]};
+    echo "$field"
+}
+
+function fail() {
+    printf '%s\n' "$1" >&2 ## Send message to stderr.
+    exit "${2-1}" ## Return a code specified by $2, or 1 by default.
+}
+
+OIFS=$IFS
+NUM_LINE=2
+PREFIX=""
+# PREFIX=cours/algo/slides/
+
+classes=()
+for i in *.md; do
+    [ -f "$i" ] || break
+    date="$(get_info $i 3 ":" '"' "date")"
+    if [ "$date" == 1 ]; then
+        fail "Error date field not found"
+    fi
+    comp="$(get_info $i 2 ":" '"' "title")"
+    if [ "$comp" == 1 ]; then
+        fail "Error title field not found"
+    fi
+    i="${i%.*}"
+    class="[${date}: ${comp}](${PREFIX}${i}.pdf)"
+    classes+=("$class")
+done
+IFS=$'\n'
+classes=($(sort <<<"${classes[*]}"))
+date=$(date '+%Y-%m-%d')
+echo "---" > index.md
+echo "title: Cours de programmation séquentielle" >> index.md
+echo "date: ${date}" >> index.md
+echo "---" >> index.md
+echo "" >> index.md
+echo "# Les slides du cours" >> index.md
+echo "" >> index.md
+for i in ${classes[*]}; do
+    echo "* $i" >> index.md
+done
+
+
+IFS=$OIFS
diff --git a/slides/genericite.md b/slides_2023/genericite.md
similarity index 100%
rename from slides/genericite.md
rename to slides_2023/genericite.md
diff --git a/slides_2023/header.tex b/slides_2023/header.tex
new file mode 100644
index 0000000000000000000000000000000000000000..f5564a1de4766b4ab1f1eca259f6b90286e208eb
--- /dev/null
+++ b/slides_2023/header.tex
@@ -0,0 +1,18 @@
+\lstset{
+    basicstyle=\fontsize{7}{7}\ttfamily,
+    keywordstyle=\color[rgb]{0.13,0.29,0.53}\bfseries,
+    stringstyle=\color[rgb]{0.31,0.60,0.02},
+    commentstyle=\color[rgb]{0.56,0.35,0.01}\itshape,    
+    backgroundcolor=\color[RGB]{238,238,238},
+    showspaces=false,
+    showstringspaces=false,
+    showtabs=false,
+    tabsize=4,
+    captionpos=b,
+    breaklines=true,
+    extendedchars=true,
+    columns=fixed,
+    frame=trbl,
+    framesep=4pt,
+}
+\usepackage{dsfont}
diff --git a/slides_2023/intro.md b/slides_2023/intro.md
new file mode 100644
index 0000000000000000000000000000000000000000..ea1d387fd87ec3865a759334ff8f632be6896e4b
--- /dev/null
+++ b/slides_2023/intro.md
@@ -0,0 +1,105 @@
+---
+title: "Introduction générale"
+date: "2023-09-21"
+---
+
+# La hotline
+
+Nom                    Mél                               Bureau
+--------------------   ------------------------------    --------------------
+Kevin Heirich          kevin.heirich@hesge.ch            A403
+Quentin Leblanc        quentin.leblanc@hesge.ch          A403
+Raphael Bach           raphael.bach@hesge.ch             B411
+Michaël El Kharroubi   michael.el-kharroubi@hesge.ch     A403
+Paul Albuquerque       paul.albuquerque@hesge.ch         B410
+Orestis Malaspinas     orestis.malaspinas@hesge.ch       A401
+--------------------   ------------------------------    --------------------
+
+Utilisez le libre service (pas encore d'horaire):
+
+# Communication
+
+Tout le contenu de ce qu'on raconte se trouve sur cyberlearn:
+
+- Algorithmes et structures de données
+  - <https://cyberlearn.hes-so.ch/course/view.php?id=7276>
+  - Clé d'inscription: algo_2023_24
+
+- Programmation Sequentielle en C
+  - <https://cyberlearn.hes-so.ch/course/view.php?id=7282>
+  - Clé d'inscription: prog_seq_2023_24
+* Espace de discussion 
+  [Matrix](https://matrix.to/#/!aKYVlcclmPGYXQFxAK:matrix.org?via=matrix.org), 
+  installez [element.io](https://element.io).
+
+    ![](figs/matrix_qr.png){width=20%}
+* Communauté Lemmy: <https://lemmy.hepiapp.ch/c/prog_seq>
+
+# Organisation du cours (1/3)
+
+## But: Illustration des concepts vus au cours d'algorithmique
+
+- Salle A502 pour la "théorie" (présentation langage et TPs).
+- Salles A406-A432-A433 pour la "pratique".
+
+## Le bâton
+
+- Présence en cours **obligatoire** (13h-16h45 tous les mardis).
+- P. Albuquerque note les présences.
+
+## La carotte
+
+- Rare cours d'informatique de première.
+- Travaux pratiques amusants et stimulants.
+
+# Organisation du cours (2/3)
+
+- Travaux pratiques à faire en C.
+- Chaque séance est un nouveau travail pratique (typiquement d'une durée d'une 
+  séance).
+- Vous aurez à utiliser `git` sur <https://gitedu.hesge.ch/>.
+- **Utilisez uniquement Linux** (dual boot sur vos portables).
+- Les jeux vidéos sont pas une excuse pour pas avoir de linux[^1].
+
+[^1]: [80 Percent of Steam's Top 100 Games Run 'Nearly Flawlessly' on Linux](https://www.tomshardware.com/news/80-percent-of-steam-games-run-on-linux).
+
+# Organisation du cours (3/3)
+
+- Les cours "théoriques" seront disponible en replay sur <https://bbb.hesge.ch/rooms/wkm-a1q-7d1-rjb/join>.
+- Il y a un certain nombre de ressources se trouvant sur <https://malaspinas.academy>.
+- Mon bureau est toujours ouvert (tapez *assez fort* sur la porte).
+- N'hésitez pas à utiliser le salon *Element*...
+- Et/ou lemmy.
+
+# Évaluations
+
+## 1er semestre deux examens sur machine
+
+- Seul·e devant votre ordinateur.
+- Avec à disposition une page rect-verso de notes manuscrites.
+
+## 2e semestre deux examens sur machine
+
+- Seul·e devant votre ordinateur.
+- Avec à disposition une page rect-verso de notes manuscrites.
+
+# Sondage: expérience de programmation
+
+## [Sondage: expérience de linux](https://cyberlearn.hes-so.ch/mod/evoting/view.php?id=501943)
+
+## [Sondage: expérience de programmation](https://cyberlearn.hes-so.ch/mod/evoting/view.php?id=501940)
+
+**Installez un lecteur de QR code s'il-vous-plaît.**
+
+# Questions?
+
+- N'hésitez pas à poser des *questions*, nous sommes là pour ça! [^3] [^4]
+- Ne restez pas coincés pendant des jours sur un problème.
+- Utilisez le *libre-service*!
+- N'hésitez pas à faire des *retours*: *négatifs* ou *positifs* (évaluations des cours, ou au cours de discussions).
+- Il est très tentant de faire les TPs en groupe, mais il est **primordial** de programmer vous-mêmes (c'est comme apprendre une langue)!
+
+[^3]: Surtout les assistants.
+[^4]: Chaque étudiant·e·s a un quota de 1 question par semestre pour les professeurs.
+
+
diff --git a/slides/les_exos_avec_le_dojo.md b/slides_2023/les_exos_avec_le_dojo.md
similarity index 100%
rename from slides/les_exos_avec_le_dojo.md
rename to slides_2023/les_exos_avec_le_dojo.md
diff --git a/slides/ligne_de_commande_c.md b/slides_2023/ligne_de_commande_c.md
similarity index 100%
rename from slides/ligne_de_commande_c.md
rename to slides_2023/ligne_de_commande_c.md
diff --git a/slides_2023/metadata.yaml b/slides_2023/metadata.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b0c5ffda6bfa9acad02a3f6910d932cebfad210b
--- /dev/null
+++ b/slides_2023/metadata.yaml
@@ -0,0 +1,8 @@
+---
+subtitle: "Programmation séquentielle en C, 2023-2024"
+author: "Orestis Malaspinas (A401)"
+institute: "Informatique et Systèmes de Communication, HEPIA"
+lang: fr-CH
+mathjaxurl: "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"
+---
+
diff --git a/slides_2023/my_highlight.theme b/slides_2023/my_highlight.theme
new file mode 100644
index 0000000000000000000000000000000000000000..1d80b47b144ca30f252d27a32e3d3775267c7bbb
--- /dev/null
+++ b/slides_2023/my_highlight.theme
@@ -0,0 +1,204 @@
+{
+    "text-color": null,
+    "background-color": "#f0f0f0",
+    "line-number-color": "#aaaaaa",
+    "line-number-background-color": null,
+    "text-styles": {
+        "Other": {
+            "text-color": "#8f5902",
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "Attribute": {
+            "text-color": "#c4a000",
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "SpecialString": {
+            "text-color": "#4e9a06",
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "Annotation": {
+            "text-color": "#8f5902",
+            "background-color": null,
+            "bold": true,
+            "italic": true,
+            "underline": false
+        },
+        "Function": {
+            "text-color": "#000000",
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "String": {
+            "text-color": "#4e9a06",
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "ControlFlow": {
+            "text-color": "#204a87",
+            "background-color": null,
+            "bold": true,
+            "italic": false,
+            "underline": false
+        },
+        "Operator": {
+            "text-color": "#ce5c00",
+            "background-color": null,
+            "bold": true,
+            "italic": false,
+            "underline": false
+        },
+        "Error": {
+            "text-color": "#a40000",
+            "background-color": null,
+            "bold": true,
+            "italic": false,
+            "underline": false
+        },
+        "BaseN": {
+            "text-color": "#0000cf",
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "Alert": {
+            "text-color": "#ef2929",
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "Variable": {
+            "text-color": "#000000",
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "Extension": {
+            "text-color": null,
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "Preprocessor": {
+            "text-color": "#8f5902",
+            "background-color": null,
+            "bold": false,
+            "italic": true,
+            "underline": false
+        },
+        "Information": {
+            "text-color": "#8f5902",
+            "background-color": null,
+            "bold": true,
+            "italic": true,
+            "underline": false
+        },
+        "VerbatimString": {
+            "text-color": "#4e9a06",
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "Warning": {
+            "text-color": "#8f5902",
+            "background-color": null,
+            "bold": true,
+            "italic": true,
+            "underline": false
+        },
+        "Documentation": {
+            "text-color": "#8f5902",
+            "background-color": null,
+            "bold": true,
+            "italic": true,
+            "underline": false
+        },
+        "Import": {
+            "text-color": null,
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "Char": {
+            "text-color": "#4e9a06",
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "DataType": {
+            "text-color": "#204a87",
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "Float": {
+            "text-color": "#0000cf",
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "Comment": {
+            "text-color": "#8f5902",
+            "background-color": null,
+            "bold": false,
+            "italic": true,
+            "underline": false
+        },
+        "CommentVar": {
+            "text-color": "#8f5902",
+            "background-color": null,
+            "bold": true,
+            "italic": true,
+            "underline": false
+        },
+        "Constant": {
+            "text-color": "#000000",
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "SpecialChar": {
+            "text-color": "#000000",
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "DecVal": {
+            "text-color": "#0000cf",
+            "background-color": null,
+            "bold": false,
+            "italic": false,
+            "underline": false
+        },
+        "Keyword": {
+            "text-color": "#204a87",
+            "background-color": null,
+            "bold": true,
+            "italic": false,
+            "underline": false
+        }
+    }
+}
diff --git a/slides/opaque.md b/slides_2023/opaque.md
similarity index 100%
rename from slides/opaque.md
rename to slides_2023/opaque.md
diff --git a/slides/pointeurs_avances.md b/slides_2023/pointeurs_avances.md
similarity index 100%
rename from slides/pointeurs_avances.md
rename to slides_2023/pointeurs_avances.md
diff --git a/slides/strings.md b/slides_2023/strings.md
similarity index 100%
rename from slides/strings.md
rename to slides_2023/strings.md
diff --git a/slides/structs.md b/slides_2023/structs.md
similarity index 100%
rename from slides/structs.md
rename to slides_2023/structs.md
diff --git a/slides/tableaux_fonctions.md b/slides_2023/tableaux_fonctions.md
similarity index 100%
rename from slides/tableaux_fonctions.md
rename to slides_2023/tableaux_fonctions.md
diff --git a/slides/variables_fonctions.md b/slides_2023/variables_fonctions.md
similarity index 100%
rename from slides/variables_fonctions.md
rename to slides_2023/variables_fonctions.md