From a1475eb0d2b739d2e53ba51353bf170fc753bd57 Mon Sep 17 00:00:00 2001
From: rode <rode@ibr.cs.tu-bs.de>
Date: Thu, 7 Oct 2021 11:52:29 +0200
Subject: [PATCH] =?UTF-8?q?Zeilenumbr=C3=BCche=20korrigiert?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 datasets/AuD-Inhalt2.xlsx |  Bin 36276 -> 35980 bytes
 datasets/aud1v3.json      | 1582 ++++++++++++++++++-------------------
 datasets/space.json       |   94 +--
 datasets/xlsxTOjson.ipynb |   20 +-
 4 files changed, 851 insertions(+), 845 deletions(-)

diff --git a/datasets/AuD-Inhalt2.xlsx b/datasets/AuD-Inhalt2.xlsx
index 88ed8af2497b9cc61d7e2338019ed9f1e9f24e09..eb43c7b8be4a57b3c217022c32dac1fba4dd04d5 100644
GIT binary patch
delta 29240
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

delta 29541
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

diff --git a/datasets/aud1v3.json b/datasets/aud1v3.json
index 042192c..9c7f868 100644
--- a/datasets/aud1v3.json
+++ b/datasets/aud1v3.json
@@ -1,1362 +1,1362 @@
 {
-  'nodes': [
+  "nodes": [
     {
-      'id': 1,
-      'name': 'Begrüßung und Organisatorisches',
-      'description': 'Eine Einführung in die Algorithmen und Datenstrukturen\n+ Links zu Video und Folien',
-      'type': 'Vorlesung'
+      "id": 1,
+      "name": "Begrüßung und Organisatorisches",
+      "description": "Eine Einführung in die Algorithmen und Datenstrukturen",
+      "type": "Vorlesung"
     },
     {
-      'id': 2,
-      'name': 'Rundreise Problem',
-      'description': 'Gegeben: Ein Graph G = (V, E) mit Kantenlängen we, Gesucht: Eine kürzeste Rundreise, welche alle Knoten im Graphen einmal besucht und im Startknoten wieder endet.',
-      'type': 'Beispiel'
+      "id": 2,
+      "name": "Rundreise Problem",
+      "description": "Gegeben: Ein Graph G = (V, E) mit Kantenlängen we, Gesucht: Eine kürzeste Rundreise, welche alle Knoten im Graphen einmal besucht und im Startknoten wieder endet.",
+      "type": "Beispiel"
     },
     {
-      'id': 3,
-      'name': 'Puzzle',
-      'description': 'Jeder hat schon einmal ein Puzzle gelöst, doch wie sieht das aus algorithmischer Sicht aus?',
-      'type': 'Beispiel'
+      "id": 3,
+      "name": "Puzzle",
+      "description": "Jeder hat schon einmal ein Puzzle gelöst, doch wie sieht das aus algorithmischer Sicht aus?",
+      "type": "Beispiel"
     },
     {
-      'id': 4,
-      'name': 'Algorithmus-Definition',
-      'description': "Zitat: 'Ein Algorithmus ist eine aus endlich vielen Schritten bestehende eindeutige Handlungsvorschrift zur Lösung eines Problems oder einer Klasse von Problemen.'-Wikipedia. Dabei wird als Input eine Problembeschreibung gegeben und durch Anwendung des Algorithmus eine fertige Lösung des Problems ermittelt. Oft spielt die Laufzeit des Algorithmus eine große Rolle. Sie beschreibt, wie viele einzelne Schritte nötig sind um das Problem zu lösen, in Abhängigkeit von der Größe des Problems.",
-      'type': 'Definition'
+      "id": 4,
+      "name": "Algorithmus-Definition",
+      "description": "Zitat: 'Ein Algorithmus ist eine aus endlich vielen Schritten bestehende eindeutige Handlungsvorschrift zur Lösung eines Problems oder einer Klasse von Problemen.'-Wikipedia. Dabei wird als Input eine Problembeschreibung gegeben und durch Anwendung des Algorithmus eine fertige Lösung des Problems ermittelt. Oft spielt die Laufzeit des Algorithmus eine große Rolle. Sie beschreibt, wie viele einzelne Schritte nötig sind um das Problem zu lösen, in Abhängigkeit von der Größe des Problems.",
+      "type": "Definition"
     },
     {
-      'id': 5,
-      'name': 'Kofferpacken',
-      'description': 'Kann ich alle meine Gepäckstücke auf zwei gleich große Koffer aufteilen? Gegeben: Eine Menge von n Objekten, jedes mit\neiner Größe li; Gesamtgröße ∑ li = 2K\nGesucht: Eine Verteilung auf zwei Koffer der Größe K',
-      'type': 'Beispiel'
+      "id": 5,
+      "name": "Kofferpacken",
+      "description": "Kann ich alle meine Gepäckstücke auf zwei gleich große Koffer aufteilen? <br>Gegeben: Eine Menge von n Objekten, jedes mit einer Größe li; <br>Gesamtgröße ∑ li = 2K<br>Gesucht: Eine Verteilung auf zwei Koffer der Größe K",
+      "type": "Beispiel"
     },
     {
-      'id': 6,
-      'name': 'P und NP',
-      'description': 'Die Klassen P und NP teilen algorithmische Probleme in zwei Kategorien auf. Die eine, bei der man mithilfe eines Algorithmus eine Lösung Pfinden kann (P) und eine zweite, bei der bisher nur das NachPrüfen einer existierenden Lösung gelingt (NP). Wenn es allerdings keine Lösung gibt, so lässt sich das bei Problemen der Klasse NP nur schlecht beweisen.',
-      'type': 'Definition'
+      "id": 6,
+      "name": "P und NP",
+      "description": "Die Klassen P und NP teilen algorithmische Probleme in zwei Kategorien auf. Die eine, bei der man mithilfe eines Algorithmus eine Lösung Pfinden kann (P) und eine zweite, bei der bisher nur das NachPrüfen einer existierenden Lösung gelingt (NP). Wenn es allerdings keine Lösung gibt, so lässt sich das bei Problemen der Klasse NP nur schlecht beweisen.",
+      "type": "Definition"
     },
     {
-      'id': 7,
-      'name': 'Einführung des Algorithmusbegriffs',
-      'description': "In dieser Vorlesung wird der Begriff 'Algorithmus' definiert und erklärt.\n+ Links zu Video und Folien",
-      'type': 'Vorlesung'
+      "id": 7,
+      "name": "Einführung des Algorithmusbegriffs",
+      "description": "In dieser Vorlesung wird der Begriff 'Algorithmus' definiert und erklärt.",
+      "type": "Vorlesung"
     },
     {
-      'id': 8,
-      'name': 'Datenstrukturen',
-      'description': 'Eine Datenstruktur erlaubt es, die für eine Aufgabe notwendigen Informationen geeignet zu repräsentieren und den Zugriff und die Verwaltung während der Bearbeitung in effizienter Weise zu ermöglichen.',
-      'type': 'Definition'
+      "id": 8,
+      "name": "Datenstrukturen",
+      "description": "Eine Datenstruktur erlaubt es, die für eine Aufgabe notwendigen Informationen geeignet zu repräsentieren und den Zugriff und die Verwaltung während der Bearbeitung in effizienter Weise zu ermöglichen.",
+      "type": "Definition"
     },
     {
-      'id': 21,
-      'name': 'Organisation und Pseudocode',
-      'description': 'In dieser Ãœbung haben wir noch einmal organisatorische Dinge besprochen und uns mit dem Thema Pseudocode auseinandergesetzt.\n+ Links zu Video und Folien',
-      'type': 'Ãœbung'
+      "id": 21,
+      "name": "Organisation und Pseudocode",
+      "description": "In dieser Ãœbung haben wir noch einmal organisatorische Dinge besprochen und uns mit dem Thema Pseudocode auseinandergesetzt.",
+      "type": "Ãœbung"
     },
     {
-      'id': 9,
-      'name': 'Pseudocode',
-      'description': 'Pseudocode ist eine Art Algorithmen einigermaßen einheitlich zu notieren. Dabei werden zwar Schlüsselwörter genutzt um eine gewisse Einheitlichkeit zu bieten und gleichzeitig die Logik zu beschreiben, allerdings geht es noch nicht darum einen compilierbaren Code mit korrekter Syntax zu schreiben.\n+ Link zu Pseudocodeblatt, Übung 1',
-      'type': 'Definition'
+      "id": 9,
+      "name": "Pseudocode",
+      "description": "Pseudocode ist eine Art Algorithmen einigermaßen einheitlich zu notieren. Dabei werden zwar Schlüsselwörter genutzt um eine gewisse Einheitlichkeit zu bieten und gleichzeitig die Logik zu beschreiben, allerdings geht es noch nicht darum einen compilierbaren Code mit korrekter Syntax zu schreiben.",
+      "type": "Definition"
     },
     {
-      'id': 10,
-      'name': 'Einleitung in die Graphen',
-      'description': 'Eine Einleitung in die Welt der Graphen am wohl bekanntesten Beispiel, dem Haus des Nikolaus.\n+ Links zu Video und Folien',
-      'type': 'Vorlesung'
+      "id": 10,
+      "name": "Einleitung in die Graphen",
+      "description": "Eine Einleitung in die Welt der Graphen am wohl bekanntesten Beispiel, dem Haus des Nikolaus.",
+      "type": "Vorlesung"
     },
     {
-      'id': 11,
-      'name': 'Haus des Nikolaus',
-      'description': 'Jeder kennt das Haus vom Nikolaus, doch wie wird es gemalt? Wo setzt man den Stift an und wo wieder ab?',
-      'type': 'Beispiel'
+      "id": 11,
+      "name": "Haus des Nikolaus",
+      "description": "Jeder kennt das Haus vom Nikolaus, doch wie wird es gemalt? Wo setzt man den Stift an und wo wieder ab?",
+      "type": "Beispiel"
     },
     {
-      'id': 12,
-      'name': 'Eulertouren',
-      'description': 'Ein Eulerweg ist ein Weg in einem Graphen, welcher alle Kanten nutzt. Eine Eulertour kehrt darüber hinaus auch zum Startknoten zurück.',
-      'type': 'Definition'
+      "id": 12,
+      "name": "Eulertouren",
+      "description": "Ein Eulerweg ist ein Weg in einem Graphen, welcher alle Kanten nutzt. Eine Eulertour kehrt darüber hinaus auch zum Startknoten zurück.",
+      "type": "Definition"
     },
     {
-      'id': 13,
-      'name': 'Graphenbegriffe',
-      'description': 'Ein Graph besteht aus Knoten und Kanten das sollte inzwischen jeder wissen, doch was parallele Kanten, Schleifen, (geschlossene) Wege, Pfade, Kreise, Eulerwege/-touren, sowie Hamiltonpfade und -kreise sind wird in dieser Vorlesung noch einmal genau definiert.\n+ Links zu Video und Folien',
-      'type': 'Vorlesung'
+      "id": 13,
+      "name": "Graphenbegriffe",
+      "description": "Ein Graph besteht aus Knoten und Kanten das sollte inzwischen jeder wissen, doch was parallele Kanten, Schleifen, (geschlossene) Wege, Pfade, Kreise, Eulerwege/-touren, sowie Hamiltonpfade und -kreise sind wird in dieser Vorlesung noch einmal genau definiert.",
+      "type": "Vorlesung"
     },
     {
-      'id': 14,
-      'name': 'Graph',
-      'description': 'Über Graphen haben wir bereits viel gesprochen, doch was ein Graph genau ist und wie man ihn definiert erfährst du hier.',
-      'type': 'Definition'
+      "id": 14,
+      "name": "Graph",
+      "description": "Über Graphen haben wir bereits viel gesprochen, doch was ein Graph genau ist und wie man ihn definiert erfährst du hier.",
+      "type": "Definition"
     },
     {
-      'id': 15,
-      'name': 'Wege in Graphen',
-      'description': 'Eine Kantenfolge W in einem Graphen G heißt Weg, wenn sich keine Kante darin wiederholt und geschlossener Weg (Tour), wenn man am Ende wieder am Startknoten ankommt. Wiederholt sich kein Knoten spricht man von einem Pfad. Ein Kreis ist ein geschlossener Pfad. Bei einem Eulerweg/ einer Eulertour werden alle Kanten des Graphen genutzt. Ein Hamiltonpfad/kreis nutzt hingegen alle Knoten.',
-      'type': 'Definition'
+      "id": 15,
+      "name": "Wege in Graphen",
+      "description": "Eine Kantenfolge W in einem Graphen G heißt Weg, wenn sich keine Kante darin wiederholt und geschlossener Weg (Tour), wenn man am Ende wieder am Startknoten ankommt. Wiederholt sich kein Knoten spricht man von einem Pfad. Ein Kreis ist ein geschlossener Pfad. Bei einem Eulerweg/ einer Eulertour werden alle Kanten des Graphen genutzt. Ein Hamiltonpfad/kreis nutzt hingegen alle Knoten.",
+      "type": "Definition"
     },
     {
-      'id': 16,
-      'name': 'Beweistechniken Teil 1',
-      'description': 'In der Mathematik und auch in der Algorithmik spielen Beweise immer wieder eine große Rolle. Es geht darum Aussagen zu belegen, zu widerlegen oder auf bestimmte Elemente anzuwenden. Dazu gibt es verschiedene Beweistechniken, welche ihr hier finden könnt:\n+ Link zu Beweisblatt, Übung 2',
-      'type': 'Ãœbung'
+      "id": 16,
+      "name": "Beweistechniken Teil 1",
+      "description": "In der Mathematik und auch in der Algorithmik spielen Beweise immer wieder eine große Rolle. Es geht darum Aussagen zu belegen, zu widerlegen oder auf bestimmte Elemente anzuwenden. Dazu gibt es verschiedene Beweistechniken, welche ihr hier finden könnt:",
+      "type": "Ãœbung"
     },
     {
-      'id': 17,
-      'name': 'Bedingungen für Eulertouren',
-      'description': 'In dieser Vorlesung werden notwendige Bedingungen für Eulertouren erleutert. Zusätzlich wird das Kapitel 2 noch einmal zusammengefasst und es werden Algorithmen eingeführt um die uns bisher bekannten Probleme zu lösen.\n+ Links zu Video und Folien',
-      'type': 'Vorlesung'
+      "id": 17,
+      "name": "Bedingungen für Eulertouren",
+      "description": "In dieser Vorlesung werden notwendige Bedingungen für Eulertouren erleutert. Zusätzlich wird das Kapitel 2 noch einmal zusammengefasst und es werden Algorithmen eingeführt um die uns bisher bekannten Probleme zu lösen.",
+      "type": "Vorlesung"
     },
     {
-      'id': 18,
-      'name': 'Algorithmus Wegfindung',
-      'description': 'Dieser Algorithmus (2.7) erhält als Input einen Graphen G mit höchstens zwei ungeraden Knoten und liefert als Output einen Weg in G',
-      'type': 'Algorithmus'
+      "id": 18,
+      "name": "Algorithmus Wegfindung",
+      "description": "Dieser Algorithmus (2.7) erhält als Input einen Graphen G mit höchstens zwei ungeraden Knoten und liefert als Output einen Weg in G",
+      "type": "Algorithmus"
     },
     {
-      'id': 19,
-      'name': 'Algorithmus von Hierholzer',
-      'description': 'Dieser Algorithmus (2.8) erhält als Input einen zusammenhängenden Graphen G mit höchstens zwei ungeraden Knoten und liefert als Output einen Eulerweg, bzw. eine Eulertour in G. Dazu wird auch Algorithmus 2.7 zum Finden von Wegen in G verwendet.',
-      'type': 'Algorithmus'
+      "id": 19,
+      "name": "Algorithmus von Hierholzer",
+      "description": "Dieser Algorithmus (2.8) erhält als Input einen zusammenhängenden Graphen G mit höchstens zwei ungeraden Knoten und liefert als Output einen Eulerweg, bzw. eine Eulertour in G. Dazu wird auch Algorithmus 2.7 zum Finden von Wegen in G verwendet.",
+      "type": "Algorithmus"
     },
     {
-      'id': 20,
-      'name': 'Algorithmus von Fleury',
-      'description': 'Dieser Algorithmus(2.13) erhält als Input einen Graphen G mit höchstens 2 ungeraden Knoten und liefert als Output einen Weg in G. Der Algorithmus hat als Grundlage Algorithmus 2.7 zum Finden von Wegen. Auch lässt sich zeigen, dass man mit diesem Algorithmus eine Eulertour/einen Eulerweg finden kann',
-      'type': 'Algorithmus'
+      "id": 20,
+      "name": "Algorithmus von Fleury",
+      "description": "Dieser Algorithmus(2.13) erhält als Input einen Graphen G mit höchstens 2 ungeraden Knoten und liefert als Output einen Weg in G. Der Algorithmus hat als Grundlage Algorithmus 2.7 zum Finden von Wegen. Auch lässt sich zeigen, dass man mit diesem Algorithmus eine Eulertour/einen Eulerweg finden kann.",
+      "type": "Algorithmus"
     },
     {
-      'id': 22,
-      'name': 'Anwendung von Graphen',
-      'description': 'In dieser Vorlesung geht es um den Einsatzzweck von Graphen und es wird am Beispiel der Erdös- und der Kevin Bacon Zahl gezeigt, welche Zusammenhänge dargestellt werden können.\n+ Links zu Video und Folien',
-      'type': 'Vorlesung'
+      "id": 22,
+      "name": "Anwendung von Graphen",
+      "description": "In dieser Vorlesung geht es um den Einsatzzweck von Graphen und es wird am Beispiel der Erdös- und der Kevin Bacon Zahl gezeigt, welche Zusammenhänge dargestellt werden können.",
+      "type": "Vorlesung"
     },
     {
-      'id': 23,
-      'name': 'Beweistechniken Teil 2',
-      'description': "In dieser Übung geht es um die Beweistechnik der vollständigen Induktion. Diese ist die wohl meist benutzte Beweistechnik in der Algorithmik. Auch werden Anwendungsbeispiele wie z.B. die Gauß'sche Summenformel oder der Zusammenhang in Graphen  erläutert.\n+ Links zu Video und Folien/Notizen",
-      'type': 'Ãœbung'
+      "id": 23,
+      "name": "Beweistechniken Teil 2",
+      "description": "In dieser Übung geht es um die Beweistechnik der vollständigen Induktion. Diese ist die wohl meist benutzte Beweistechnik in der Algorithmik. Auch werden Anwendungsbeispiele wie z.B. die Gauß'sche Summenformel oder der Zusammenhang in Graphen  erläutert.",
+      "type": "Ãœbung"
     },
     {
-      'id': 24,
-      'name': 'Graphenscan',
-      'description': 'In dieser Vorlesung wird der Graphenscanalgorithmus vorgestellt um Zusammenhangskomponenten in Graphen zu finden.\n+ Links zu Video und Folien/Notizen/Beweis',
-      'type': 'Vorlesung'
+      "id": 24,
+      "name": "Graphenscan",
+      "description": "In dieser Vorlesung wird der Graphenscanalgorithmus vorgestellt um Zusammenhangskomponenten in Graphen zu finden.",
+      "type": "Vorlesung"
     },
     {
-      'id': 25,
-      'name': 'Algorithmus Graphenscan',
-      'description': 'Dieser Algorithmus (3.7) erhählt als Input einen Graphen G = (V,E) und einen Knoten s darin und liefert als Output eine Knotenmenge Y aus V, die von s aus erreichbar ist, sowie eine Kantenmenge T aus E, welche die Erreichbarkeit sicherstellt',
-      'type': 'Algorithmus'
+      "id": 25,
+      "name": "Algorithmus Graphenscan",
+      "description": "Dieser Algorithmus (3.7) erhählt als Input einen Graphen G = (V,E) und einen Knoten s darin und liefert als Output eine Knotenmenge Y aus V, die von s aus erreichbar ist, sowie eine Kantenmenge T aus E, welche die Erreichbarkeit sicherstellt",
+      "type": "Algorithmus"
     },
     {
-      'id': 26,
-      'name': 'Datenstrukturen Teil 1',
-      'description': 'In dieser Vorlesung werden die Datenstrukturen Warteschlange (First In - First Out) und Stapel (Last In - First Out) vorgestellt. Außerdem geht es um ihre Rolle für Algorithmen und wie man sie implementieren kann. Das ganze wird am Beispiel des Graphscan Algorithmus gezeigt und somit werden auch Breiten- und Tiefensuche eingeführt.\n+ Links zu Video und Folien/Beispiel',
-      'type': 'Vorlesung'
+      "id": 26,
+      "name": "Datenstrukturen Teil 1",
+      "description": "In dieser Vorlesung werden die Datenstrukturen Warteschlange (First In - First Out) und Stapel (Last In - First Out) vorgestellt. Außerdem geht es um ihre Rolle für Algorithmen und wie man sie implementieren kann. Das ganze wird am Beispiel des Graphscan Algorithmus gezeigt und somit werden auch Breiten- und Tiefensuche eingeführt.",
+      "type": "Vorlesung"
     },
     {
-      'id': 27,
-      'name': 'Warteschlange',
-      'description': "Eine Warteschlange ist eine Datenstruktur, welche nach dem Prinzip 'First In - First Out' arbeitet. Man findet sie auch im alltäglichen Leben oft wieder, wenn man sich beispielsweise an der Kasse anstellen muss. Der Kunde der zuerst da war, wir auch zuerst bedient.",
-      'type': 'Definition'
+      "id": 27,
+      "name": "Warteschlange",
+      "description": "Eine Warteschlange ist eine Datenstruktur, welche nach dem Prinzip 'First In - First Out' arbeitet. Man findet sie auch im alltäglichen Leben oft wieder, wenn man sich beispielsweise an der Kasse anstellen muss. Der Kunde der zuerst da war, wir auch zuerst bedient.",
+      "type": "Definition"
     },
     {
-      'id': 28,
-      'name': 'Stapel',
-      'description': "Ein Stapel ist eine Datenstruktur, welche nach dem Prinzip 'Last In - First Out' arbeitet. Im alltäglichen Leben findet man diese Form der Datenstruktur beim Geschirr abwaschen, man stapelt die Teller und der Teller der zuletzt dreckig wurde wird als erstes gereinigt, da man die Teller von oben herunter nimmt.",
-      'type': 'Definition'
+      "id": 28,
+      "name": "Stapel",
+      "description": "Ein Stapel ist eine Datenstruktur, welche nach dem Prinzip 'Last In - First Out' arbeitet. Im alltäglichen Leben findet man diese Form der Datenstruktur beim Geschirr abwaschen, man stapelt die Teller und der Teller der zuletzt dreckig wurde wird als erstes gereinigt, da man die Teller von oben herunter nimmt.",
+      "type": "Definition"
     },
     {
-      'id': 29,
-      'name': 'Breitensuche',
-      'description': 'Die Breitensuche ist im Prinzip der Graphscan Algorithmus, ausgeführt mithilfe einer Warteschlange als Datenstruktur. Sie breitet sich aus wie eine Welle.',
-      'type': 'Algorithmus'
+      "id": 29,
+      "name": "Breitensuche",
+      "description": "Die Breitensuche ist im Prinzip der Graphscan Algorithmus, ausgeführt mithilfe einer Warteschlange als Datenstruktur. Sie breitet sich aus wie eine Welle.",
+      "type": "Algorithmus"
     },
     {
-      'id': 30,
-      'name': 'Tiefensuche',
-      'description': 'Die Breitensuche ist im Prinzip der Graphscan Algorithmus, ausgeführt mithilfe eines Stapels als Datenstruktur. Dabei werden eher einzelne Pfade gelaufen.',
-      'type': 'Algorithmus'
+      "id": 30,
+      "name": "Tiefensuche",
+      "description": "Die Breitensuche ist im Prinzip der Graphscan Algorithmus, ausgeführt mithilfe eines Stapels als Datenstruktur. Dabei werden eher einzelne Pfade gelaufen.",
+      "type": "Algorithmus"
     },
     {
-      'id': 31,
-      'name': 'Datenstrukturen Teil 2',
-      'description': 'In dieser Vorlesung geht es einerseits um die Anwendung der Breitensuche, andererseits werden noch 2 weitere Datenstrukturen eingeführt: Die Inzidenz/-Adjazenzmatrix, sowie die Kantenliste\n+ Links zu Video und Folien/Notizen',
-      'type': 'Vorlesung'
+      "id": 31,
+      "name": "Datenstrukturen Teil 2",
+      "description": "In dieser Vorlesung geht es einerseits um die Anwendung der Breitensuche, andererseits werden noch 2 weitere Datenstrukturen eingeführt: Die Inzidenz/-Adjazenzmatrix, sowie die Kantenliste.",
+      "type": "Vorlesung"
     },
     {
-      'id': 32,
-      'name': 'Inzidenz/-Adjazenzmatrix',
-      'description': 'In einer Inzidenzmatrix wird mithilfe von 1en und 0en dargestellt, welche Knoten mit welchen Kanten inzident (zusammentreffend) sind. Bei einer Adjazenzmatrix wird dargestellt, welche Knoten adjazent (durch eine Kante verbunden) sind.',
-      'type': 'Definition'
+      "id": 32,
+      "name": "Inzidenz/-Adjazenzmatrix",
+      "description": "In einer Inzidenzmatrix wird mithilfe von 1en und 0en dargestellt, welche Knoten mit welchen Kanten inzident (zusammentreffend) sind. Bei einer Adjazenzmatrix wird dargestellt, welche Knoten adjazent (durch eine Kante verbunden) sind.",
+      "type": "Definition"
     },
     {
-      'id': 33,
-      'name': 'Kanten-/Adjazenzliste',
-      'description': 'Eine Kantenliste ist eine Liste bestehend aus einträgen der Form {vx, vy}, welche bedeuten, dass eine Kante zwischen vx und vy im Graphen existiert.',
-      'type': 'Definition'
+      "id": 33,
+      "name": "Kanten-/Adjazenzliste",
+      "description": "Eine Kantenliste ist eine Liste bestehend aus einträgen der Form {vx, vy}, welche bedeuten, dass eine Kante zwischen vx und vy im Graphen existiert.",
+      "type": "Definition"
     },
     {
-      'id': 34,
-      'name': 'Wachstum/O-Notation',
-      'description': 'In dieser Vorlesung wird noch einmal mit den Adjazenz- und Kantenlisten abgeschlossen. Außerdem schauen wir uns einmal das Wachstum von Funktionen an und definieren und die O-Notation um damit zu arbeiten.\n+ Links zu Video und Folien/Notizen',
-      'type': 'Vorlesung'
+      "id": 34,
+      "name": "Wachstum/O-Notation",
+      "description": "In dieser Vorlesung wird noch einmal mit den Adjazenz- und Kantenlisten abgeschlossen. Außerdem schauen wir uns einmal das Wachstum von Funktionen an und definieren und die O-Notation um damit zu arbeiten.",
+      "type": "Vorlesung"
     },
     {
-      'id': 35,
-      'name': 'O-Notation',
-      'description': 'Die O-Notation wird genutzt um das Wachstum von Funktionen abzuschätzen. Damit können Größenordnungen und Wachstumsverhalten beschrieben werden.',
-      'type': 'Definition'
+      "id": 35,
+      "name": "O-Notation",
+      "description": "Die O-Notation wird genutzt um das Wachstum von Funktionen abzuschätzen. Damit können Größenordnungen und Wachstumsverhalten beschrieben werden.",
+      "type": "Definition"
     },
     {
-      'id': 36,
-      'name': 'Graphscan Ãœbung',
-      'description': 'Simple Anwengung des Graphscan Algorithmus, einmal als Breiten- und als Tiefensuche. Wann welcher Algorithmus besser geeignet ist wird in dieser Übung erklärt.',
-      'type': 'Ãœbung'
+      "id": 36,
+      "name": "Graphscan Ãœbung",
+      "description": "Simple Anwengung des Graphscan Algorithmus, einmal als Breiten- und als Tiefensuche. Wann welcher Algorithmus besser geeignet ist wird in dieser Übung erklärt.",
+      "type": "Ãœbung"
     },
     {
-      'id': 37,
-      'name': 'Wachstum',
-      'description': 'Die O-Notation wird genutzt um das Wachstum von Funktionen abzuschätzen. In dieser Übung werden Zusammenhänge zwischen der Größe des Inputs und dem Wachstum, sowie Relationen zwischen Laufzeitklassen näher beleuchtet. Auch wird die O-Notation an verschiedenen Beispielen erklärt.',
-      'type': 'Ãœbung'
+      "id": 37,
+      "name": "Wachstum",
+      "description": "Die O-Notation wird genutzt um das Wachstum von Funktionen abzuschätzen. In dieser Übung werden Zusammenhänge zwischen der Größe des Inputs und dem Wachstum, sowie Relationen zwischen Laufzeitklassen näher beleuchtet. Auch wird die O-Notation an verschiedenen Beispielen erklärt.",
+      "type": "Ãœbung"
     },
     {
-      'id': 38,
-      'name': 'Wiederholung oder\nSuche in Graphen Zusammenfassung',
-      'description': "Noch einmal ein Rückblick auf alles, was bisher in 'Kapitel 3: Suche in Graphen' passiert ist. \n+ Links zu Video und Folien",
-      'type': 'Vorlesung'
+      "id": 38,
+      "name": "Wiederholung: Suche in Graphen",
+      "description": "Noch einmal ein Rückblick auf alles, was bisher in 'Kapitel 3: Suche in Graphen' passiert ist. ",
+      "type": "Vorlesung"
     },
     {
-      'id': 39,
-      'name': 'Eigenschaften von DFS und BFS',
-      'description': 'In dieser Vorlesung betrachten wir die Breiten- und Tiefensuche im Hinblick auf ihre Laufzeit. Dabei wird anschaulich, wie die Algorithmen arbeiten, wann man sie am besten nutzen sollte und wie man Laufzeiten beweisen kann.\n+ Links zu Video und Folien/Notizen',
-      'type': 'Vorlesung'
+      "id": 39,
+      "name": "Eigenschaften von DFS und BFS",
+      "description": "In dieser Vorlesung betrachten wir die Breiten- und Tiefensuche im Hinblick auf ihre Laufzeit. Dabei wird anschaulich, wie die Algorithmen arbeiten, wann man sie am besten nutzen sollte und wie man Laufzeiten beweisen kann.",
+      "type": "Vorlesung"
     },
     {
-      'id': 40,
-      'name': 'Induktionsbeweise Bsp.',
-      'description': 'Einige Beispiele, bei denen der Induktionsbeweis auch in der Graphentheorie zum Einsatz kommt. ',
-      'type': 'Beispiel'
+      "id": 40,
+      "name": "Induktionsbeweise Bsp.",
+      "description": "Einige Beispiele, bei denen der Induktionsbeweis auch in der Graphentheorie zum Einsatz kommt. ",
+      "type": "Beispiel"
     },
     {
-      'id': 41,
-      'name': 'Adjazenzliste',
-      'description': 'Wie eine Adjazenzliste für einen Graphen erstellt werden kann wird hier einmal genauer beleuchtet.',
-      'type': 'Beispiel'
+      "id": 41,
+      "name": "Adjazenzliste",
+      "description": "Wie eine Adjazenzliste für einen Graphen erstellt werden kann wird hier einmal genauer beleuchtet.",
+      "type": "Beispiel"
     },
     {
-      'id': 42,
-      'name': 'Graphscan Beispiel',
-      'description': 'Hier wird der Graphscan Algorithmus einmal mithilfe einer Adjazenzliste als Datenstruktur durchgeführt.',
-      'type': 'Beispiel'
+      "id": 42,
+      "name": "Graphscan Beispiel",
+      "description": "Hier wird der Graphscan Algorithmus einmal mithilfe einer Adjazenzliste als Datenstruktur durchgeführt.",
+      "type": "Beispiel"
     },
     {
-      'id': 43,
-      'name': 'Verschiedene dynamische Datenstrukturen',
-      'description': 'In dieser Vorlesung beginnen wir dynamische Datenstrukturen einzuführen. Es werden Stapel, Warteschlangen und verkettete Listen vorgestellt. Außerdem beschäftigen wir uns mit binärer Suche.\n+ Links zu Video und Folien',
-      'type': 'Vorlesung'
+      "id": 43,
+      "name": "Verschiedene dynamische Datenstrukturen",
+      "description": "In dieser Vorlesung beginnen wir dynamische Datenstrukturen einzuführen. Es werden Stapel, Warteschlangen und verkettete Listen vorgestellt. Außerdem beschäftigen wir uns mit binärer Suche.",
+      "type": "Vorlesung"
     },
     {
-      'id': 44,
-      'name': 'Verkettete Liste',
-      'description': 'Eine verkettete Liste ist eine dynamische Datenstruktur. Dabei werden für die einzelnen Elemente jeweils Vorgänger und Nachfolger mit gespeichert. Der Vorteil hierbei ist, dass neue Einträge überall eingefügt werden können.',
-      'type': 'Definition'
+      "id": 44,
+      "name": "Verkettete Liste",
+      "description": "Eine verkettete Liste ist eine dynamische Datenstruktur. Dabei werden für die einzelnen Elemente jeweils Vorgänger und Nachfolger mit gespeichert. Der Vorteil hierbei ist, dass neue Einträge überall eingefügt werden können.",
+      "type": "Definition"
     },
     {
-      'id': 45,
-      'name': 'Binäre Suche',
-      'description': 'Dieser Algorithmus (4.1) erhält als Input einen sortierten Array mit Einträgen S[I], Suchwert WERT, linke Randposition LINKS, rechte Randposition RECHTS und liefert als Output die Position von WERT zwischen Arraypositionen LINKS und RECHTS, falls existent.',
-      'type': 'Algorithmus'
+      "id": 45,
+      "name": "Binäre Suche",
+      "description": "Dieser Algorithmus (4.1) erhält als Input einen sortierten Array mit Einträgen S[I], Suchwert WERT, linke Randposition LINKS, rechte Randposition RECHTS und liefert als Output die Position von WERT zwischen Arraypositionen LINKS und RECHTS, falls existent.",
+      "type": "Algorithmus"
     },
     {
-      'id': 46,
-      'name': 'Binäre Suche Idee',
-      'description': 'Ein einleitendes Beispiel zur Binären Suche.',
-      'type': 'Beispiel'
+      "id": 46,
+      "name": "Binäre Suche Idee",
+      "description": "Ein einleitendes Beispiel zur Binären Suche.",
+      "type": "Beispiel"
     },
     {
-      'id': 47,
-      'name': 'Binäre Suche Beispiel',
-      'description': 'Der Algorithmus für die binäre Suche einmal an zwei Beispielen angewandt.',
-      'type': 'Beispiel'
+      "id": 47,
+      "name": "Binäre Suche Beispiel",
+      "description": "Der Algorithmus für die binäre Suche einmal an zwei Beispielen angewandt.",
+      "type": "Beispiel"
     },
     {
-      'id': 48,
-      'name': 'Binäre Suchbäume',
-      'description': 'In dieser Vorlesung beschäftigen wir uns genauer mit binären Suchbäumen und den darauf anwendbaren Operationen, wie Maximum, Minimum, einfügen und löschen von Knoten, sowie mit der binären Suche.\n+ Links zu Video und Folien',
-      'type': 'Vorlesung'
+      "id": 48,
+      "name": "Binäre Suchbäume",
+      "description": "In dieser Vorlesung beschäftigen wir uns genauer mit binären Suchbäumen und den darauf anwendbaren Operationen, wie Maximum, Minimum, einfügen und löschen von Knoten, sowie mit der binären Suche.",
+      "type": "Vorlesung"
     },
     {
-      'id': 49,
-      'name': 'Binärer Suchbaum',
-      'description': "In dieser Definition werden die Begriffe 'gerichteter Graph/Baum', 'Höhe eines Baumes', '(voller/vollständiger) binärer Baum', 'Blatt eines Baumes', 'Teilbaum eines Knotens' und 'binärer Suchbaum' definiert und erklärt.",
-      'type': 'Definition'
+      "id": 49,
+      "name": "Binärer Suchbaum",
+      "description": "In dieser Definition werden die Begriffe 'gerichteter Graph/Baum', 'Höhe eines Baumes', '(voller/vollständiger) binärer Baum', 'Blatt eines Baumes', 'Teilbaum eines Knotens' und 'binärer Suchbaum' definiert und erklärt.",
+      "type": "Definition"
     },
     {
-      'id': 50,
-      'name': 'Grundoperationen Suchbaum',
-      'description': 'Minimum/Maximum finden, Suche im Baum, Nachfolger finden, Einfügen und Löschen sind die Grundoperationen, welche auf binäre Suchbäume angewendet werden können. Und hier findet ihr die Algorithmen dazu.',
-      'type': 'Algorithmus'
+      "id": 50,
+      "name": "Grundoperationen Suchbaum",
+      "description": "Minimum/Maximum finden, Suche im Baum, Nachfolger finden, Einfügen und Löschen sind die Grundoperationen, welche auf binäre Suchbäume angewendet werden können. Und hier findet ihr die Algorithmen dazu.",
+      "type": "Algorithmus"
     },
     {
-      'id': 51,
-      'name': 'AVL-Bäume',
-      'description': 'In dieser Vorlesung beschäftigen wir uns mit speziellen binären Suchbäumen, den AVL-Bäumen und ihren Eigenschaften.\n+ Links zu Video und Folien/Notizen',
-      'type': 'Vorlesung'
+      "id": 51,
+      "name": "AVL-Bäume",
+      "description": "In dieser Vorlesung beschäftigen wir uns mit speziellen binären Suchbäumen, den AVL-Bäumen und ihren Eigenschaften.",
+      "type": "Vorlesung"
     },
     {
-      'id': 52,
-      'name': 'AVL-Baum',
-      'description': 'Ein binärer Suchbaum ist höhenbalanciert, wenn sich für jeden Knoten v die Höhe der beiden Kinder von v um höchstens 1 unterscheidet. Ein höhenbalancierter Suchbaum heißt auch AVL-Baum.',
-      'type': 'Definition'
+      "id": 52,
+      "name": "AVL-Baum",
+      "description": "Ein binärer Suchbaum ist höhenbalanciert, wenn sich für jeden Knoten v die Höhe der beiden Kinder von v um höchstens 1 unterscheidet. Ein höhenbalancierter Suchbaum heißt auch AVL-Baum.",
+      "type": "Definition"
     },
     {
-      'id': 53,
-      'name': 'dyn. Operationen auf AVL-Bäumen',
-      'description': 'In dieser Vorlesung beschäftigen wir uns mit dem Erhalt der AVL-Eigenschaft eines binären Suchbaumes bei Einfüge- und Löschoperationen. Außerdem werfen wir einen Blick auf die Fibonacci-Zahlen.\n+ Links zu Video und Folien',
-      'type': 'Vorlesung'
+      "id": 53,
+      "name": "dyn. Operationen auf AVL-Bäumen",
+      "description": "In dieser Vorlesung beschäftigen wir uns mit dem Erhalt der AVL-Eigenschaft eines binären Suchbaumes bei Einfüge- und Löschoperationen. Außerdem werfen wir einen Blick auf die Fibonacci-Zahlen.",
+      "type": "Vorlesung"
     },
     {
-      'id': 54,
-      'name': 'AVL-Rotation',
-      'description': 'Dieser Algorithmus (4.9) erhält als Input einen Knoten x eines binären Suchbaumes T, Vaterknoten y, Großvaterknoten z und liefert als Output den binären Suchbaum T nach Umstrukturierung mit x, y, z.',
-      'type': 'Algorithmus'
+      "id": 54,
+      "name": "AVL-Rotation",
+      "description": "Dieser Algorithmus (4.9) erhält als Input einen Knoten x eines binären Suchbaumes T, Vaterknoten y, Großvaterknoten z und liefert als Output den binären Suchbaum T nach Umstrukturierung mit x, y, z.",
+      "type": "Algorithmus"
     },
     {
-      'id': 55,
-      'name': 'Fibonacci-Zahlen',
-      'description': 'Die Fibonacci-Zahlen sind eine rekursiv definierte Zahlenfolge, bei der sich eine Zahl aus der Summe ihrer zwei Vorgänger ergibt. Dabei sind die ersten beiden Elemente gegeben als 1. Die Fibonacci-Zahlen finden sich überall in der Natur wieder und haben nicht wenig mit unserer Auffassung von Schönheit zu tun.',
-      'type': 'Definition'
+      "id": 55,
+      "name": "Fibonacci-Zahlen",
+      "description": "Die Fibonacci-Zahlen sind eine rekursiv definierte Zahlenfolge, bei der sich eine Zahl aus der Summe ihrer zwei Vorgänger ergibt. Dabei sind die ersten beiden Elemente gegeben als 1. Die Fibonacci-Zahlen finden sich überall in der Natur wieder und haben nicht wenig mit unserer Auffassung von Schönheit zu tun.",
+      "type": "Definition"
     },
     {
-      'id': 56,
-      'name': 'Bäume-Übung',
-      'description': 'In dieser Übung beschäftigen wir uns noch einmal genauer mit einigen Datenstrukturen wie verketteten Listen, binären Bäumen und AVL-Bäumen.',
-      'type': 'Ãœbung'
+      "id": 56,
+      "name": "Bäume-Übung",
+      "description": "In dieser Übung beschäftigen wir uns noch einmal genauer mit einigen Datenstrukturen wie verketteten Listen, binären Bäumen und AVL-Bäumen.",
+      "type": "Ãœbung"
     },
     {
-      'id': 57,
-      'name': 'Laufzeit von Algorithmus 2.7',
-      'description': 'Wir betrachten einmal die Laufzeit des Hierholzer-Algorithmus (2.7) und im Zusammenhang damit auch verkettete Listen.',
-      'type': 'Beispiel'
+      "id": 57,
+      "name": "Laufzeit von Algorithmus 2.7",
+      "description": "Wir betrachten einmal die Laufzeit des Hierholzer-Algorithmus (2.7) und im Zusammenhang damit auch verkettete Listen.",
+      "type": "Beispiel"
     },
     {
-      'id': 58,
-      'name': 'Beispiel Suchbaumoperationen',
-      'description': 'In diesem Teil der Übung werden einmal die Operationen Einfügen, Suchen, Vorgänger/Nachfolger finden, löschen und verschmelzen von binären Suchbäumen geübt.',
-      'type': 'Beispiel'
+      "id": 58,
+      "name": "Beispiel Suchbaumoperationen",
+      "description": "In diesem Teil der Übung werden einmal die Operationen Einfügen, Suchen, Vorgänger/Nachfolger finden, löschen und verschmelzen von binären Suchbäumen geübt.",
+      "type": "Beispiel"
     },
     {
-      'id': 59,
-      'name': 'AVL-Baum-Operationen',
-      'description': 'Wir schauen uns noch einmal genauer die AVL-Bäume an und was man damit machen kann. Insbesondere auch die Operationen Löschen und Einfügen.',
-      'type': 'Beispiel'
+      "id": 59,
+      "name": "AVL-Baum-Operationen",
+      "description": "Wir schauen uns noch einmal genauer die AVL-Bäume an und was man damit machen kann. Insbesondere auch die Operationen Löschen und Einfügen.",
+      "type": "Beispiel"
     },
     {
-      'id': 60,
-      'name': 'Dynamische Datenstrukturen 2',
-      'description': 'In dieser Vorlesung schauen wir noch einmal auf das bisher in Kapitel 4 gelernte zurück. Außerdem geben wir einen Überblick über einige weitere dynamische Datenstrukturen wie Rot-Scharz-Bäumme, B-Bäume und Heaps.\n+ Links zu Video und Folien',
-      'type': 'Vorlesung'
+      "id": 60,
+      "name": "Dynamische Datenstrukturen 2",
+      "description": "In dieser Vorlesung schauen wir noch einmal auf das bisher in Kapitel 4 gelernte zurück. Außerdem geben wir einen Überblick über einige weitere dynamische Datenstrukturen wie Rot-Scharz-Bäumme, B-Bäume und Heaps.",
+      "type": "Vorlesung"
     },
     {
-      'id': 61,
-      'name': 'Rot-Schwarz-Bäume',
-      'description': 'Ein binärer Suchbaum heißt Rot-Schwarz-Baum, wenn er die folgenden Eigenschaften erfüllt:\n1. Jeder Knoten ist entweder rot oder schwarz.\n2. Die Wurzel ist schwarz.\n3. Jedes Blatt (NIL) ist schwarz.\n4. Wenn ein Knoten rot ist, sind seine beiden Kinder schwarz.\n5. Für jeden Knoten enthalten alle Pfade nach unten zu einem Blatt des Teilbaumes die gleiche Anzahl schwarzer Knoten.',
-      'type': 'Definition'
+      "id": 61,
+      "name": "Rot-Schwarz-Bäume",
+      "description": "Ein binärer Suchbaum heißt Rot-Schwarz-Baum, wenn er die folgenden Eigenschaften erfüllt:<br>1. Jeder Knoten ist entweder rot oder schwarz.<br>2. Die Wurzel ist schwarz.<br>3. Jedes Blatt (NIL) ist schwarz.<br>4. Wenn ein Knoten rot ist, sind seine beiden Kinder schwarz.<br>5. Für jeden Knoten enthalten alle Pfade nach unten zu einem Blatt des Teilbaumes die gleiche Anzahl schwarzer Knoten.",
+      "type": "Definition"
     },
     {
-      'id': 62,
-      'name': 'B-Bäume',
-      'description': 'B-Bäume sind binäre Suchbäume, welche für externen Speicher (HDDs) optimiert sind. Dabei wird die Höhe des Baumes minimiert und es werden den Knoten mehr Schlüssel zugewiesen.',
-      'type': 'Definition'
+      "id": 62,
+      "name": "B-Bäume",
+      "description": "B-Bäume sind binäre Suchbäume, welche für externen Speicher (HDDs) optimiert sind. Dabei wird die Höhe des Baumes minimiert und es werden den Knoten mehr Schlüssel zugewiesen.",
+      "type": "Definition"
     },
     {
-      'id': 63,
-      'name': 'Heaps',
-      'description': "Ein gerichteter binärer Baum heißt binärer Min/Max-Heap, wenn jeder Knoten einen Schlüssel hat, alle Ebenen außer der 'letzten' genau 2 Knoten haben, auf der 'letzten' Ebene die linken n-(2^h)+1 Positionen besetzt sind und jeder Schlüssel eines Knotens höchstens/mindestens so groß ist wie die seiner Kinder.",
-      'type': 'Definition'
+      "id": 63,
+      "name": "Heaps",
+      "description": "Ein gerichteter binärer Baum heißt binärer Min/Max-Heap, wenn jeder Knoten einen Schlüssel hat, alle Ebenen außer der 'letzten' genau 2 Knoten haben, auf der 'letzten' Ebene die linken n-(2^h)+1 Positionen besetzt sind und jeder Schlüssel eines Knotens höchstens/mindestens so groß ist wie die seiner Kinder.",
+      "type": "Definition"
     },
     {
-      'id': 64,
-      'name': 'Einführung in das Sortieren',
-      'description': 'In dieser Vorlesung geben wir eine Einführung in das Oberthema Sortieren. Wir stellen außerdem einen Sortieralgorithmus mit dem Namen Mergesort vor und stellen grundlegende Überlegungen zur Laufzeit von Sortieralgorithmen an.\n+ Links zu Video und Folien/Notizen',
-      'type': 'Vorlesung'
+      "id": 64,
+      "name": "Einführung in das Sortieren",
+      "description": "In dieser Vorlesung geben wir eine Einführung in das Oberthema Sortieren. Wir stellen außerdem einen Sortieralgorithmus mit dem Namen Mergesort vor und stellen grundlegende Überlegungen zur Laufzeit von Sortieralgorithmen an.",
+      "type": "Vorlesung"
     },
     {
-      'id': 65,
-      'name': 'Merge-Sort',
-      'description': 'Dieser Algorithmus (5.1) erhält als Input ein Subarray von A=[1,...,n], der bei Index p beginnt und bei Index r endet, d.h. A[p,...,r] und liefert als Output ein sortiertes Subarray. Wichtig ist dafür auch die Subroutine (5.2), welche als Input zwei sortierte Subarrays von A=[1,...,n], d.h. A[p,...,q] und A[q+1,...,r] erhält und als Output das sortierte Subarray A[p,...,r] liefert.',
-      'type': 'Algorithmus'
+      "id": 65,
+      "name": "Merge-Sort",
+      "description": "Dieser Algorithmus (5.1) erhält als Input ein Subarray von A=[1,...,n], der bei Index p beginnt und bei Index r endet, d.h. A[p,...,r] und liefert als Output ein sortiertes Subarray. Wichtig ist dafür auch die Subroutine (5.2), welche als Input zwei sortierte Subarrays von A=[1,...,n], d.h. A[p,...,q] und A[q+1,...,r] erhält und als Output das sortierte Subarray A[p,...,r] liefert.",
+      "type": "Algorithmus"
     },
     {
-      'id': 66,
-      'name': 'Sortier-Laufzeitschranken',
-      'description': 'In dieser Vorlesung leiten wir konkrete Laufzeitschranken für das Problem des Sortierens einer Liste von Zahlen her. Zudem machen wir uns Gedanken über das Lösen von Rekursionsgleichungen.\n+ Links zu Video und Folien/Notizen',
-      'type': 'Vorlesung'
+      "id": 66,
+      "name": "Sortier-Laufzeitschranken",
+      "description": "In dieser Vorlesung leiten wir konkrete Laufzeitschranken für das Problem des Sortierens einer Liste von Zahlen her. Zudem machen wir uns Gedanken über das Lösen von Rekursionsgleichungen.",
+      "type": "Vorlesung"
     },
     {
-      'id': 67,
-      'name': 'Permutation',
-      'description': 'Eine Permutation P ist eine Umsortierung von n Objekten.',
-      'type': 'Definition'
+      "id": 67,
+      "name": "Permutation",
+      "description": "Eine Permutation P ist eine Umsortierung von n Objekten.",
+      "type": "Definition"
     },
     {
-      'id': 68,
-      'name': 'Erzeugende Funktionen',
-      'description': 'Erzeugende Funktionen können genutzt werden um Rekursionen zu lösen.',
-      'type': 'Definition'
+      "id": 68,
+      "name": "Erzeugende Funktionen",
+      "description": "Erzeugende Funktionen können genutzt werden um Rekursionen zu lösen.",
+      "type": "Definition"
     },
     {
-      'id': 69,
-      'name': 'Erzeugende Funktionen/Mastertheorem',
-      'description': 'In dieser Vorlesung besprechen wir weitere Details zu erzeugenden Funktionen und führen das Master-Theorem ein.\n+ Links zu Video und Folien/Notizen',
-      'type': 'Vorlesung'
+      "id": 69,
+      "name": "Erzeugende Funktionen/Mastertheorem",
+      "description": "In dieser Vorlesung besprechen wir weitere Details zu erzeugenden Funktionen und führen das Master-Theorem ein.",
+      "type": "Vorlesung"
     },
     {
-      'id': 70,
-      'name': 'erzeugende Funktionen Fibonacci-Zahlen',
-      'description': 'In diesem Beispiel wird einmal die erzeugende Funktion der Fibonacci-Zahlen hergeleitet.',
-      'type': 'Beispiel'
+      "id": 70,
+      "name": "erzeugende Funktionen Fibonacci-Zahlen",
+      "description": "In diesem Beispiel wird einmal die erzeugende Funktion der Fibonacci-Zahlen hergeleitet.",
+      "type": "Beispiel"
     },
     {
-      'id': 71,
-      'name': 'Master-Theorem',
-      'description': 'Das Master-Theorem bietet eine schnelle Lösung für die Frage, in welcher Laufzeitklasse eine gegebene rekursiv definierte Funktion liegt. Dies funktioniert leider nur, solange einer der drei Fälle des Theorems auf die Funktion angewandt werden kann, ansonsten liefert das Theorem keine Aussage.',
-      'type': 'Definition'
+      "id": 71,
+      "name": "Master-Theorem",
+      "description": "Das Master-Theorem bietet eine schnelle Lösung für die Frage, in welcher Laufzeitklasse eine gegebene rekursiv definierte Funktion liegt. Dies funktioniert leider nur, solange einer der drei Fälle des Theorems auf die Funktion angewandt werden kann, ansonsten liefert das Theorem keine Aussage.",
+      "type": "Definition"
     },
     {
-      'id': 72,
-      'name': 'Master-Theorem Beispiele',
-      'description': 'Einige Beispiele, an denen das Master-Theorem und seine Funktion noch einmal verdeutlicht wird.',
-      'type': 'Beispiel'
+      "id": 72,
+      "name": "Master-Theorem Beispiele",
+      "description": "Einige Beispiele, an denen das Master-Theorem und seine Funktion noch einmal verdeutlicht wird.",
+      "type": "Beispiel"
     },
     {
-      'id': 73,
-      'name': 'Sortieralgorithmen und Master-Theorem',
-      'description': 'Wir betrachten ein weiteres Beispiel für Mergesort und leiten erneut die Laufzeit des Sortieralgorithmus her, indem das Master-Theorem benutzt wird. Außerdem betrachten wir einen weiteren Sortieralgorithmus: Heapsort.\n+ Links zu Video und Folien',
-      'type': 'Ãœbung'
+      "id": 73,
+      "name": "Sortieralgorithmen und Master-Theorem",
+      "description": "Wir betrachten ein weiteres Beispiel für Mergesort und leiten erneut die Laufzeit des Sortieralgorithmus her, indem das Master-Theorem benutzt wird. Außerdem betrachten wir einen weiteren Sortieralgorithmus: Heapsort.",
+      "type": "Ãœbung"
     },
     {
-      'id': 74,
-      'name': 'Merge-Sort Beispiel',
-      'description': 'Hier wird der Merge-Sort Algorithmus einmal mit einem Beispiel komplett durchgeführt und die Laufzeit des Algorithmus betrachtet.',
-      'type': 'Beispiel'
+      "id": 74,
+      "name": "Merge-Sort Beispiel",
+      "description": "Hier wird der Merge-Sort Algorithmus einmal mit einem Beispiel komplett durchgeführt und die Laufzeit des Algorithmus betrachtet.",
+      "type": "Beispiel"
     },
     {
-      'id': 75,
-      'name': 'Master-Theorem Beispiel',
-      'description': '3 weitere Beispiele, welche dabei helfen das Master-Theorem zu verstehen und anzuwenden.',
-      'type': 'Beispiel'
+      "id": 75,
+      "name": "Master-Theorem Beispiel",
+      "description": "3 weitere Beispiele, welche dabei helfen das Master-Theorem zu verstehen und anzuwenden.",
+      "type": "Beispiel"
     },
     {
-      'id': 76,
-      'name': 'Max-Heaps',
-      'description': 'Hier wir aufgezeigt, wie man mithilfe eines Algorithmus Max-Heaps bildet. ',
-      'type': 'Algorithmus'
+      "id": 76,
+      "name": "Max-Heaps",
+      "description": "Hier wir aufgezeigt, wie man mithilfe eines Algorithmus Max-Heaps bildet. ",
+      "type": "Algorithmus"
     },
     {
-      'id': 77,
-      'name': 'Max-Heaps Anwendung',
-      'description': 'Hier wird der Algorithmus aus der Ãœbung 6 zum Erstellen eines Max-Heaps einmal an einem Beispiel angewandt.',
-      'type': 'Beispiel'
+      "id": 77,
+      "name": "Max-Heaps Anwendung",
+      "description": "Hier wird der Algorithmus aus der Ãœbung 6 zum Erstellen eines Max-Heaps einmal an einem Beispiel angewandt.",
+      "type": "Beispiel"
     },
     {
-      'id': 78,
-      'name': 'Heapsort',
-      'description': 'Heapsort ist ein Algorithmus bei dem mithilfe von Max-Heaps eine Reihe von Elementen sortiert werden kann. Der Algorithmus hat dabei eine Laufzeit von O(n log n), wie auch in Ãœbung 6 bewiesen wird.',
-      'type': 'Algorithmus'
+      "id": 78,
+      "name": "Heapsort",
+      "description": "Heapsort ist ein Algorithmus bei dem mithilfe von Max-Heaps eine Reihe von Elementen sortiert werden kann. Der Algorithmus hat dabei eine Laufzeit von O(n log n), wie auch in Ãœbung 6 bewiesen wird.",
+      "type": "Algorithmus"
     },
     {
-      'id': 79,
-      'name': 'nichtlineare Rekursionen (Exkurs)',
-      'description': 'In dieser Vorlesung haben wir einen Exkurs in die nichtlineare Rekursion gemacht.\n+ Links zu Video und Folien',
-      'type': 'Vorlesung'
+      "id": 79,
+      "name": "nichtlineare Rekursionen (Exkurs)",
+      "description": "In dieser Vorlesung haben wir einen Exkurs in die nichtlineare Rekursion gemacht.",
+      "type": "Vorlesung"
     },
     {
-      'id': 80,
-      'name': 'logistische Rekursion',
-      'description': 'Logistische Rekursion bezeichnet ein Wachstum proportional zu einer Größe. Dabei betrachtet man beispielsweise eine Bevölkerung, welche zwar durch Fruchtbarkeit immer weiter wächst, aber beispielsweise durch Tod auch wieder im Wachstum beschränkt wird.',
-      'type': 'Definition'
+      "id": 80,
+      "name": "logistische Rekursion",
+      "description": "Logistische Rekursion bezeichnet ein Wachstum proportional zu einer Größe. Dabei betrachtet man beispielsweise eine Bevölkerung, welche zwar durch Fruchtbarkeit immer weiter wächst, aber beispielsweise durch Tod auch wieder im Wachstum beschränkt wird.",
+      "type": "Definition"
     },
     {
-      'id': 81,
-      'name': 'Mandelbrot-Menge',
-      'description': 'Die Mandelbrot-Menge, benannt nach Benoît Mandelbrot, ist eine Menge in den komplexen Zahlen. Interpretiert man sie als geometrische Figur, so ergibt sich ein Fraktal, welches im allgemeinen Sprachgebrauch auch als Apfelmännchen bekannt ist.',
-      'type': 'Definition'
+      "id": 81,
+      "name": "Mandelbrot-Menge",
+      "description": "Die Mandelbrot-Menge, benannt nach Benoît Mandelbrot, ist eine Menge in den komplexen Zahlen. Interpretiert man sie als geometrische Figur, so ergibt sich ein Fraktal, welches im allgemeinen Sprachgebrauch auch als Apfelmännchen bekannt ist.",
+      "type": "Definition"
     },
     {
-      'id': 82,
-      'name': 'Fraktale',
-      'description': 'Ein Fraktal beschreibt natürliche oder künstliche Gebilde oder geometrische Muster und ist ein von Benoît Mandelbrot geprägter Begriff. - Wikipedia',
-      'type': 'Definition'
+      "id": 82,
+      "name": "Fraktale",
+      "description": "Ein Fraktal beschreibt natürliche oder künstliche Gebilde oder geometrische Muster und ist ein von Benoît Mandelbrot geprägter Begriff. - Wikipedia",
+      "type": "Definition"
     },
     {
-      'id': 83,
-      'name': 'Zelluläre Automaten',
-      'description': 'Zelluläre oder auch zellulare Automaten dienen der Modellierung räumlich diskreter dynamischer Systeme, wobei die Entwicklung einzelner Zellen zum Zeitpunkt t+1 primär von den Zellzuständen in einer vorgegebenen Nachbarschaft und vom eigenen Zustand zum Zeitpunkt t abhängt. - Wikipedia',
-      'type': 'Definition'
+      "id": 83,
+      "name": "Zelluläre Automaten",
+      "description": "Zelluläre oder auch zellulare Automaten dienen der Modellierung räumlich diskreter dynamischer Systeme, wobei die Entwicklung einzelner Zellen zum Zeitpunkt t+1 primär von den Zellzuständen in einer vorgegebenen Nachbarschaft und vom eigenen Zustand zum Zeitpunkt t abhängt. - Wikipedia",
+      "type": "Definition"
     },
     {
-      'id': 84,
-      'name': 'Game of Life',
-      'description': "Das 'Game of Life' ist das wohl bekannteste Beispiel eines zellulären Automaten. ",
-      'type': 'Beispiel'
+      "id": 84,
+      "name": "Game of Life",
+      "description": "Das 'Game of Life' ist das wohl bekannteste Beispiel eines zellulären Automaten. ",
+      "type": "Beispiel"
     },
     {
-      'id': 85,
-      'name': 'Einführung von Quick-Sort',
-      'description': 'In dieser Vorlesung kehren wir zurück zu Sortieralgorithmen und stellen den Quicksort-Algorithmus vor.\n+ Links zu Video und Folien/Notizen',
-      'type': 'Vorlesung'
+      "id": 85,
+      "name": "Einführung von Quick-Sort",
+      "description": "In dieser Vorlesung kehren wir zurück zu Sortieralgorithmen und stellen den Quicksort-Algorithmus vor.",
+      "type": "Vorlesung"
     },
     {
-      'id': 86,
-      'name': 'Quick-Sort',
-      'description': 'Dieser Algorithmus (5.14) erhält als Input ein Subarray von A=[1,...,n], der bei Index p beginnt und bei Index r endet, d.h. A[p,...,r] und liefert als Output einen sortierten Subarray. Dabei ist auch Subroutine 5.15 wichtig, welche als Input ein Subarray von A=[1,...,n], d.h. A[p,...,r] erhält und als Output zwei Subarrays A[p,...,q-1] und A[q+1,...,r] mit A[i]≤A[q] und A[q]<A[j] für i=p,...,q-1 und j=q+1,...,r liefert.',
-      'type': 'Algorithmus'
+      "id": 86,
+      "name": "Quick-Sort",
+      "description": "Dieser Algorithmus (5.14) erhält als Input ein Subarray von A=[1,...,n], der bei Index p beginnt und bei Index r endet, d.h. A[p,...,r] und liefert als Output einen sortierten Subarray. Dabei ist auch Subroutine 5.15 wichtig, welche als Input ein Subarray von A=[1,...,n], d.h. A[p,...,r] erhält und als Output zwei Subarrays A[p,...,q-1] und A[q+1,...,r] mit A[i]≤A[q] und A[q]<A[j] für i=p,...,q-1 und j=q+1,...,r liefert.",
+      "type": "Algorithmus"
     },
     {
-      'id': 87,
-      'name': 'Laufzeit von Quick-Sort',
-      'description': 'Die Laufzeit des Quick-Sort Algorithmus lässt sich mithilfe vom Master-Theorem ermitteln. Dazu betrachten wir die 3 Fälle best-case, average-case und worst-case für den Algorithmus.',
-      'type': 'Beispiel'
+      "id": 87,
+      "name": "Laufzeit von Quick-Sort",
+      "description": "Die Laufzeit des Quick-Sort Algorithmus lässt sich mithilfe vom Master-Theorem ermitteln. Dazu betrachten wir die 3 Fälle best-case, average-case und worst-case für den Algorithmus.",
+      "type": "Beispiel"
     },
     {
-      'id': 88,
-      'name': 'Mediane',
-      'description': 'In dieser Vorlesung beschäftigen wir uns mit Medianen.\n+ Links zu Video und Folien',
-      'type': 'Vorlesung'
+      "id": 88,
+      "name": "Mediane",
+      "description": "In dieser Vorlesung beschäftigen wir uns mit Medianen.",
+      "type": "Vorlesung"
     },
     {
-      'id': 89,
-      'name': 'Standortprobleme',
-      'description': 'Was ist der optimale Standort für beispielsweise ein Amazon-Lagerhaus? Idee: Die durchschnittliche Distanz zu den zu beliefernden Gebäuden minimieren. In Amerika ist dies leicht umgesetzt mit der sogenannten Manhatten-Distanz. Dieses Problem ist die Einführung in das Thema der Mediane.',
-      'type': 'Definition'
+      "id": 89,
+      "name": "Standortprobleme",
+      "description": "Was ist der optimale Standort für beispielsweise ein Amazon-Lagerhaus? Idee: Die durchschnittliche Distanz zu den zu beliefernden Gebäuden minimieren. In Amerika ist dies leicht umgesetzt mit der sogenannten Manhatten-Distanz. Dieses Problem ist die Einführung in das Thema der Mediane.",
+      "type": "Definition"
     },
     {
-      'id': 90,
-      'name': 'Median (diskret)',
-      'description': "Der Rank k eines Elements x (auch 'k-tes Element') ist definiert durch |{y ∈ X |y<=x}| = k. Also die Anzahl der Elemente, welche kleiner oder gleich x sind. Speziell heißt x Median, wenn er das [n/2]-te Element ist. [n/2] wird dabei abgerundet.",
-      'type': 'Definition'
+      "id": 90,
+      "name": "Median (diskret)",
+      "description": "Der Rank k eines Elements x (auch 'k-tes Element') ist definiert durch |{y ∈ X |y<=x}| = k. Also die Anzahl der Elemente, welche kleiner oder gleich x sind. Speziell heißt x Median, wenn er das [n/2]-te Element ist. [n/2] wird dabei abgerundet.",
+      "type": "Definition"
     },
     {
-      'id': 91,
-      'name': 'Median (kontinuierlich)',
-      'description': 'Der kontinuierliche Median hat als Eigenschaft, dass das sowohl Integral bis zum Median, als auch ab dem Median größer-gleich 1/2 ist.',
-      'type': 'Definition'
+      "id": 91,
+      "name": "Median (kontinuierlich)",
+      "description": "Der kontinuierliche Median hat als Eigenschaft, dass das sowohl Integral bis zum Median, als auch ab dem Median größer-gleich 1/2 ist.",
+      "type": "Definition"
     },
     {
-      'id': 92,
-      'name': 'Sortieralgorithmen Sonderfälle',
-      'description': 'In dieser Vorlesung beschäftigen wir uns mit Sonderfällen für Sortieralgorithmen, durch die Sortieren in linearer Zeit ermöglicht wird. Dabei werfen wir einen näheren Blick auf die Sortierverfahren Countingsort und Radixsort.\n+ Links zu Video und Folien/Notizen',
-      'type': 'Vorlesung'
+      "id": 92,
+      "name": "Sortieralgorithmen Sonderfälle",
+      "description": "In dieser Vorlesung beschäftigen wir uns mit Sonderfällen für Sortieralgorithmen, durch die Sortieren in linearer Zeit ermöglicht wird. Dabei werfen wir einen näheren Blick auf die Sortierverfahren Countingsort und Radixsort.",
+      "type": "Vorlesung"
     },
     {
-      'id': 93,
-      'name': 'Counting-Sort',
-      'description': 'Dieser Algorithmus (5.14) erhält als Input ein Array von A=[1],...,A[n] mit Schlüsselwerten aus {1,…, k} und liefert als Output eine sortierte Kopie B[1],…,B[n] von [1],...,A[n].',
-      'type': 'Algorithmus'
+      "id": 93,
+      "name": "Counting-Sort",
+      "description": "Dieser Algorithmus (5.14) erhält als Input ein Array von A=[1],...,A[n] mit Schlüsselwerten aus {1,…, k} und liefert als Output eine sortierte Kopie B[1],…,B[n] von [1],...,A[n].",
+      "type": "Algorithmus"
     },
     {
-      'id': 94,
-      'name': 'Radix-Sort',
-      'description': 'Dieser Algorithmus (5.18) erhält als Input n Zahlen mit je d Ziffern, die k verschiedene Werte annehmen können, [1],...,A[n]  und liefert als Output einen sortierten Array. Dabei geht Radix-Sort im Gegensatz zu anderen Sortieralgorithmen ziffernweise vor.',
-      'type': 'Algorithmus'
+      "id": 94,
+      "name": "Radix-Sort",
+      "description": "Dieser Algorithmus (5.18) erhält als Input n Zahlen mit je d Ziffern, die k verschiedene Werte annehmen können, [1],...,A[n]  und liefert als Output einen sortierten Array. Dabei geht Radix-Sort im Gegensatz zu anderen Sortieralgorithmen ziffernweise vor.",
+      "type": "Algorithmus"
     },
     {
-      'id': 95,
-      'name': 'Quick-Sort, Mediane, kd-Bäume',
-      'description': 'In dieser Übung schauen wir uns noch einmal das Sortierverfahren Quicksort an und sprechen über die Berechnung von Medianen. Außerdem schauen wir uns mit den kd-Bäumen eine spezielle Datenstruktur für mehrdimensionale Daten an.\n+ Links zu Video und Folien',
-      'type': 'Ãœbung'
+      "id": 95,
+      "name": "Quick-Sort, Mediane, kd-Bäume",
+      "description": "In dieser Übung schauen wir uns noch einmal das Sortierverfahren Quicksort an und sprechen über die Berechnung von Medianen. Außerdem schauen wir uns mit den kd-Bäumen eine spezielle Datenstruktur für mehrdimensionale Daten an.",
+      "type": "Ãœbung"
     },
     {
-      'id': 96,
-      'name': 'Quick-Sort Beispiel',
-      'description': 'In diesem Beispiel wird die Funktionsweise von Quick-Sort, sowie die Laufzeit betrachtet.',
-      'type': 'Beispiel'
+      "id": 96,
+      "name": "Quick-Sort Beispiel",
+      "description": "In diesem Beispiel wird die Funktionsweise von Quick-Sort, sowie die Laufzeit betrachtet.",
+      "type": "Beispiel"
     },
     {
-      'id': 97,
-      'name': 'Mediane Beispiel',
-      'description': 'In diesem Teil der Übung schauen wir uns noch einmal genauer an, was Mediane sind, wie man sie algorithmisch bestimmen kann und in welcher Laufzeit das möglich ist.',
-      'type': 'Beispiel'
+      "id": 97,
+      "name": "Mediane Beispiel",
+      "description": "In diesem Teil der Übung schauen wir uns noch einmal genauer an, was Mediane sind, wie man sie algorithmisch bestimmen kann und in welcher Laufzeit das möglich ist.",
+      "type": "Beispiel"
     },
     {
-      'id': 98,
-      'name': 'kd-Bäume (Exkurs)',
-      'description': 'kd-Bäume sind Bäume mit einer höheren Dimension. Mithilfe der Idee den Baum abwechselnd nach x- und y-Koordinate zu durchsuchen und so zu konstruieren entsteht ein Algorithmus mit dem man mehrdimensionale Suchbäume erstellen kann. Auch schauen wir uns an, wie man in einem solchen Baum sucht.',
-      'type': 'Definition'
+      "id": 98,
+      "name": "kd-Bäume (Exkurs)",
+      "description": "kd-Bäume sind Bäume mit einer höheren Dimension. Mithilfe der Idee den Baum abwechselnd nach x- und y-Koordinate zu durchsuchen und so zu konstruieren entsteht ein Algorithmus mit dem man mehrdimensionale Suchbäume erstellen kann. Auch schauen wir uns an, wie man in einem solchen Baum sucht.",
+      "type": "Definition"
     },
     {
-      'id': 99,
-      'name': '(parallelisierte) Sortierverfahren',
-      'description': 'In dieser Vorlesung beenden wir das Kapitel zum Thema Sortieralgorithmen und werfen abschließend einen Blick auf parallelisierte Sortierverfahren.\n+ Links zu Video und Folien/Notizen',
-      'type': 'Vorlesung'
+      "id": 99,
+      "name": "(parallelisierte) Sortierverfahren",
+      "description": "In dieser Vorlesung beenden wir das Kapitel zum Thema Sortieralgorithmen und werfen abschließend einen Blick auf parallelisierte Sortierverfahren.",
+      "type": "Vorlesung"
     },
     {
-      'id': 100,
-      'name': 'Bubble-Sort Beispiel',
-      'description': 'Einige Beispiele, wie Bubble-Sort funktioniert, inklusive einiger verschiedener Darstellungen/Animationen und dem Vergleich mit Quick-Sort.',
-      'type': 'Algorithmus'
+      "id": 100,
+      "name": "Bubble-Sort Beispiel",
+      "description": "Einige Beispiele, wie Bubble-Sort funktioniert, inklusive einiger verschiedener Darstellungen/Animationen und dem Vergleich mit Quick-Sort.",
+      "type": "Algorithmus"
     },
     {
-      'id': 101,
-      'name': 'paralleles Bubble-Sort',
-      'description': 'Mithilfe von Parallelisierung lässt sich Bubble-Sort auch in linearer Zeit umsetzen. Die Idee dafür wird hier einmal erläutert.',
-      'type': 'Definition'
+      "id": 101,
+      "name": "paralleles Bubble-Sort",
+      "description": "Mithilfe von Parallelisierung lässt sich Bubble-Sort auch in linearer Zeit umsetzen. Die Idee dafür wird hier einmal erläutert.",
+      "type": "Definition"
     },
     {
-      'id': 102,
-      'name': 'Bogo-Sort',
-      'description': 'Bogo-Sort ist ein eher als Scherz gemeinter Sortieralgorithmus. Dabei wird die gegebene Menge solange zufällig durchpermutiert und überprüft bis die korrekte Lösung erreicht ist.',
-      'type': 'Algorithmus'
+      "id": 102,
+      "name": "Bogo-Sort",
+      "description": "Bogo-Sort ist ein eher als Scherz gemeinter Sortieralgorithmus. Dabei wird die gegebene Menge solange zufällig durchpermutiert und überprüft bis die korrekte Lösung erreicht ist.",
+      "type": "Algorithmus"
     },
     {
-      'id': 103,
-      'name': 'Zusammenfassung',
-      'description': 'Diese Vorlesung markiert das Ende der Vorlesungszeit. Wir gehen deshalb noch einmal Rückblickend über die verschiedenen Themen die in den vergangenen Monaten behandelt wurden und geben die Möglichkeit Fragen zu stellen.\n+ Links zu Video und Folien',
-      'type': 'Vorlesung'
+      "id": 103,
+      "name": "Zusammenfassung",
+      "description": "Diese Vorlesung markiert das Ende der Vorlesungszeit. Wir gehen deshalb noch einmal Rückblickend über die verschiedenen Themen die in den vergangenen Monaten behandelt wurden und geben die Möglichkeit Fragen zu stellen.",
+      "type": "Vorlesung"
     },
     {
-      'id': 104,
-      'name': 'Klausurvorbereitung',
-      'description': 'Die letzte große Übung von AuD mit Spiel, Spaß, Spannung und vielen Fragen.\n+ Links zu Video und Folien',
-      'type': 'Ãœbung'
+      "id": 104,
+      "name": "Klausurvorbereitung",
+      "description": "Die letzte große Übung von AuD mit Spiel, Spaß, Spannung und vielen Fragen.",
+      "type": "Ãœbung"
     },
     {
-      'id': 105,
-      'name': 'Einleitung',
-      'description': 'Eine Einleitung in die Welt der Algorithmen und Datenstrukturen. Was ist ein Algorithmus und wozu wird er benötigt? Und was haben Datenstrukturen damit zu tun?',
-      'type': 'Kapitel'
+      "id": 105,
+      "name": "Einleitung",
+      "description": "Eine Einleitung in die Welt der Algorithmen und Datenstrukturen. Was ist ein Algorithmus und wozu wird er benötigt? Und was haben Datenstrukturen damit zu tun?",
+      "type": "Kapitel"
     },
     {
-      'id': 106,
-      'name': 'Graphen',
-      'description': 'Graphen sind eine wichtige Darstellungsform von Daten in der Informatik. Wie Graphen aufgebaut sind und was man alles mit ihnen machen kann wird in diesem Kapitel behandelt.',
-      'type': 'Kapitel'
+      "id": 106,
+      "name": "Graphen",
+      "description": "Graphen sind eine wichtige Darstellungsform von Daten in der Informatik. Wie Graphen aufgebaut sind und was man alles mit ihnen machen kann wird in diesem Kapitel behandelt.",
+      "type": "Kapitel"
     },
     {
-      'id': 107,
-      'name': 'Suche in Graphen',
-      'description': 'Die Suche in Graphen ist ein wichtiges Werkzeug. Allerdings gibt es mehrere Wege, welche zum Ziel führen und nicht alle funktionieren gleich gut. Wie man effizient in Graphen sucht wird in diesem Kapitel behandelt.',
-      'type': 'Kapitel'
+      "id": 107,
+      "name": "Suche in Graphen",
+      "description": "Die Suche in Graphen ist ein wichtiges Werkzeug. Allerdings gibt es mehrere Wege, welche zum Ziel führen und nicht alle funktionieren gleich gut. Wie man effizient in Graphen sucht wird in diesem Kapitel behandelt.",
+      "type": "Kapitel"
     },
     {
-      'id': 108,
-      'name': 'Dynamische Datenstrukturen',
-      'description': 'Im Laufe der Vorlesung wurden bereits einige Datenstrukturen vorgestellt. In diesem Kapitel beschäftigen wir uns mit einer weiteren Klasse der Datenstrukturen, den dynamischen Datenstrukturen. Und damit, welche Möglichkeiten sie bieten.',
-      'type': 'Kapitel'
+      "id": 108,
+      "name": "Dynamische Datenstrukturen",
+      "description": "Im Laufe der Vorlesung wurden bereits einige Datenstrukturen vorgestellt. In diesem Kapitel beschäftigen wir uns mit einer weiteren Klasse der Datenstrukturen, den dynamischen Datenstrukturen. Und damit, welche Möglichkeiten sie bieten.",
+      "type": "Kapitel"
     },
     {
-      'id': 109,
-      'name': 'Sortieren',
-      'description': 'Neben der Suche von Elementen spielt auch das Sortieren in der Informatik eine große Rolle. Wie man das macht wird in diesem Kapitel behandelt.',
-      'type': 'Kapitel'
+      "id": 109,
+      "name": "Sortieren",
+      "description": "Neben der Suche von Elementen spielt auch das Sortieren in der Informatik eine große Rolle. Wie man das macht wird in diesem Kapitel behandelt.",
+      "type": "Kapitel"
     },
     {
-      'id': 0,
-      'name': 'AuD1',
-      'description': 'Algorithmen und Datenstrukturen 1',
-      'type': 'Kapitel'
+      "id": 0,
+      "name": "AuD1",
+      "description": "Algorithmen und Datenstrukturen 1",
+      "type": "Kapitel"
     }
   ],
-  'links': [
+  "links": [
     {
-      'source': 1,
-      'target': 105
+      "source": 1,
+      "target": 105
     },
     {
-      'source': 2,
-      'target': 1
+      "source": 2,
+      "target": 1
     },
     {
-      'source': 3,
-      'target': 1
+      "source": 3,
+      "target": 1
     },
     {
-      'source': 4,
-      'target': 105
+      "source": 4,
+      "target": 105
     },
     {
-      'source': 4,
-      'target': 7
+      "source": 4,
+      "target": 7
     },
     {
-      'source': 5,
-      'target': 1
+      "source": 5,
+      "target": 1
     },
     {
-      'source': 6,
-      'target': 1
+      "source": 6,
+      "target": 1
     },
     {
-      'source': 7,
-      'target': 105
+      "source": 7,
+      "target": 105
     },
     {
-      'source': 8,
-      'target': 7
+      "source": 8,
+      "target": 7
     },
     {
-      'source': 21,
-      'target': 105
+      "source": 21,
+      "target": 105
     },
     {
-      'source': 9,
-      'target': 105
+      "source": 9,
+      "target": 105
     },
     {
-      'source': 9,
-      'target': 21
+      "source": 9,
+      "target": 21
     },
     {
-      'source': 10,
-      'target': 106
+      "source": 10,
+      "target": 106
     },
     {
-      'source': 11,
-      'target': 14
+      "source": 11,
+      "target": 14
     },
     {
-      'source': 12,
-      'target': 106
+      "source": 12,
+      "target": 106
     },
     {
-      'source': 12,
-      'target': 15
+      "source": 12,
+      "target": 15
     },
     {
-      'source': 12,
-      'target': 17
+      "source": 12,
+      "target": 17
     },
     {
-      'source': 12,
-      'target': 19
+      "source": 12,
+      "target": 19
     },
     {
-      'source': 12,
-      'target': 20
+      "source": 12,
+      "target": 20
     },
     {
-      'source': 13,
-      'target': 14
+      "source": 13,
+      "target": 14
     },
     {
-      'source': 13,
-      'target': 15
+      "source": 13,
+      "target": 15
     },
     {
-      'source': 14,
-      'target': 106
+      "source": 14,
+      "target": 106
     },
     {
-      'source': 15,
-      'target': 106
+      "source": 15,
+      "target": 106
     },
     {
-      'source': 16,
-      'target': 106
+      "source": 16,
+      "target": 106
     },
     {
-      'source': 17,
-      'target': 18
+      "source": 17,
+      "target": 18
     },
     {
-      'source': 18,
-      'target': 106
+      "source": 18,
+      "target": 106
     },
     {
-      'source': 19,
-      'target': 18
+      "source": 19,
+      "target": 18
     },
     {
-      'source': 20,
-      'target': 18
+      "source": 20,
+      "target": 18
     },
     {
-      'source': 22,
-      'target': 107
+      "source": 22,
+      "target": 107
     },
     {
-      'source': 23,
-      'target': 107
+      "source": 23,
+      "target": 107
     },
     {
-      'source': 23,
-      'target': 16
+      "source": 23,
+      "target": 16
     },
     {
-      'source': 24,
-      'target': 25
+      "source": 24,
+      "target": 25
     },
     {
-      'source': 25,
-      'target': 107
+      "source": 25,
+      "target": 107
     },
     {
-      'source': 26,
-      'target': 27
+      "source": 26,
+      "target": 27
     },
     {
-      'source': 26,
-      'target': 28
+      "source": 26,
+      "target": 28
     },
     {
-      'source': 26,
-      'target': 29
+      "source": 26,
+      "target": 29
     },
     {
-      'source': 26,
-      'target': 30
+      "source": 26,
+      "target": 30
     },
     {
-      'source': 26,
-      'target': 31
+      "source": 26,
+      "target": 31
     },
     {
-      'source': 27,
-      'target': 107
+      "source": 27,
+      "target": 107
     },
     {
-      'source': 28,
-      'target': 107
+      "source": 28,
+      "target": 107
     },
     {
-      'source': 29,
-      'target': 107
+      "source": 29,
+      "target": 107
     },
     {
-      'source': 29,
-      'target': 25
+      "source": 29,
+      "target": 25
     },
     {
-      'source': 30,
-      'target': 107
+      "source": 30,
+      "target": 107
     },
     {
-      'source': 30,
-      'target': 25
+      "source": 30,
+      "target": 25
     },
     {
-      'source': 31,
-      'target': 32
+      "source": 31,
+      "target": 32
     },
     {
-      'source': 31,
-      'target': 33
+      "source": 31,
+      "target": 33
     },
     {
-      'source': 32,
-      'target': 107
+      "source": 32,
+      "target": 107
     },
     {
-      'source': 33,
-      'target': 107
+      "source": 33,
+      "target": 107
     },
     {
-      'source': 34,
-      'target': 33
+      "source": 34,
+      "target": 33
     },
     {
-      'source': 34,
-      'target': 35
+      "source": 34,
+      "target": 35
     },
     {
-      'source': 35,
-      'target': 107
+      "source": 35,
+      "target": 107
     },
     {
-      'source': 36,
-      'target': 30
+      "source": 36,
+      "target": 30
     },
     {
-      'source': 36,
-      'target': 29
+      "source": 36,
+      "target": 29
     },
     {
-      'source': 36,
-      'target': 24
+      "source": 36,
+      "target": 24
     },
     {
-      'source': 37,
-      'target': 35
+      "source": 37,
+      "target": 35
     },
     {
-      'source': 38,
-      'target': 107
+      "source": 38,
+      "target": 107
     },
     {
-      'source': 39,
-      'target': 35
+      "source": 39,
+      "target": 35
     },
     {
-      'source': 39,
-      'target': 29
+      "source": 39,
+      "target": 29
     },
     {
-      'source': 39,
-      'target': 30
+      "source": 39,
+      "target": 30
     },
     {
-      'source': 40,
-      'target': 23
+      "source": 40,
+      "target": 23
     },
     {
-      'source': 41,
-      'target': 33
+      "source": 41,
+      "target": 33
     },
     {
-      'source': 42,
-      'target': 25
+      "source": 42,
+      "target": 25
     },
     {
-      'source': 42,
-      'target': 33
+      "source": 42,
+      "target": 33
     },
     {
-      'source': 43,
-      'target': 26
+      "source": 43,
+      "target": 26
     },
     {
-      'source': 43,
-      'target': 44
+      "source": 43,
+      "target": 44
     },
     {
-      'source': 44,
-      'target': 108
+      "source": 44,
+      "target": 108
     },
     {
-      'source': 45,
-      'target': 108
+      "source": 45,
+      "target": 108
     },
     {
-      'source': 46,
-      'target': 45
+      "source": 46,
+      "target": 45
     },
     {
-      'source': 47,
-      'target': 45
+      "source": 47,
+      "target": 45
     },
     {
-      'source': 48,
-      'target': 49
+      "source": 48,
+      "target": 49
     },
     {
-      'source': 48,
-      'target': 50
+      "source": 48,
+      "target": 50
     },
     {
-      'source': 49,
-      'target': 108
+      "source": 49,
+      "target": 108
     },
     {
-      'source': 50,
-      'target': 108
+      "source": 50,
+      "target": 108
     },
     {
-      'source': 50,
-      'target': 49
+      "source": 50,
+      "target": 49
     },
     {
-      'source': 51,
-      'target': 52
+      "source": 51,
+      "target": 52
     },
     {
-      'source': 52,
-      'target': 49
+      "source": 52,
+      "target": 49
     },
     {
-      'source': 52,
-      'target': 108
+      "source": 52,
+      "target": 108
     },
     {
-      'source': 53,
-      'target': 52
+      "source": 53,
+      "target": 52
     },
     {
-      'source': 54,
-      'target': 108
+      "source": 54,
+      "target": 108
     },
     {
-      'source': 54,
-      'target': 53
+      "source": 54,
+      "target": 53
     },
     {
-      'source': 54,
-      'target': 52
+      "source": 54,
+      "target": 52
     },
     {
-      'source': 55,
-      'target': 108
+      "source": 55,
+      "target": 108
     },
     {
-      'source': 56,
-      'target': 44
+      "source": 56,
+      "target": 44
     },
     {
-      'source': 56,
-      'target': 45
+      "source": 56,
+      "target": 45
     },
     {
-      'source': 56,
-      'target': 49
+      "source": 56,
+      "target": 49
     },
     {
-      'source': 56,
-      'target': 50
+      "source": 56,
+      "target": 50
     },
     {
-      'source': 56,
-      'target': 52
+      "source": 56,
+      "target": 52
     },
     {
-      'source': 56,
-      'target': 54
+      "source": 56,
+      "target": 54
     },
     {
-      'source': 57,
-      'target': 18
+      "source": 57,
+      "target": 18
     },
     {
-      'source': 57,
-      'target': 44
+      "source": 57,
+      "target": 44
     },
     {
-      'source': 58,
-      'target': 50
+      "source": 58,
+      "target": 50
     },
     {
-      'source': 58,
-      'target': 49
+      "source": 58,
+      "target": 49
     },
     {
-      'source': 59,
-      'target': 54
+      "source": 59,
+      "target": 54
     },
     {
-      'source': 59,
-      'target': 52
+      "source": 59,
+      "target": 52
     },
     {
-      'source': 60,
-      'target': 48
+      "source": 60,
+      "target": 48
     },
     {
-      'source': 60,
-      'target': 61
+      "source": 60,
+      "target": 61
     },
     {
-      'source': 60,
-      'target': 62
+      "source": 60,
+      "target": 62
     },
     {
-      'source': 60,
-      'target': 63
+      "source": 60,
+      "target": 63
     },
     {
-      'source': 61,
-      'target': 108
+      "source": 61,
+      "target": 108
     },
     {
-      'source': 61,
-      'target': 49
+      "source": 61,
+      "target": 49
     },
     {
-      'source': 62,
-      'target': 108
+      "source": 62,
+      "target": 108
     },
     {
-      'source': 62,
-      'target': 49
+      "source": 62,
+      "target": 49
     },
     {
-      'source': 63,
-      'target': 108
+      "source": 63,
+      "target": 108
     },
     {
-      'source': 64,
-      'target': 65
+      "source": 64,
+      "target": 65
     },
     {
-      'source': 64,
-      'target': 66
+      "source": 64,
+      "target": 66
     },
     {
-      'source': 65,
-      'target': 109
+      "source": 65,
+      "target": 109
     },
     {
-      'source': 66,
-      'target': 67
+      "source": 66,
+      "target": 67
     },
     {
-      'source': 66,
-      'target': 68
+      "source": 66,
+      "target": 68
     },
     {
-      'source': 67,
-      'target': 109
+      "source": 67,
+      "target": 109
     },
     {
-      'source': 68,
-      'target': 109
+      "source": 68,
+      "target": 109
     },
     {
-      'source': 69,
-      'target': 68
+      "source": 69,
+      "target": 68
     },
     {
-      'source': 70,
-      'target': 68
+      "source": 70,
+      "target": 68
     },
     {
-      'source': 70,
-      'target': 55
+      "source": 70,
+      "target": 55
     },
     {
-      'source': 71,
-      'target': 109
+      "source": 71,
+      "target": 109
     },
     {
-      'source': 72,
-      'target': 71
+      "source": 72,
+      "target": 71
     },
     {
-      'source': 73,
-      'target': 65
+      "source": 73,
+      "target": 65
     },
     {
-      'source': 73,
-      'target': 71
+      "source": 73,
+      "target": 71
     },
     {
-      'source': 74,
-      'target': 65
+      "source": 74,
+      "target": 65
     },
     {
-      'source': 75,
-      'target': 71
+      "source": 75,
+      "target": 71
     },
     {
-      'source': 76,
-      'target': 63
+      "source": 76,
+      "target": 63
     },
     {
-      'source': 76,
-      'target': 77
+      "source": 76,
+      "target": 77
     },
     {
-      'source': 76,
-      'target': 109
+      "source": 76,
+      "target": 109
     },
     {
-      'source': 76,
-      'target': 74
+      "source": 76,
+      "target": 74
     },
     {
-      'source': 77,
-      'target': 76
+      "source": 77,
+      "target": 76
     },
     {
-      'source': 78,
-      'target': 109
+      "source": 78,
+      "target": 109
     },
     {
-      'source': 78,
-      'target': 76
+      "source": 78,
+      "target": 76
     },
     {
-      'source': 78,
-      'target': 74
+      "source": 78,
+      "target": 74
     },
     {
-      'source': 79,
-      'target': 80
+      "source": 79,
+      "target": 80
     },
     {
-      'source': 79,
-      'target': 81
+      "source": 79,
+      "target": 81
     },
     {
-      'source': 79,
-      'target': 82
+      "source": 79,
+      "target": 82
     },
     {
-      'source': 79,
-      'target': 83
+      "source": 79,
+      "target": 83
     },
     {
-      'source': 80,
-      'target': 109
+      "source": 80,
+      "target": 109
     },
     {
-      'source': 81,
-      'target': 109
+      "source": 81,
+      "target": 109
     },
     {
-      'source': 82,
-      'target': 109
+      "source": 82,
+      "target": 109
     },
     {
-      'source': 82,
-      'target': 81
+      "source": 82,
+      "target": 81
     },
     {
-      'source': 83,
-      'target': 109
+      "source": 83,
+      "target": 109
     },
     {
-      'source': 84,
-      'target': 83
+      "source": 84,
+      "target": 83
     },
     {
-      'source': 85,
-      'target': 86
+      "source": 85,
+      "target": 86
     },
     {
-      'source': 86,
-      'target': 109
+      "source": 86,
+      "target": 109
     },
     {
-      'source': 87,
-      'target': 86
+      "source": 87,
+      "target": 86
     },
     {
-      'source': 87,
-      'target': 71
+      "source": 87,
+      "target": 71
     },
     {
-      'source': 88,
-      'target': 90
+      "source": 88,
+      "target": 90
     },
     {
-      'source': 88,
-      'target': 91
+      "source": 88,
+      "target": 91
     },
     {
-      'source': 89,
-      'target': 88
+      "source": 89,
+      "target": 88
     },
     {
-      'source': 90,
-      'target': 109
+      "source": 90,
+      "target": 109
     },
     {
-      'source': 91,
-      'target': 109
+      "source": 91,
+      "target": 109
     },
     {
-      'source': 91,
-      'target': 90
+      "source": 91,
+      "target": 90
     },
     {
-      'source': 92,
-      'target': 93
+      "source": 92,
+      "target": 93
     },
     {
-      'source': 92,
-      'target': 94
+      "source": 92,
+      "target": 94
     },
     {
-      'source': 93,
-      'target': 109
+      "source": 93,
+      "target": 109
     },
     {
-      'source': 94,
-      'target': 109
+      "source": 94,
+      "target": 109
     },
     {
-      'source': 95,
-      'target': 86
+      "source": 95,
+      "target": 86
     },
     {
-      'source': 95,
-      'target': 90
+      "source": 95,
+      "target": 90
     },
     {
-      'source': 95,
-      'target': 91
+      "source": 95,
+      "target": 91
     },
     {
-      'source': 96,
-      'target': 86
+      "source": 96,
+      "target": 86
     },
     {
-      'source': 97,
-      'target': 90
+      "source": 97,
+      "target": 90
     },
     {
-      'source': 97,
-      'target': 91
+      "source": 97,
+      "target": 91
     },
     {
-      'source': 98,
-      'target': 109
+      "source": 98,
+      "target": 109
     },
     {
-      'source': 98,
-      'target': 49
+      "source": 98,
+      "target": 49
     },
     {
-      'source': 98,
-      'target': 95
+      "source": 98,
+      "target": 95
     },
     {
-      'source': 99,
-      'target': 100
+      "source": 99,
+      "target": 100
     },
     {
-      'source': 99,
-      'target': 101
+      "source": 99,
+      "target": 101
     },
     {
-      'source': 99,
-      'target': 102
+      "source": 99,
+      "target": 102
     },
     {
-      'source': 100,
-      'target': 109
+      "source": 100,
+      "target": 109
     },
     {
-      'source': 100,
-      'target': 86
+      "source": 100,
+      "target": 86
     },
     {
-      'source': 101,
-      'target': 100
+      "source": 101,
+      "target": 100
     },
     {
-      'source': 102,
-      'target': 109
+      "source": 102,
+      "target": 109
     },
     {
-      'source': 103,
-      'target': 0
+      "source": 103,
+      "target": 0
     },
     {
-      'source': 104,
-      'target': 103
+      "source": 104,
+      "target": 103
     },
     {
-      'source': 105,
-      'target': 0
+      "source": 105,
+      "target": 0
     },
     {
-      'source': 106,
-      'target': 0
+      "source": 106,
+      "target": 0
     },
     {
-      'source': 107,
-      'target': 0
+      "source": 107,
+      "target": 0
     },
     {
-      'source': 108,
-      'target': 0
+      "source": 108,
+      "target": 0
     },
     {
-      'source': 109,
-      'target': 0
+      "source": 109,
+      "target": 0
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/datasets/space.json b/datasets/space.json
index 3fbe564..78fed00 100644
--- a/datasets/space.json
+++ b/datasets/space.json
@@ -2,8 +2,8 @@
     "nodes": [
         {
             "id": 1,
-            "name": "Einführung",
-            "description": "Eine Einführung in die Algorithmen und Datenstrukturen\\n+ Links zu Video und Folien",
+            "name": "Begrüßung und Organisatorisches",
+            "description": "Eine Einführung in die Algorithmen und Datenstrukturen",
             "type": "Vorlesung"
         },
         {
@@ -21,13 +21,13 @@
         {
             "id": 4,
             "name": "Algorithmus-Definition",
-            "description": "“Ein Algorithmus ist eine aus endlich vielen Schritten bestehende eindeutige Handlungsvorschrift zur Lösung eines Problems oder einer Klasse von Problemen.”-Wikipedia. Dabei wird als Input eine Problembeschreibung gegeben und durch Anwendung des Algorithmus eine fertige Lösung des Problems ermittelt. Oft spielt die Laufzeit des Algorithmus eine große Rolle. Sie beschreibt, wie viele einzelne Schritte nötig sind um das Problem zu lösen, in Abhängigkeit von der Größe des Problems.",
+            "description": "Zitat: 'Ein Algorithmus ist eine aus endlich vielen Schritten bestehende eindeutige Handlungsvorschrift zur Lösung eines Problems oder einer Klasse von Problemen.'-Wikipedia. Dabei wird als Input eine Problembeschreibung gegeben und durch Anwendung des Algorithmus eine fertige Lösung des Problems ermittelt. Oft spielt die Laufzeit des Algorithmus eine große Rolle. Sie beschreibt, wie viele einzelne Schritte nötig sind um das Problem zu lösen, in Abhängigkeit von der Größe des Problems.",
             "type": "Definition"
         },
         {
             "id": 5,
             "name": "Kofferpacken",
-            "description": "Kann ich alle meine Gepäckstücke auf zwei gleich große Koffer aufteilen? Gegeben: Eine Menge von n Objekten, jedes mit\\neiner Größe li; Gesamtgröße ∑ li = 2K\\nGesucht: Eine Verteilung auf zwei Koffer der Größe K",
+            "description": "Kann ich alle meine Gepäckstücke auf zwei gleich große Koffer aufteilen? <br>Gegeben: Eine Menge von n Objekten, jedes mit einer Größe li; <br>Gesamtgröße ∑ li = 2K<br>Gesucht: Eine Verteilung auf zwei Koffer der Größe K",
             "type": "Beispiel"
         },
         {
@@ -38,8 +38,8 @@
         },
         {
             "id": 7,
-            "name": "Algorithmen und Datenstrukturen",
-            "description": "In dieser Vorlesung wird der Begriff 'Algorithmus' definiert und erklärt.\\n+ Links zu Video und Folien",
+            "name": "Einführung des Algorithmusbegriffs",
+            "description": "In dieser Vorlesung wird der Begriff 'Algorithmus' definiert und erklärt.",
             "type": "Vorlesung"
         },
         {
@@ -51,19 +51,19 @@
         {
             "id": 21,
             "name": "Organisation und Pseudocode",
-            "description": "In dieser Ãœbung haben wir noch einmal organisatorische Dinge besprochen und uns mit dem Thema Pseudocode auseinandergesetzt.\\n+ Links zu Video und Folien",
+            "description": "In dieser Ãœbung haben wir noch einmal organisatorische Dinge besprochen und uns mit dem Thema Pseudocode auseinandergesetzt.",
             "type": "Ãœbung"
         },
         {
             "id": 9,
             "name": "Pseudocode",
-            "description": "Pseudocode ist eine Art Algorithmen einigermaßen einheitlich zu notieren. Dabei werden zwar Schlüsselwörter genutzt um eine gewisse Einheitlichkeit zu bieten und gleichzeitig die Logik zu beschreiben, allerdings geht es noch nicht darum einen compilierbaren Code mit korrekter Syntax zu schreiben.\\n+ Link zu Pseudocodeblatt, Übung 1",
+            "description": "Pseudocode ist eine Art Algorithmen einigermaßen einheitlich zu notieren. Dabei werden zwar Schlüsselwörter genutzt um eine gewisse Einheitlichkeit zu bieten und gleichzeitig die Logik zu beschreiben, allerdings geht es noch nicht darum einen compilierbaren Code mit korrekter Syntax zu schreiben.",
             "type": "Definition"
         },
         {
             "id": 10,
             "name": "Einleitung in die Graphen",
-            "description": "Eine Einleitung in die Welt der Graphen am wohl bekanntesten Beispiel, dem Haus des Nikolaus.\\n+ Links zu Video und Folien",
+            "description": "Eine Einleitung in die Welt der Graphen am wohl bekanntesten Beispiel, dem Haus des Nikolaus.",
             "type": "Vorlesung"
         },
         {
@@ -81,7 +81,7 @@
         {
             "id": 13,
             "name": "Graphenbegriffe",
-            "description": "Ein Graph besteht aus Knoten und Kanten das sollte inzwischen jeder wissen, doch was parallele Kanten, Schleifen, (geschlossene) Wege, Pfade, Kreise, Eulerwege/-touren, sowie Hamiltonpfade und -kreise sind wird in dieser Vorlesung noch einmal genau definiert.\\n+ Links zu Video und Folien",
+            "description": "Ein Graph besteht aus Knoten und Kanten das sollte inzwischen jeder wissen, doch was parallele Kanten, Schleifen, (geschlossene) Wege, Pfade, Kreise, Eulerwege/-touren, sowie Hamiltonpfade und -kreise sind wird in dieser Vorlesung noch einmal genau definiert.",
             "type": "Vorlesung"
         },
         {
@@ -98,14 +98,14 @@
         },
         {
             "id": 16,
-            "name": "Beweistechniken",
-            "description": "In der Mathematik und auch in der Algorithmik spielen Beweise immer wieder eine große Rolle. Es geht darum Aussagen zu belegen, zu widerlegen oder auf bestimmte Elemente anzuwenden. Dazu gibt es verschiedene Beweistechniken, welche ihr hier finden könnt:\\n+ Link zu Beweisblatt, Übung 2",
+            "name": "Beweistechniken Teil 1",
+            "description": "In der Mathematik und auch in der Algorithmik spielen Beweise immer wieder eine große Rolle. Es geht darum Aussagen zu belegen, zu widerlegen oder auf bestimmte Elemente anzuwenden. Dazu gibt es verschiedene Beweistechniken, welche ihr hier finden könnt:",
             "type": "Ãœbung"
         },
         {
             "id": 17,
-            "name": "Eulertouren",
-            "description": "In dieser Vorlesung werden notwendige Bedingungen für Eulertouren erleutert. Zusätzlich wird das Kapitel 2 noch einmal zusammengefasst und es werden Algorithmen eingeführt um die uns bisher bekannten Probleme zu lösen.\\n+ Links zu Video und Folien",
+            "name": "Bedingungen für Eulertouren",
+            "description": "In dieser Vorlesung werden notwendige Bedingungen für Eulertouren erleutert. Zusätzlich wird das Kapitel 2 noch einmal zusammengefasst und es werden Algorithmen eingeführt um die uns bisher bekannten Probleme zu lösen.",
             "type": "Vorlesung"
         },
         {
@@ -123,25 +123,25 @@
         {
             "id": 20,
             "name": "Algorithmus von Fleury",
-            "description": "Dieser Algorithmus(2.13) erhält als Input einen Graphen G mit höchstens 2 ungeraden Knoten und liefert als Output einen Weg in G. Der Algorithmus hat als Grundlage Algorithmus 2.7 zum Finden von Wegen. Auch lässt sich zeigen, dass man mit diesem Algorithmus eine Eulertour/einen Eulerweg finden kann",
+            "description": "Dieser Algorithmus(2.13) erhält als Input einen Graphen G mit höchstens 2 ungeraden Knoten und liefert als Output einen Weg in G. Der Algorithmus hat als Grundlage Algorithmus 2.7 zum Finden von Wegen. Auch lässt sich zeigen, dass man mit diesem Algorithmus eine Eulertour/einen Eulerweg finden kann.",
             "type": "Algorithmus"
         },
         {
             "id": 22,
             "name": "Anwendung von Graphen",
-            "description": "In dieser Vorlesung geht es um den Einsatzzweck von Graphen und es wird am Beispiel der Erdös- und der Kevin Bacon Zahl gezeigt, welche Zusammenhänge dargestellt werden können.\\n+ Links zu Video und Folien",
+            "description": "In dieser Vorlesung geht es um den Einsatzzweck von Graphen und es wird am Beispiel der Erdös- und der Kevin Bacon Zahl gezeigt, welche Zusammenhänge dargestellt werden können.",
             "type": "Vorlesung"
         },
         {
             "id": 23,
             "name": "Beweistechniken Teil 2",
-            "description": "In dieser Übung geht es um die Beweistechnik der vollständigen Induktion. Diese ist die wohl meist benutzte Beweistechnik in der Algorithmik. Auch werden Anwendungsbeispiele wie z.B. die Gauß'sche Summenformel oder der Zusammenhang in Graphen  erläutert.\\n+ Links zu Video und Folien/Notizen",
+            "description": "In dieser Übung geht es um die Beweistechnik der vollständigen Induktion. Diese ist die wohl meist benutzte Beweistechnik in der Algorithmik. Auch werden Anwendungsbeispiele wie z.B. die Gauß'sche Summenformel oder der Zusammenhang in Graphen  erläutert.",
             "type": "Ãœbung"
         },
         {
             "id": 24,
             "name": "Graphenscan",
-            "description": "In dieser Vorlesung wird der Graphenscanalgorithmus vorgestellt um Zusammenhangskomponenten in Graphen zu finden.\\n+ Links zu Video und Folien/Notizen/Beweis",
+            "description": "In dieser Vorlesung wird der Graphenscanalgorithmus vorgestellt um Zusammenhangskomponenten in Graphen zu finden.",
             "type": "Vorlesung"
         },
         {
@@ -153,7 +153,7 @@
         {
             "id": 26,
             "name": "Datenstrukturen Teil 1",
-            "description": "In dieser Vorlesung werden die Datenstrukturen Warteschlange (First In - First Out) und Stapel (Last In - First Out) vorgestellt. Außerdem geht es um ihre Rolle für Algorithmen und wie man sie implementieren kann. Das ganze wird am Beispiel des Graphscan Algorithmus gezeigt und somit werden auch Breiten- und Tiefensuche eingeführt.\\n+ Links zu Video und Folien/Beispiel",
+            "description": "In dieser Vorlesung werden die Datenstrukturen Warteschlange (First In - First Out) und Stapel (Last In - First Out) vorgestellt. Außerdem geht es um ihre Rolle für Algorithmen und wie man sie implementieren kann. Das ganze wird am Beispiel des Graphscan Algorithmus gezeigt und somit werden auch Breiten- und Tiefensuche eingeführt.",
             "type": "Vorlesung"
         },
         {
@@ -183,7 +183,7 @@
         {
             "id": 31,
             "name": "Datenstrukturen Teil 2",
-            "description": "In dieser Vorlesung geht es einerseits um die Anwendung der Breitensuche, andererseits werden noch 2 weitere Datenstrukturen eingeführt: Die Inzidenz/-Adjazenzmatrix, sowie die Kantenliste\\n+ Links zu Video und Folien/Notizen",
+            "description": "In dieser Vorlesung geht es einerseits um die Anwendung der Breitensuche, andererseits werden noch 2 weitere Datenstrukturen eingeführt: Die Inzidenz/-Adjazenzmatrix, sowie die Kantenliste.",
             "type": "Vorlesung"
         },
         {
@@ -201,7 +201,7 @@
         {
             "id": 34,
             "name": "Wachstum/O-Notation",
-            "description": "In dieser Vorlesung wird noch einmal mit den Adjazenz- und Kantenlisten abgeschlossen. Außerdem schauen wir uns einmal das Wachstum von Funktionen an und definieren und die O-Notation um damit zu arbeiten.\\n+ Links zu Video und Folien/Notizen",
+            "description": "In dieser Vorlesung wird noch einmal mit den Adjazenz- und Kantenlisten abgeschlossen. Außerdem schauen wir uns einmal das Wachstum von Funktionen an und definieren und die O-Notation um damit zu arbeiten.",
             "type": "Vorlesung"
         },
         {
@@ -224,14 +224,14 @@
         },
         {
             "id": 38,
-            "name": "Wiederholung oder\\nSuche in Graphen Zusammenfassung",
-            "description": "Noch einmal ein Rückblick auf alles, was bisher in 'Kapitel 3: Suche in Graphen' passiert ist. \\n+ Links zu Video und Folien",
+            "name": "Wiederholung: Suche in Graphen",
+            "description": "Noch einmal ein Rückblick auf alles, was bisher in 'Kapitel 3: Suche in Graphen' passiert ist. ",
             "type": "Vorlesung"
         },
         {
             "id": 39,
             "name": "Eigenschaften von DFS und BFS",
-            "description": "In dieser Vorlesung betrachten wir die Breiten- und Tiefensuche im Hinblick auf ihre Laufzeit. Dabei wird anschaulich, wie die Algorithmen arbeiten, wann man sie am besten nutzen sollte und wie man Laufzeiten beweisen kann.\\n+ Links zu Video und Folien/Notizen",
+            "description": "In dieser Vorlesung betrachten wir die Breiten- und Tiefensuche im Hinblick auf ihre Laufzeit. Dabei wird anschaulich, wie die Algorithmen arbeiten, wann man sie am besten nutzen sollte und wie man Laufzeiten beweisen kann.",
             "type": "Vorlesung"
         },
         {
@@ -254,8 +254,8 @@
         },
         {
             "id": 43,
-            "name": "Dynamische Datenstrukturen",
-            "description": "In dieser Vorlesung beginnen wir dynamische Datenstrukturen einzuführen. Es werden Stapel, Warteschlangen und verkettete Listen vorgestellt. Außerdem beschäftigen wir uns mit binärer Suche.\\n+ Links zu Video und Folien",
+            "name": "Verschiedene dynamische Datenstrukturen",
+            "description": "In dieser Vorlesung beginnen wir dynamische Datenstrukturen einzuführen. Es werden Stapel, Warteschlangen und verkettete Listen vorgestellt. Außerdem beschäftigen wir uns mit binärer Suche.",
             "type": "Vorlesung"
         },
         {
@@ -285,7 +285,7 @@
         {
             "id": 48,
             "name": "Binäre Suchbäume",
-            "description": "In dieser Vorlesung beschäftigen wir uns genauer mit binären Suchbäumen und den darauf anwendbaren Operationen, wie Maximum, Minimum, einfügen und löschen von Knoten, sowie mit der binären Suche.\\n+ Links zu Video und Folien",
+            "description": "In dieser Vorlesung beschäftigen wir uns genauer mit binären Suchbäumen und den darauf anwendbaren Operationen, wie Maximum, Minimum, einfügen und löschen von Knoten, sowie mit der binären Suche.",
             "type": "Vorlesung"
         },
         {
@@ -303,7 +303,7 @@
         {
             "id": 51,
             "name": "AVL-Bäume",
-            "description": "In dieser Vorlesung beschäftigen wir uns mit speziellen binären Suchbäumen, den AVL-Bäumen und ihren Eigenschaften.\\n+ Links zu Video und Folien/Notizen",
+            "description": "In dieser Vorlesung beschäftigen wir uns mit speziellen binären Suchbäumen, den AVL-Bäumen und ihren Eigenschaften.",
             "type": "Vorlesung"
         },
         {
@@ -315,7 +315,7 @@
         {
             "id": 53,
             "name": "dyn. Operationen auf AVL-Bäumen",
-            "description": "In dieser Vorlesung beschäftigen wir uns mit dem Erhalt der AVL-Eigenschaft eines binären Suchbaumes bei Einfüge- und Löschoperationen. Außerdem werfen wir einen Blick auf die Fibonacci-Zahlen.\\n+ Links zu Video und Folien",
+            "description": "In dieser Vorlesung beschäftigen wir uns mit dem Erhalt der AVL-Eigenschaft eines binären Suchbaumes bei Einfüge- und Löschoperationen. Außerdem werfen wir einen Blick auf die Fibonacci-Zahlen.",
             "type": "Vorlesung"
         },
         {
@@ -344,7 +344,7 @@
         },
         {
             "id": 58,
-            "name": "Grundoperationen Suchbaum",
+            "name": "Beispiel Suchbaumoperationen",
             "description": "In diesem Teil der Übung werden einmal die Operationen Einfügen, Suchen, Vorgänger/Nachfolger finden, löschen und verschmelzen von binären Suchbäumen geübt.",
             "type": "Beispiel"
         },
@@ -357,13 +357,13 @@
         {
             "id": 60,
             "name": "Dynamische Datenstrukturen 2",
-            "description": "In dieser Vorlesung schauen wir noch einmal auf das bisher in Kapitel 4 gelernte zurück. Außerdem geben wir einen Überblick über einige weitere dynamische Datenstrukturen wie Rot-Scharz-Bäumme, B-Bäume und Heaps.\\n+ Links zu Video und Folien",
+            "description": "In dieser Vorlesung schauen wir noch einmal auf das bisher in Kapitel 4 gelernte zurück. Außerdem geben wir einen Überblick über einige weitere dynamische Datenstrukturen wie Rot-Scharz-Bäumme, B-Bäume und Heaps.",
             "type": "Vorlesung"
         },
         {
             "id": 61,
             "name": "Rot-Schwarz-Bäume",
-            "description": "Ein binärer Suchbaum heißt Rot-Schwarz-Baum, wenn er die folgenden Eigenschaften erfüllt:\\n1. Jeder Knoten ist entweder rot oder schwarz.\\n2. Die Wurzel ist schwarz.\\n3. Jedes Blatt (NIL) ist schwarz.\\n4. Wenn ein Knoten rot ist, sind seine beiden Kinder schwarz.\\n5. Für jeden Knoten enthalten alle Pfade nach unten zu einem Blatt des Teilbaumes die gleiche Anzahl schwarzer Knoten.",
+            "description": "Ein binärer Suchbaum heißt Rot-Schwarz-Baum, wenn er die folgenden Eigenschaften erfüllt:<br>1. Jeder Knoten ist entweder rot oder schwarz.<br>2. Die Wurzel ist schwarz.<br>3. Jedes Blatt (NIL) ist schwarz.<br>4. Wenn ein Knoten rot ist, sind seine beiden Kinder schwarz.<br>5. Für jeden Knoten enthalten alle Pfade nach unten zu einem Blatt des Teilbaumes die gleiche Anzahl schwarzer Knoten.",
             "type": "Definition"
         },
         {
@@ -380,8 +380,8 @@
         },
         {
             "id": 64,
-            "name": "Sortieren",
-            "description": "In dieser Vorlesung geben wir eine Einführung in das Oberthema Sortieren. Wir stellen außerdem einen Sortieralgorithmus mit dem Namen Mergesort vor und stellen grundlegende Überlegungen zur Laufzeit von Sortieralgorithmen an.\\n+ Links zu Video und Folien/Notizen",
+            "name": "Einführung in das Sortieren",
+            "description": "In dieser Vorlesung geben wir eine Einführung in das Oberthema Sortieren. Wir stellen außerdem einen Sortieralgorithmus mit dem Namen Mergesort vor und stellen grundlegende Überlegungen zur Laufzeit von Sortieralgorithmen an.",
             "type": "Vorlesung"
         },
         {
@@ -393,7 +393,7 @@
         {
             "id": 66,
             "name": "Sortier-Laufzeitschranken",
-            "description": "In dieser Vorlesung leiten wir konkrete Laufzeitschranken für das Problem des Sortierens einer Liste von Zahlen her. Zudem machen wir uns Gedanken über das Lösen von Rekursionsgleichungen.\\n+ Links zu Video und Folien/Notizen",
+            "description": "In dieser Vorlesung leiten wir konkrete Laufzeitschranken für das Problem des Sortierens einer Liste von Zahlen her. Zudem machen wir uns Gedanken über das Lösen von Rekursionsgleichungen.",
             "type": "Vorlesung"
         },
         {
@@ -411,7 +411,7 @@
         {
             "id": 69,
             "name": "Erzeugende Funktionen/Mastertheorem",
-            "description": "In dieser Vorlesung besprechen wir weitere Details zu erzeugenden Funktionen und führen das Master-Theorem ein.\\n+ Links zu Video und Folien/Notizen",
+            "description": "In dieser Vorlesung besprechen wir weitere Details zu erzeugenden Funktionen und führen das Master-Theorem ein.",
             "type": "Vorlesung"
         },
         {
@@ -435,7 +435,7 @@
         {
             "id": 73,
             "name": "Sortieralgorithmen und Master-Theorem",
-            "description": "Wir betrachten ein weiteres Beispiel für Mergesort und leiten erneut die Laufzeit des Sortieralgorithmus her, indem das Master-Theorem benutzt wird. Außerdem betrachten wir einen weiteren Sortieralgorithmus: Heapsort.\\n+ Links zu Video und Folien",
+            "description": "Wir betrachten ein weiteres Beispiel für Mergesort und leiten erneut die Laufzeit des Sortieralgorithmus her, indem das Master-Theorem benutzt wird. Außerdem betrachten wir einen weiteren Sortieralgorithmus: Heapsort.",
             "type": "Ãœbung"
         },
         {
@@ -458,7 +458,7 @@
         },
         {
             "id": 77,
-            "name": "Max-Heaps",
+            "name": "Max-Heaps Anwendung",
             "description": "Hier wird der Algorithmus aus der Ãœbung 6 zum Erstellen eines Max-Heaps einmal an einem Beispiel angewandt.",
             "type": "Beispiel"
         },
@@ -471,7 +471,7 @@
         {
             "id": 79,
             "name": "nichtlineare Rekursionen (Exkurs)",
-            "description": "In dieser Vorlesung haben wir einen Exkurs in die nichtlineare Rekursion gemacht.\\n+ Links zu Video und Folien",
+            "description": "In dieser Vorlesung haben wir einen Exkurs in die nichtlineare Rekursion gemacht.",
             "type": "Vorlesung"
         },
         {
@@ -506,8 +506,8 @@
         },
         {
             "id": 85,
-            "name": "Quick-Sort",
-            "description": "In dieser Vorlesung kehren wir zurück zu Sortieralgorithmen und stellen den Quicksort-Algorithmus vor.\\n+ Links zu Video und Folien/Notizen",
+            "name": "Einführung von Quick-Sort",
+            "description": "In dieser Vorlesung kehren wir zurück zu Sortieralgorithmen und stellen den Quicksort-Algorithmus vor.",
             "type": "Vorlesung"
         },
         {
@@ -525,7 +525,7 @@
         {
             "id": 88,
             "name": "Mediane",
-            "description": "In dieser Vorlesung beschäftigen wir uns mit Medianen.\\n+ Links zu Video und Folien",
+            "description": "In dieser Vorlesung beschäftigen wir uns mit Medianen.",
             "type": "Vorlesung"
         },
         {
@@ -549,7 +549,7 @@
         {
             "id": 92,
             "name": "Sortieralgorithmen Sonderfälle",
-            "description": "In dieser Vorlesung beschäftigen wir uns mit Sonderfällen für Sortieralgorithmen, durch die Sortieren in linearer Zeit ermöglicht wird. Dabei werfen wir einen näheren Blick auf die Sortierverfahren Countingsort und Radixsort.\\n+ Links zu Video und Folien/Notizen",
+            "description": "In dieser Vorlesung beschäftigen wir uns mit Sonderfällen für Sortieralgorithmen, durch die Sortieren in linearer Zeit ermöglicht wird. Dabei werfen wir einen näheren Blick auf die Sortierverfahren Countingsort und Radixsort.",
             "type": "Vorlesung"
         },
         {
@@ -567,7 +567,7 @@
         {
             "id": 95,
             "name": "Quick-Sort, Mediane, kd-Bäume",
-            "description": "In dieser Übung schauen wir uns noch einmal das Sortierverfahren Quicksort an und sprechen über die Berechnung von Medianen. Außerdem schauen wir uns mit den kd-Bäumen eine spezielle Datenstruktur für mehrdimensionale Daten an.\\n+ Links zu Video und Folien",
+            "description": "In dieser Übung schauen wir uns noch einmal das Sortierverfahren Quicksort an und sprechen über die Berechnung von Medianen. Außerdem schauen wir uns mit den kd-Bäumen eine spezielle Datenstruktur für mehrdimensionale Daten an.",
             "type": "Ãœbung"
         },
         {
@@ -591,7 +591,7 @@
         {
             "id": 99,
             "name": "(parallelisierte) Sortierverfahren",
-            "description": "In dieser Vorlesung beenden wir das Kapitel zum Thema Sortieralgorithmen und werfen abschließend einen Blick auf parallelisierte Sortierverfahren.\\n+ Links zu Video und Folien/Notizen",
+            "description": "In dieser Vorlesung beenden wir das Kapitel zum Thema Sortieralgorithmen und werfen abschließend einen Blick auf parallelisierte Sortierverfahren.",
             "type": "Vorlesung"
         },
         {
@@ -615,13 +615,13 @@
         {
             "id": 103,
             "name": "Zusammenfassung",
-            "description": "Diese Vorlesung markiert das Ende der Vorlesungszeit. Wir gehen deshalb noch einmal Rückblickend über die verschiedenen Themen die in den vergangenen Monaten behandelt wurden und geben die Möglichkeit Fragen zu stellen.\\n+ Links zu Video und Folien",
+            "description": "Diese Vorlesung markiert das Ende der Vorlesungszeit. Wir gehen deshalb noch einmal Rückblickend über die verschiedenen Themen die in den vergangenen Monaten behandelt wurden und geben die Möglichkeit Fragen zu stellen.",
             "type": "Vorlesung"
         },
         {
             "id": 104,
             "name": "Klausurvorbereitung",
-            "description": "Die letzte große Übung von AuD mit Spiel, Spaß, Spannung und vielen Fragen.\\n+ Links zu Video und Folien",
+            "description": "Die letzte große Übung von AuD mit Spiel, Spaß, Spannung und vielen Fragen.",
             "type": "Ãœbung"
         },
         {
diff --git a/datasets/xlsxTOjson.ipynb b/datasets/xlsxTOjson.ipynb
index b8766d8..ac31a40 100644
--- a/datasets/xlsxTOjson.ipynb
+++ b/datasets/xlsxTOjson.ipynb
@@ -2,7 +2,7 @@
  "cells": [
   {
    "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": 1,
    "id": "86f8df89-a483-4093-9098-41196f891c64",
    "metadata": {},
    "outputs": [],
@@ -13,7 +13,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": 2,
    "id": "b6873712-56e4-46a9-8bec-031093dd28b1",
    "metadata": {},
    "outputs": [
@@ -24,7 +24,7 @@
      "traceback": [
       "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
       "\u001B[1;31mImportError\u001B[0m                               Traceback (most recent call last)",
-      "\u001B[1;32m~\\AppData\\Local\\Temp/ipykernel_3872/3644074374.py\u001B[0m in \u001B[0;36m<module>\u001B[1;34m\u001B[0m\n\u001B[1;32m----> 1\u001B[1;33m \u001B[0mtable\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mpd\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mread_excel\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m\"AuD-Inhalt2.xlsx\"\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m      2\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n",
+      "\u001B[1;32m~\\AppData\\Local\\Temp/ipykernel_4788/3644074374.py\u001B[0m in \u001B[0;36m<module>\u001B[1;34m\u001B[0m\n\u001B[1;32m----> 1\u001B[1;33m \u001B[0mtable\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mpd\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mread_excel\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m\"AuD-Inhalt2.xlsx\"\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m      2\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n",
       "\u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python38\\site-packages\\pandas\\util\\_decorators.py\u001B[0m in \u001B[0;36mwrapper\u001B[1;34m(*args, **kwargs)\u001B[0m\n\u001B[0;32m    309\u001B[0m                     \u001B[0mstacklevel\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mstacklevel\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m    310\u001B[0m                 )\n\u001B[1;32m--> 311\u001B[1;33m             \u001B[1;32mreturn\u001B[0m \u001B[0mfunc\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m*\u001B[0m\u001B[0margs\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;33m**\u001B[0m\u001B[0mkwargs\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m    312\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m    313\u001B[0m         \u001B[1;32mreturn\u001B[0m \u001B[0mwrapper\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
       "\u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python38\\site-packages\\pandas\\io\\excel\\_base.py\u001B[0m in \u001B[0;36mread_excel\u001B[1;34m(io, sheet_name, header, names, index_col, usecols, squeeze, dtype, engine, converters, true_values, false_values, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, parse_dates, date_parser, thousands, comment, skipfooter, convert_float, mangle_dupe_cols, storage_options)\u001B[0m\n\u001B[0;32m    362\u001B[0m     \u001B[1;32mif\u001B[0m \u001B[1;32mnot\u001B[0m \u001B[0misinstance\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mio\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mExcelFile\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m    363\u001B[0m         \u001B[0mshould_close\u001B[0m \u001B[1;33m=\u001B[0m \u001B[1;32mTrue\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 364\u001B[1;33m         \u001B[0mio\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mExcelFile\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mio\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mstorage_options\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mstorage_options\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mengine\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mengine\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m    365\u001B[0m     \u001B[1;32melif\u001B[0m \u001B[0mengine\u001B[0m \u001B[1;32mand\u001B[0m \u001B[0mengine\u001B[0m \u001B[1;33m!=\u001B[0m \u001B[0mio\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mengine\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m    366\u001B[0m         raise ValueError(\n",
       "\u001B[1;32m~\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python38\\site-packages\\pandas\\io\\excel\\_base.py\u001B[0m in \u001B[0;36m__init__\u001B[1;34m(self, path_or_buffer, engine, storage_options)\u001B[0m\n\u001B[0;32m   1231\u001B[0m         \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mstorage_options\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mstorage_options\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m   1232\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m-> 1233\u001B[1;33m         \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_reader\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_engines\u001B[0m\u001B[1;33m[\u001B[0m\u001B[0mengine\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_io\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mstorage_options\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mstorage_options\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m   1234\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m   1235\u001B[0m     \u001B[1;32mdef\u001B[0m \u001B[0m__fspath__\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
@@ -80,16 +80,22 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "result"
+    "jr = json.dumps(result, ensure_ascii = False)"
    ]
   },
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "841e41aa-edcf-4b6a-b946-e4696b9e5ddc",
-   "metadata": {},
    "outputs": [],
-   "source": []
+   "source": [
+    "print(jr.replace('\\\\n','<br>'))"
+   ],
+   "metadata": {
+    "collapsed": false,
+    "pycharm": {
+     "name": "#%%\n"
+    }
+   }
   }
  ],
  "metadata": {
-- 
GitLab