diff --git a/20211202/es-20211202.pdf b/20211202/es-20211202.pdf
index 8bb500633bf8f3585ca5e03cbc80c53d6046c3f4..ba420eb35191fb7479bcfb05f3ae86df96e6b935 100644
Binary files a/20211202/es-20211202.pdf and b/20211202/es-20211202.pdf differ
diff --git a/20211202/es-20211202.tex b/20211202/es-20211202.tex
index 0d9846e5d669d2b27213c5abbb783056e60d4cd7..d01a46f463c381ac8dc0f28a72d5bfa0a58ed6ee 100644
--- a/20211202/es-20211202.tex
+++ b/20211202/es-20211202.tex
@@ -712,7 +712,7 @@
 
 \end{frame}
 
-\setlength{\pdfpageheight}{48cm}
+\setlength{\pdfpageheight}{49cm}
 
 \begin{frame}[fragile]
 
@@ -878,7 +878,7 @@
 
 \end{frame}
 
-\setlength{\pdfpageheight}{40.5cm}
+\setlength{\pdfpageheight}{45cm}
 
 \begin{frame}[fragile]
 
diff --git a/20211202/make-zombies-1.c b/20211202/make-zombies-1.c
new file mode 100644
index 0000000000000000000000000000000000000000..f7b2604f147e5efca9e2adcca5f50b8d134ccaab
--- /dev/null
+++ b/20211202/make-zombies-1.c
@@ -0,0 +1,41 @@
+#include <stdio.h>
+#include <sys/wait.h>
+#include <stdlib.h>
+#include <unistd.h>
+ 
+int main(void){
+    pid_t pids[10]; // Platz f�r 10 Prozess-IDs (die Kindprozesse)
+    int i; // Laufvariable
+ 
+    for (i = 0; i < 10; ++i) {
+        // Der Vaterprozess erzeugt nun einen Kindprozess,
+        // welcher unabh�ngig vom Vaterprozess mit der
+        // erneuten Ausf�hrung des Programms beginnt.
+        // Ein Kindprozess erzeugt keinen Fork von sich selbst.
+        pids[i] = fork();
+        if (pids[i] == 0) {
+            // dann befinden wir uns in einem der 10 Kindprozesse
+            // Der erste Kindprozess wartet 10 Sekunden und jeder
+            // weitere Kindprozess wartet 1 Sekunde k�rzer als der
+            // vorige.
+            sleep(10-i);
+            printf ("%d BRAINS! ", i);
+            exit(0); // Kindprozess erfolgreich beenden
+        }
+    }
+
+//
+    // hier kommt nur der Vaterprozess vorbei
+    for (i = 0; i < 10; ++i){
+        // Der Vaterprozess wartet nun, bis der Reihe nach jeder
+        // seiner 10 Kindprozesse beendet ist. Leider wird auf das
+        // Kind mit der l�ngsten Wartezeit zuerst gewartet. Obwohl
+        // die anderen Kinder l�ngst erfolgreich beendet wurden,
+        // blockiert das erste Kind eine Bereinigung der Prozesstabelle
+        waitpid(pids[i], NULL, 0);
+    }
+//
+
+//    while (1);
+    return 0; // Vaterprozess erfolgreich beenden
+}
diff --git a/20211202/make-zombies-2.c b/20211202/make-zombies-2.c
new file mode 100644
index 0000000000000000000000000000000000000000..737940e90a5057377c5a8a95d49afccedf703a28
--- /dev/null
+++ b/20211202/make-zombies-2.c
@@ -0,0 +1,41 @@
+#include <stdio.h>
+#include <sys/wait.h>
+#include <stdlib.h>
+#include <unistd.h>
+ 
+int main(void){
+    pid_t pids[10]; // Platz für 10 Prozess-IDs (die Kindprozesse)
+    int i; // Laufvariable
+ 
+    for (i = 0; i < 10; ++i) {
+        // Der Vaterprozess erzeugt nun einen Kindprozess,
+        // welcher unabhängig vom Vaterprozess mit der
+        // erneuten Ausführung des Programms beginnt.
+        // Ein Kindprozess erzeugt keinen Fork von sich selbst.
+        pids[i] = fork();
+        if (pids[i] == 0) {
+            // dann befinden wir uns in einem der 10 Kindprozesse
+            // Der erste Kindprozess wartet 10 Sekunden und jeder
+            // weitere Kindprozess wartet 1 Sekunde kürzer als der
+            // vorige.
+            sleep(10-i);
+            printf ("%d BRAINS! ", i);
+            exit(0); // Kindprozess erfolgreich beenden
+        }
+    }
+
+//
+//  // hier kommt nur der Vaterprozess vorbei
+//   for (i = 0; i < 10; ++i){
+//       // Der Vaterprozess wartet nun, bis der Reihe nach jeder
+//       // seiner 10 Kindprozesse beendet ist. Leider wird auf das
+//       // Kind mit der längsten Wartezeit zuerst gewartet. Obwohl
+//       // die anderen Kinder längst erfolgreich beendet wurden,
+//       // blockiert das erste Kind eine Bereinigung der Prozesstabelle
+//       waitpid(pids[i], NULL, 0);
+//   }
+//
+
+    while (1);
+//    return 0; // Vaterprozess erfolgreich beenden
+}
diff --git a/20211202/make-zombies-3.c b/20211202/make-zombies-3.c
new file mode 100644
index 0000000000000000000000000000000000000000..196e0a4f93def95ac693571b03c8f66bc198ff54
--- /dev/null
+++ b/20211202/make-zombies-3.c
@@ -0,0 +1,41 @@
+#include <stdio.h>
+#include <sys/wait.h>
+#include <stdlib.h>
+#include <unistd.h>
+ 
+int main(void){
+    pid_t pids[10]; // Platz für 10 Prozess-IDs (die Kindprozesse)
+    int i; // Laufvariable
+ 
+    for (i = 0; i < 10; ++i) {
+        // Der Vaterprozess erzeugt nun einen Kindprozess,
+        // welcher unabhängig vom Vaterprozess mit der
+        // erneuten Ausführung des Programms beginnt.
+        // Ein Kindprozess erzeugt keinen Fork von sich selbst.
+        pids[i] = fork();
+        if (pids[i] == 0) {
+            // dann befinden wir uns in einem der 10 Kindprozesse
+            // Der erste Kindprozess wartet 10 Sekunden und jeder
+            // weitere Kindprozess wartet 1 Sekunde kürzer als der
+            // vorige.
+            sleep(10-i);
+            printf ("%d BRAINS! ", i);
+            exit(0); // Kindprozess erfolgreich beenden
+        }
+    }
+
+//
+//  // hier kommt nur der Vaterprozess vorbei
+//   for (i = 0; i < 10; ++i){
+//       // Der Vaterprozess wartet nun, bis der Reihe nach jeder
+//       // seiner 10 Kindprozesse beendet ist. Leider wird auf das
+//       // Kind mit der längsten Wartezeit zuerst gewartet. Obwohl
+//       // die anderen Kinder längst erfolgreich beendet wurden,
+//       // blockiert das erste Kind eine Bereinigung der Prozesstabelle
+//       waitpid(pids[i], NULL, 0);
+//   }
+//
+
+//    while (1);
+    return 0; // Vaterprozess erfolgreich beenden
+}
diff --git a/20211202/preprocessor-1.c b/20211202/preprocessor-1.c
new file mode 100644
index 0000000000000000000000000000000000000000..91a99c5cead1969500264c33b346ab6e3737c719
--- /dev/null
+++ b/20211202/preprocessor-1.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+#define VIER 4
+
+int main (void)
+{
+  printf ("Die Antwort lautet: %d\n", VIER);
+  return 0;
+}
diff --git a/20211202/preprocessor-10.c b/20211202/preprocessor-10.c
new file mode 100644
index 0000000000000000000000000000000000000000..e01204d4301ccb6e30455749c4606bd3c1243fff
--- /dev/null
+++ b/20211202/preprocessor-10.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+#define hello(x) { printf ("Hello!\n"); printf ("World!\n"); }
+#define hallo(x) { printf ("Hallo!\n"); printf ("Welt!\n"); }
+
+#define english 1
+
+int main (void)
+{
+  if (english)
+    hello ()
+  else
+    hallo ()
+  return 0;
+}
diff --git a/20211202/preprocessor-11.c b/20211202/preprocessor-11.c
new file mode 100644
index 0000000000000000000000000000000000000000..0778e33d67abaf3d04bb52fe701c0592b8d72f5d
--- /dev/null
+++ b/20211202/preprocessor-11.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+#define hello(x) do { printf ("Hello!\n"); printf ("World!\n"); } while (0)
+#define hallo(x) do { printf ("Hallo!\n"); printf ("Welt!\n"); } while (0)
+
+#define english 1
+
+int main (void)
+{
+  if (english)
+    hello ();
+  else
+    hallo ();
+  return 0;
+}
diff --git a/20211202/preprocessor-12.c b/20211202/preprocessor-12.c
new file mode 100644
index 0000000000000000000000000000000000000000..6f5432ffa656b7308025babce6ae17b17d1cace7
--- /dev/null
+++ b/20211202/preprocessor-12.c
@@ -0,0 +1,28 @@
+#include <stdio.h>
+
+#define hello(x) \
+  do \
+    { \
+      printf ("Hello!\n"); \
+      printf ("World!\n"); \
+    } \
+  while (0)
+
+#define hallo(x) \
+  do \
+    { \
+      printf ("Hallo!\n"); \
+      printf ("Welt!\n"); \
+    } \
+  while (0)
+
+#define english 1
+
+int main (void)
+{
+  if (english)
+    hello ();
+  else
+    hallo ();
+  return 0;
+}
diff --git a/20211202/preprocessor-13.c b/20211202/preprocessor-13.c
new file mode 100644
index 0000000000000000000000000000000000000000..1c0a27bc4399ad7cb5be4eef22cdc0ada6d4fd49
--- /dev/null
+++ b/20211202/preprocessor-13.c
@@ -0,0 +1,14 @@
+#include <stdio.h>
+
+#define set_answer(a,v) \
+  do \
+    a = v; \
+  while (0)
+
+int main (void)
+{
+  int answer = 0;
+  set_answer (answer, 42);
+  printf ("Die Antwort lautet: %d\n", answer);
+  return 0;
+}
diff --git a/20211202/preprocessor-13.s b/20211202/preprocessor-13.s
new file mode 100644
index 0000000000000000000000000000000000000000..2b29389c7116ade1fd8474c72c03d818019009c5
--- /dev/null
+++ b/20211202/preprocessor-13.s
@@ -0,0 +1,26 @@
+	.file	"preprocessor-13.c"
+	.text
+	.section	.rodata.str1.1,"aMS",@progbits,1
+.LC0:
+	.string	"Die Antwort lautet: %d\n"
+	.text
+	.globl	main
+	.type	main, @function
+main:
+.LFB11:
+	.cfi_startproc
+	subq	$8, %rsp
+	.cfi_def_cfa_offset 16
+	movl	$42, %esi
+	leaq	.LC0(%rip), %rdi
+	movl	$0, %eax
+	call	printf@PLT
+	movl	$0, %eax
+	addq	$8, %rsp
+	.cfi_def_cfa_offset 8
+	ret
+	.cfi_endproc
+.LFE11:
+	.size	main, .-main
+	.ident	"GCC: (Debian 8.3.0-6) 8.3.0"
+	.section	.note.GNU-stack,"",@progbits
diff --git a/20211202/preprocessor-14.c b/20211202/preprocessor-14.c
new file mode 100644
index 0000000000000000000000000000000000000000..b1558f58a621c73abbb056296bc13a332a554e68
--- /dev/null
+++ b/20211202/preprocessor-14.c
@@ -0,0 +1,14 @@
+#include <stdio.h>
+
+void set_answer (int *a, int v)
+{
+  *a = v;
+}
+
+int main (void)
+{
+  int answer = 0;
+  set_answer (&answer, 42);
+  printf ("Die Antwort lautet: %d\n", answer);
+  return 0;
+}
diff --git a/20211202/preprocessor-14.s b/20211202/preprocessor-14.s
new file mode 100644
index 0000000000000000000000000000000000000000..ee84b203efd614679f58360601e4cf65ffde2e37
--- /dev/null
+++ b/20211202/preprocessor-14.s
@@ -0,0 +1,36 @@
+	.file	"preprocessor-14.c"
+	.text
+	.globl	set_answer
+	.type	set_answer, @function
+set_answer:
+.LFB11:
+	.cfi_startproc
+	movl	%esi, (%rdi)
+	ret
+	.cfi_endproc
+.LFE11:
+	.size	set_answer, .-set_answer
+	.section	.rodata.str1.1,"aMS",@progbits,1
+.LC0:
+	.string	"Die Antwort lautet: %d\n"
+	.text
+	.globl	main
+	.type	main, @function
+main:
+.LFB12:
+	.cfi_startproc
+	subq	$8, %rsp
+	.cfi_def_cfa_offset 16
+	movl	$42, %esi
+	leaq	.LC0(%rip), %rdi
+	movl	$0, %eax
+	call	printf@PLT
+	movl	$0, %eax
+	addq	$8, %rsp
+	.cfi_def_cfa_offset 8
+	ret
+	.cfi_endproc
+.LFE12:
+	.size	main, .-main
+	.ident	"GCC: (Debian 8.3.0-6) 8.3.0"
+	.section	.note.GNU-stack,"",@progbits
diff --git a/20211202/preprocessor-2.c b/20211202/preprocessor-2.c
new file mode 100644
index 0000000000000000000000000000000000000000..c876b5935fa297b351efb2424d4b374df6c789df
--- /dev/null
+++ b/20211202/preprocessor-2.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+#define VIER 4);
+
+int main (void)
+{
+  printf ("Die Antwort lautet: %d\n", VIER
+  return 0;
+}
diff --git a/20211202/preprocessor-3.c b/20211202/preprocessor-3.c
new file mode 100644
index 0000000000000000000000000000000000000000..17d6f174c8c837ad514ea04a825c45d8b8a816cb
--- /dev/null
+++ b/20211202/preprocessor-3.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+#define ZWEIMAL(X) 2 * X
+
+int main (void)
+{
+  printf ("Die Antwort lautet: %d\n", ZWEIMAL (23));
+  return 0;
+}
diff --git a/20211202/preprocessor-4.c b/20211202/preprocessor-4.c
new file mode 100644
index 0000000000000000000000000000000000000000..2fa584c9e9de7d9aa14152d223cd2f9cb9f7363a
--- /dev/null
+++ b/20211202/preprocessor-4.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+#define SECHS 1 + 5
+#define NEUN 8 + 1
+
+int main (void)
+{
+  printf ("Die Antwort lautet: %d\n", SECHS * NEUN);
+  return 0;
+}
diff --git a/20211202/preprocessor-5.c b/20211202/preprocessor-5.c
new file mode 100644
index 0000000000000000000000000000000000000000..f5bd2e52509346c794fbd051801caf03ff2d26a1
--- /dev/null
+++ b/20211202/preprocessor-5.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+#define SECHS (1 + 5)
+#define NEUN (8 + 1)
+
+int main (void)
+{
+  printf ("Die Antwort lautet: %d\n", SECHS * NEUN);
+  return 0;
+}
diff --git a/20211202/preprocessor-6.c b/20211202/preprocessor-6.c
new file mode 100644
index 0000000000000000000000000000000000000000..e2b5e155366db5d304822c8ec3c2e53e5bfe34d8
--- /dev/null
+++ b/20211202/preprocessor-6.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+#define hello printf ("Hello!\n")
+#define hallo printf ("Hallo!\n")
+
+#define english 1
+
+int main (void)
+{
+  if (english)
+    hello;
+  else
+    hallo;
+  return 0;
+}
diff --git a/20211202/preprocessor-7.c b/20211202/preprocessor-7.c
new file mode 100644
index 0000000000000000000000000000000000000000..673d2a3da8dc0427f6b2729f57e3f4840bd7afde
--- /dev/null
+++ b/20211202/preprocessor-7.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+#define hello(x) printf ("Hello!\n")
+#define hallo(x) printf ("Hallo!\n")
+
+#define english 1
+
+int main (void)
+{
+  if (english)
+    hello ();
+  else
+    hallo ();
+  return 0;
+}
diff --git a/20211202/preprocessor-8.c b/20211202/preprocessor-8.c
new file mode 100644
index 0000000000000000000000000000000000000000..ab6f6599c53a607155e3954d21d353aa37664a8a
--- /dev/null
+++ b/20211202/preprocessor-8.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+#define hello(x) printf ("Hello!\n"); printf ("World!\n");
+#define hallo(x) printf ("Hallo!\n"); printf ("Welt!\n");
+
+#define english 1
+
+int main (void)
+{
+  if (english)
+    hello ();
+  else
+    hallo ();
+  return 0;
+}
diff --git a/20211202/preprocessor-9.c b/20211202/preprocessor-9.c
new file mode 100644
index 0000000000000000000000000000000000000000..5258c1a54ebef882dd7eae3abdeee46eb0cfed09
--- /dev/null
+++ b/20211202/preprocessor-9.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+#define hello(x) { printf ("Hello!\n"); printf ("World!\n"); }
+#define hallo(x) { printf ("Hallo!\n"); printf ("Welt!\n"); }
+
+#define english 1
+
+int main (void)
+{
+  if (english)
+    hello ();
+  else
+    hallo ();
+  return 0;
+}