diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 67616b25df978c43c94bf3aa1ca031546fe3b400..2381ad92d66c37d6f928f35e069e80a694e14e91 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -12,7 +12,7 @@ build:
     - make
     - mkdir -p publish/$SEMESTER
     - cp .htaccess                               publish/$SEMESTER/.htaccess
-    - cp aufgabensammlung/aufgabe_wwwcip.html    publish/$SEMESTER/aufgabe_wwwcip.html
+    - tar czf publish/$SEMESTER/aufgabe_wwwcip.tar.gz	aufgabensammlung/wwwcip
     - cp cheatsheet/cheatsheet.tex               publish/$SEMESTER/cheatsheet.tex
     - cp cheatsheet/cheatsheet.tex               publish/$SEMESTER/tippen_oder_tabben.tex
     - cp cheatsheet/cheatsheet.pdf               publish/$SEMESTER/cheatsheet.pdf
diff --git a/aufgabensammlung/aufgabe_wwwcip.html b/aufgabensammlung/aufgabe_wwwcip.html
deleted file mode 100644
index a2c0572edbc197e5264ce017a6726410ec16c2dc..0000000000000000000000000000000000000000
--- a/aufgabensammlung/aufgabe_wwwcip.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<html>
-    <head>
-        <title>Homepage von $LOGIN</title>
-    </head>
-    <body>
-        <h1>$LOGIN</h1>
-        <p>Hallo,</p>
-        <p>
-        ich studiere seit $JAHR $STUDIENFACH an der
-        <a href="https://www.fau.de">Friedrich-Alexander-Universit&auml;t Erlangen-N&uuml;rnberg</a> und bin derzeit im 1. Semester
-        </p>
-        <p>Dieses Schmuckst&uuml;ck einer Webseite ist Rahmen
-        des <a href="http://fsi.cs.fau.de/linuxkurs">Vorbereitungskurses</a>
-        der <a href="http://fsi.cs.fau.de">FSI Informatik</a> entstanden.</p>
-    </body>
-</html>
diff --git a/aufgabensammlung/wwwcip/.htaccess b/aufgabensammlung/wwwcip/.htaccess
new file mode 100644
index 0000000000000000000000000000000000000000..cf74e375ec4af1740cb06b8447908232d6cf5d76
--- /dev/null
+++ b/aufgabensammlung/wwwcip/.htaccess
@@ -0,0 +1,6 @@
+IndexOptions +FoldersFirst +ScanHTMLTitles +FancyIndexing +IconsAreLinks
+HeaderName header.html
+ReadmeName readme.html
+IndexIgnore header.html readme.html
+
+AddDefaultCharset UTF-8
diff --git a/aufgabensammlung/wwwcip/cip.gif b/aufgabensammlung/wwwcip/cip.gif
new file mode 100644
index 0000000000000000000000000000000000000000..edbe6d84934298acac12e89e4dabd1255abb679b
Binary files /dev/null and b/aufgabensammlung/wwwcip/cip.gif differ
diff --git a/aufgabensammlung/wwwcip/index.html b/aufgabensammlung/wwwcip/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..eda4a369224553040ef7d24d6bd5fcdb4b1c9bdc
--- /dev/null
+++ b/aufgabensammlung/wwwcip/index.html
@@ -0,0 +1,52 @@
+<!-- Siehe https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics -->
+
+<!DOCTYPE html>
+<html lang="de">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <link rel="stylesheet" href="style.css" />
+    <title>Homepage von $NAME</title>
+  </head>
+  <body>
+    <header>
+      <h1>Homepage von $NAME</h1>
+    </header>
+
+    <p>
+      Das hier ist
+      die <abbr title="Computer-Investitions-Programm">CIP</abbr>-Seite
+      von $NAME (IdM Kennung: $USER).  Dieses Webseite wurde erstmals
+      im des <a href="http://fsi.cs.fau.de/linuxkurs">Linuxkurs</a>
+      der <a href="http://fsi.cs.fau.de">FSI Informatik</a> erstellt,
+      am $TODAY.
+    </p>
+
+    <h2>Inhalt</h2>
+
+    <p>
+      <a href="./pub/">Hier</a> kannst du meine öffentlichen Dateien
+      welche mit der Uni zu tun haben finden (Veröffentlichen von
+      Vorlesungsnotizen, Seiten für Tutorien, Sammeln von Links,
+      usw.).  Auf meine <q>versteckten</q> Dateien zuzugreifen,
+      brauchst du einen <a href="./nonpub/s3cr3t.html">Dateinamen</a>.
+    </p>
+
+    <h2>Kommilitonen</h2>
+
+    <p>
+      Hier eine Liste von CIP-Seiten meiner Kommilitonen:
+    </p>
+    <ul>
+      <li><a href="/~be15piel">Max Musterman</a></li>
+      <li><a href="/~kl15chee">Lieschen Müller</a></li>
+      <li><a href="/~se45hell">Hein Janmaat</a></li>
+    </ul>
+
+    <hr/>
+
+    <footer>
+      <a href="https://wwwcip.cs.fau.de/"><img src="cip.gif" alt="CIP Now!" /></a>
+    </footer>
+  </body>
+</html>
diff --git a/aufgabensammlung/wwwcip/nonpub/s3cr3t.html b/aufgabensammlung/wwwcip/nonpub/s3cr3t.html
new file mode 100644
index 0000000000000000000000000000000000000000..de6701015f9e75ae3559639d0873c414475b9716
--- /dev/null
+++ b/aufgabensammlung/wwwcip/nonpub/s3cr3t.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html lang="de">
+<head>
+<meta charset="utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1" />
+<link rel="stylesheet" href="../style.css" />
+<title>Geheime Seite!</title>
+<h1>Geheime Seite!</h1>
+
+<p>
+Auf diese Seite kommt man nur, wenn man den Dateinamen weiß!  Der
+Zugriff auf das Verzeichnis ist <q><a href=".">Forbidden</a></q>.  Der
+Trick hier ist, dass das <code>nonpub</code> Verzeichnis die
+richtigen <a href="https://de.wikipedia.org/wiki/Unix-Dateirechte">Dateirechte</a>
+Vergeben wurden.  In Oktalnotation, bzw. Binär:
+</p>
+
+<pre>           ___________ Benutzerrechte (was du kannst)
+          /    _______ Gruppenrechte (angegeben durch den Gruppenbesitz)
+	  |   /    ___ Rechte für alle sonstigen Benutzer
+	  |   |   /
+	  |   |   |
+	  v   v   v
+(701)₈ = (111 000 001)₂
+	  ^^^ ^^^ ^^^
+	  ||| ||| |||
+	  ||| ||| ||\___ Alle können Dateien beim Namen in dem Verzeichnis Anfragen
+	  ||| ||| |\____ Alle dürfen nicht Anfragen welche Dateien im Verzeichnis liegen
+	  ||| ||| \_____ Alle dürfen nicht schreibend auf Dateien Zugreifen
+	  ||| ||\_______ Die Gruppe darf keine Dateien Abfragen
+	  ||| |\________ Die Gruppe darf keine Dateien Lesen
+	  ||| \_________ Die Gruppe darf keine Dateien Schreiben
+	  ||\___________ Du kannst alle Dateien im Verzeichnis aufzählen
+	  |\____________ Du kannst alle Dateien lesen
+	  \_____________ Du kannst alle Dateien schreiben
+</pre>
+
+<p>
+Der Besitzer dieses Verzeichnisses kann hier also Dateien hochladen,
+welche nicht <em>unbedingt</em> öffentlich sein sollten
+(bspw. Seminararbeiten, Bachelor und Master-Arbeiten welche man zum
+Probelesen hochgeladen hat).
+</p>
diff --git a/aufgabensammlung/wwwcip/pub/fib.py b/aufgabensammlung/wwwcip/pub/fib.py
new file mode 100644
index 0000000000000000000000000000000000000000..6185612166e3f0a602abd6306a83c3e9f8274d70
--- /dev/null
+++ b/aufgabensammlung/wwwcip/pub/fib.py
@@ -0,0 +1,52 @@
+# Ein paar Fibonacci Funktionen in Python
+
+
+def fib_rec(n):
+    assert n > 0
+    if n == 1 or n == 2:
+        return 1
+    return fib_rec(n-1) + fib_rec(n-2)
+
+
+def fib_tail_rec(n):
+    assert n > 0
+    def helper(n, acc, prev):
+        if n < 1:
+            return acc
+        return helper(n-1, prev + acc, acc)
+    return helper(n, 0, 1)
+
+
+def fib_iter(n):
+    assert n > 0
+    steps = [1,1] + [0] * (n-2)
+    for i in range(2,n):
+        steps[i] = steps[i-1] + steps[i-2]
+    return steps[n-1]
+
+
+import numpy as np
+def fib_matrix(n):
+    assert n > 0
+    return np.linalg.matrix_power(np.matrix([[1,1],[1,0]]), n-1)[0,0]
+
+
+if __name__ == '__main__':
+    # https://en.wikipedia.org/wiki/Fibonacci_sequence#Definition
+    expected = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]
+
+    def test(fn):
+        assert all(n == fn(i+1) for (i, n) in enumerate(expected))
+
+        try:
+            fn(-1)
+            assert False, "Definiert für negative Werte"
+        except AssertionError:
+            pass
+
+    test(fib_rec)
+    test(fib_tail_rec)
+    test(fib_iter)
+    test(fib_matrix)
+
+    print(f"Passt alles für n < {len(expected)}!")
diff --git a/aufgabensammlung/wwwcip/pub/quotes b/aufgabensammlung/wwwcip/pub/quotes
new file mode 100644
index 0000000000000000000000000000000000000000..fc7d927f7a78f9b600db6038bc3b03e3a7b05a0d
--- /dev/null
+++ b/aufgabensammlung/wwwcip/pub/quotes
@@ -0,0 +1,15 @@
+Computer Science is no more about computers than astronomy is about
+telescopes.
+
+	-- Edsger W. Dijkstra
+%
+A language that doesn't affect the way you think about programming is
+not worth knowing.
+
+	-- Alan J. Perlis
+%
+Everyone knows that debugging is twice as hard as writing a program in
+the first place.  So if you are as clever as you can be when you write
+it, how will you ever debug it?
+
+	-- Brian W. Kernighan
diff --git a/aufgabensammlung/wwwcip/setup.sh b/aufgabensammlung/wwwcip/setup.sh
new file mode 100755
index 0000000000000000000000000000000000000000..019690292abcd72870d9d5f773e40d76aa822ab9
--- /dev/null
+++ b/aufgabensammlung/wwwcip/setup.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+set -e
+
+# Plausibilitätskontrolle: Mache nichts wenn ~/.www existiert
+if [ -e ~/.www ]
+then
+    echo "Es scheint bereits ein .www Verzeichnis zu existieren..." 1>&2
+    setfacl -m u:www:rx ~ ~/.www
+    exit 1
+fi
+
+# Erstelle das Verzeichnis und mache es dem Webserver sichtbar
+mkdir ~/.www/
+setfacl -m u:www:rx ~ ~/.www
+
+# Ersetze "Variablen" in index.html
+NAME=$(getent passwd "$USER" | awk -F: '{ sub(/,.*/, ""); print $5 }')
+TODAY=$(date +"%F")
+sed -i "s!\$NAME!$NAME!;s!\$USER!$USER!;s!\$TODAY!$TODAY!" index.html
+
+# Kopiere die restlichen Dateien aus dem Template in ~/.www/
+find . -maxdepth 1		      \
+       -not -name '.' -not -name '..' \
+       -not -name "$(basename "$0")"  \
+       -print0          | \
+    tee ~/out | xargs -0 -I {} cp -r {} ~/.www/
+chmod 701 ~/.www/nonpub/
+
+# Wir enden damit, ein paar Hinweise anzuzeigen
+cat <<EOF
+Deine Seite wurde erstellt, und kann unter
+
+  https://wwwcip.cs.fau.de/~$USER/
+
+eingesehen werden!
+
+Es wurde eine Beispielseite erstellt, welche man noch weiter anpassen
+kann.  Für weitere Informationen zum CIP und dem WWW allgemein siehe:
+
+- https://wwwcip.cs.fau.de/documentation/services.de.html
+- https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/
+- https://cyber.dabamos.de/mirrors/htmleinf/
+- https://httpd.apache.org/docs/2.4/howto/htaccess.html
+ __________________________________________________________________
+/                                                                  \\
+| KOMMERZIELLE NUTZUNG IN JEGLICHER HINSICHT, Z.B. WERBUNG FÜR DIE |
+| EIGENE FIRMA, ANPRIESEN VON KOMMERZIELLER SOFTWARE USW. IST      |
+| UNTERSAGT!                                                       |
+\__________________________________________________________________/
+EOF
diff --git a/aufgabensammlung/wwwcip/style.css b/aufgabensammlung/wwwcip/style.css
new file mode 100644
index 0000000000000000000000000000000000000000..1250da01b0edffe4466f0a97239f5cda40128093
--- /dev/null
+++ b/aufgabensammlung/wwwcip/style.css
@@ -0,0 +1,22 @@
+/* Siehe https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/CSS_basics */
+
+body {				/* Zentriere die Seite und lass ein wenig Platz */
+    max-width: 80%;
+    margin: 0.5em auto;
+}
+
+h1:first-of-type {		/* Setze die Überschrift mittig */
+    text-align: center;
+}
+
+footer {			/* Die Fußzeile soll rechtsbündig sein */
+    text-align: right;
+}
+
+/* For mobile devices: */
+@media (max-width: 60em) {
+    body {			/* Spare Platz auf kleinen Bildschirm */
+	max-width: unset;
+	margin: 0.5em;
+    }
+}