diff --git a/notebooks/seminar07.ipynb b/notebooks/seminar07.ipynb
index 926000130ae263f22d768761ad48ca464eaf35b5..23f1bb211ff73eacfaa4ae3305788f3bc7ab07e1 100644
--- a/notebooks/seminar07.ipynb
+++ b/notebooks/seminar07.ipynb
@@ -16,13 +16,61 @@
    "execution_count": null,
    "metadata": {},
    "outputs": [],
-   "source": []
+   "source": [
+    "# Quellen: https://docs.python.org/3/howto/sockets.html und \n",
+    "# http://www.binarytides.com/python-socket-server-code-example/\n",
+    "\n",
+    "import socket\n",
+    "\n",
+    "# function for handling connections. This will be used to create threads\n",
+    "def client_thread(conn):\n",
+    "    # sending message to connected client\n",
+    "    conn.send(bytearray('Welcome to the server. Type something and hit enter\\n', \"utf-8\")) #send only takes string\n",
+    "     \n",
+    "    # infinite loop so that function do not terminate and thread do not end.\n",
+    "    while True:\n",
+    "         \n",
+    "        # receiving from client\n",
+    "        data = conn.recv(1024)\n",
+    "        if not data: \n",
+    "            break\n",
+    "        # print on server side\n",
+    "        print(data.decode(\"utf-8\"))\n",
+    "        # echo to client side\n",
+    "        reply = bytearray('OK ... ', \"utf-8\") + data\n",
+    "        conn.sendall(reply)\n",
+    "     \n",
+    "    # came out of loop\n",
+    "    conn.close()\n",
+    "    \n",
+    "# create an INET, STREAMing socket\n",
+    "serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n",
+    "# bind the socket to a public host, and a port\n",
+    "# serversocket.bind((socket.gethostname(), 8080))\n",
+    "# use localhost instead \n",
+    "serversocket.bind((\"localhost\", 8080))\n",
+    "# become a server socket\n",
+    "serversocket.listen(5)\n",
+    "\n",
+    "\n",
+    "while True:\n",
+    "    # accept connections from outside\n",
+    "    (clientsocket, address) = serversocket.accept()\n",
+    "    # now do something with the clientsocket\n",
+    "    # in this case, we'll pretend this is a threaded server\n",
+    "    ct = client_thread(clientsocket)\n",
+    "    ct.run()\n",
+    "\n",
+    "serversocket.close()"
+   ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Und noch viele weitere schöne Beispiele: https://codegolf.stackexchange.com/questions/15860/"
+    "Dieser Code enthält das Grundgerüst, um eine auf TCP basierende Serveranwendung zu programmieren. Wenn Sie den Code starten und sich dann mit Hilfe von Telnet mit der Anwendung verbinden (`telnet localhost 8080`), werden alle Eingaben an Sie zurückgespiegelt (\"echo\") und hier in Jupyter ausgegeben. Das ist eine sehr einfache Testanwendung, die aus Sicherheitsgründen nur von Ihrem Rechner aus erreichbar ist. \n",
+    "\n",
+    "Falls Ihr Rechner keinen Paketfilter (\"Firewall\") laufen hat und Sie die Zeile mit `localhost` auskommentieren und stattdessen die mit `socket.gethostbyname()` aktivieren, dann ist die Anwendung ggf. auch von anderen Rechnern erreichbar und stellt ziemlich sicher eine Sicherheitslücke dar. Gehen Sie also vorsichtig mit dieser Option um. "
    ]
   },
   {
@@ -31,9 +79,9 @@
    "source": [
     "## 7 Iteration\n",
     "\n",
-    "Dieses Kapitel ist eine Ãœbersetzung des [Kapitels 8 \"Iteration\"](http://greenteapress.com/thinkpython2/html/thinkpython2008.html) von  Allen B. Downey. \n",
+    "Dieses Kapitel ist eine Ãœbersetzung des [Kapitels 7 \"Iteration\"](http://greenteapress.com/thinkpython2/html/thinkpython2008.html) von  Allen B. Downey. \n",
     "\n",
-    "Dieses Kapitel handelt von der Iteration - der Möglichkeit, eine Folge von Anweisungen zu wiederholen. Wir haben eine Art der Iteration unter Verwendung der Rekursion schon im [Abschnitt 5.8](seminar05.ipynb#5.8-Rekursion) gesehen und eine andere Art, mit Hilfe der `for`-Schleife in [Abschnitt 4.2](seminar04.ipynb#4.2-Einfache-Wiederholung). In diesem Kapitel lernen wir eine weitere Variante unter Verwendung der `while`-Anweisung kennen. Aber vorher schauen wir uns noch einmal die Zuweisung eines Wertes an eine Variable an. "
+    "Dieses Kapitel handelt von der Iteration - der Möglichkeit, eine Folge von Anweisungen zu wiederholen. Wir haben eine Art der Iteration unter Verwendung der Rekursion schon im [Abschnitt 5.8](seminar05.ipynb#5.8-Rekursion) gesehen und eine andere Art, mit Hilfe der `for`-Schleife, in [Abschnitt 4.2](seminar04.ipynb#4.2-Einfache-Wiederholung). In diesem Kapitel lernen wir eine weitere Variante unter Verwendung der `while`-Anweisung kennen. Aber vorher schauen wir uns noch einmal die Zuweisung eines Wertes an eine Variable an. "
    ]
   },
   {