diff --git a/01_grundlagen/index.html b/01_grundlagen/index.html
deleted file mode 100644
index 10a2675..0000000
--- a/01_grundlagen/index.html
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/02_advanced/.vscode/extensions.json b/02_advanced/.vscode/extensions.json
new file mode 100644
index 0000000..bb659e6
--- /dev/null
+++ b/02_advanced/.vscode/extensions.json
@@ -0,0 +1,15 @@
+{
+ "recommendations": [
+ "kamikillerto.vscode-colorize",
+ "sleistner.vscode-fileutils",
+ "bierner.github-markdown-preview",
+ "bradgashler.htmltagwrap",
+ "zhuangtongfa.material-theme",
+ "techer.open-in-browser",
+ "esbenp.prettier-vscode",
+ "pdconsec.vscode-print",
+ "vscode-icons-team.vscode-icons",
+ "formulahendry.auto-rename-tag",
+ "tomoki1207.pdf"
+ ]
+}
diff --git a/02_advanced/.vscode/marp-theme.css b/02_advanced/.vscode/marp-theme.css
new file mode 100644
index 0000000..90ea8da
--- /dev/null
+++ b/02_advanced/.vscode/marp-theme.css
@@ -0,0 +1,332 @@
+/* @theme marp-theme */
+
+@charset "UTF-8";
+/*!
+ * Marp Dracula theme.
+ * @theme marp-theme
+ * @author Daniel Nicolas Gisolfi & modified by Philippe Botzek
+ *
+ * @auto-scaling true
+ * @size 4:3 960px 720px
+ * @size 16:9 1280px 720px
+ */
+
+@import url('https://fonts.googleapis.com/css?family=Lato:400,900|IBM+Plex+Sans:400,700');
+
+:root {
+ --dracula-background: #282a36;
+ --dracula-current-line: #44475a;
+ --dracula-foreground: #f8f8f2;
+ --dracula-comment: #6272a4;
+ --dracula-cyan: #8be9fd;
+ --dracula-green: #50fa7b;
+ --dracula-orange: #ffb86c;
+ --dracula-pink: #ff79c6;
+ --dracula-purple: #bd93f9;
+ --dracula-red: #ff5555;
+ --dracula-yellow: #f1fa8c;
+}
+
+.hljs {
+ display: block;
+ overflow-x: auto;
+ padding: 0.5em;
+ background: var(--dracula-background);
+}
+
+/* Dracula Foreground */
+.hljs,
+.hljs-subst,
+.hljs-typing,
+.hljs-variable,
+.hljs-template-variable {
+ color: var(--dracula-foreground);
+}
+
+/* Dracula Comment */
+.hljs-comment,
+.hljs-quote,
+.hljs-deletion {
+ color: var(--dracula-comment);
+}
+
+/* Dracula Cyan */
+.hljs-meta .hljs-doctag,
+.hljs-built_in,
+.hljs-selector-tag,
+.hljs-section,
+.hljs-link,
+.hljs-class {
+ color: var(--dracula-cyan);
+}
+
+/* Dracula Green */
+.hljs-title {
+ color: var(--dracula-green);
+}
+
+/* Dracula Orange */
+.hljs-params {
+ color: var(--dracula-orange);
+}
+
+/* Dracula Pink */
+.hljs-keyword {
+ color: var(--dracula-pink);
+}
+
+/* Dracula Purple */
+.hljs-literal,
+.hljs-number {
+ color: var(--dracula-purple);
+}
+
+/* Dracula Red */
+.hljs-regexp {
+ color: var(--dracula-red);
+}
+
+/* Dracula Yellow */
+.hljs-string,
+.hljs-name,
+.hljs-type,
+.hljs-attr,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-addition,
+.hljs-template-tag {
+ color: var(--dracula-yellow);
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-literal,
+.hljs-title,
+.hljs-section,
+.hljs-doctag,
+.hljs-type,
+.hljs-name,
+.hljs-strong {
+ font-weight: bold;
+}
+
+.hljs-params,
+.hljs-emphasis {
+ font-style: italic;
+}
+
+svg[data-marp-fitting='svg'] {
+ max-height: 580px;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin: 0.5em 0 0 0;
+ color: var(--dracula-pink);
+}
+h1 strong,
+h2 strong,
+h3 strong,
+h4 strong,
+h5 strong,
+h6 strong {
+ font-weight: inherit;
+}
+
+h1 {
+ font-size: 1.8em;
+}
+
+h2 {
+ font-size: 1.5em;
+}
+
+h3 {
+ font-size: 1.3em;
+}
+
+h4 {
+ font-size: 1.1em;
+}
+
+h5 {
+ font-size: 1em;
+}
+
+h6 {
+ font-size: 0.9em;
+}
+
+p,
+blockquote {
+ margin: 1em 0 0 0;
+}
+
+ul > li,
+ol > li {
+ margin: 0.3em 0 0 0;
+ color: var(--dracula-cyan);
+}
+ul > li > p,
+ol > li > p {
+ margin: 0.6em 0 0 0;
+}
+
+code {
+ display: inline-block;
+ font-family: 'IBM Plex Mono', monospace;
+ font-size: 0.8em;
+ letter-spacing: 0;
+ margin: -0.1em 0.15em;
+ padding: 0.1em 0.2em;
+ vertical-align: baseline;
+ color: var(--dracula-green);
+}
+
+pre {
+ display: block;
+ margin: 1em 0 0 0;
+ min-height: 1em;
+ overflow: visible;
+}
+pre code {
+ box-sizing: border-box;
+ margin: 0;
+ min-width: 100%;
+ padding: 0.5em;
+ font-size: 0.7em;
+}
+pre code svg[data-marp-fitting='svg'] {
+ max-height: calc(580px - 1em);
+}
+
+blockquote {
+ margin: 1em 0 0 0;
+ padding: 0 1em;
+ position: relative;
+ color: var(--dracula-orange);
+}
+blockquote::after,
+blockquote::before {
+ content: '“';
+ display: block;
+ font-family: 'Times New Roman', serif;
+ font-weight: bold;
+ position: absolute;
+ color: var(--dracula-green);
+}
+blockquote::before {
+ top: 0;
+ left: 0;
+}
+blockquote::after {
+ right: 0;
+ bottom: 0;
+ transform: rotate(180deg);
+}
+blockquote > *:first-child {
+ margin-top: 0;
+}
+
+mark {
+ background: transparent;
+}
+
+table {
+ border-spacing: 0;
+ border-collapse: collapse;
+ margin: 1em 0 0 0;
+}
+table th,
+table td {
+ padding: 0.2em 0.4em;
+ border-width: 1px;
+ border-style: solid;
+}
+
+section {
+ font-size: 35px;
+ font-family: 'IBM Plex Sans';
+ line-height: 1.35;
+ letter-spacing: 1.25px;
+ padding: 70px;
+ color: var(--dracula-foreground);
+ background-color: var(--dracula-background);
+}
+section > *:first-child,
+section > header:first-child + * {
+ margin-top: 0;
+}
+section a,
+section mark {
+ color: var(--dracula-red);
+}
+section code {
+ background: var(--dracula-current-line);
+ color: var(--dracula-current-green);
+}
+section h1 strong,
+section h2 strong,
+section h3 strong,
+section h4 strong,
+section h5 strong,
+section h6 strong {
+ color: var(--dracula-current-line);
+}
+section pre > code {
+ background: var(--dracula-current-line);
+}
+section header,
+section footer,
+section section::after,
+section blockquote::before,
+section blockquote::after {
+ color: var(--dracula-comment);
+}
+section table th,
+section table td {
+ border-color: var(--dracula-current-line);
+}
+section table thead th {
+ background: var(--dracula-current-line);
+ color: var(--dracula-yellow);
+}
+section table tbody > tr:nth-child(even) td,
+section table tbody > tr:nth-child(even) th {
+ background: var(--dracula-current-line);
+}
+
+header,
+footer,
+section::after {
+ box-sizing: border-box;
+ font-size: 66%;
+ height: 70px;
+ line-height: 50px;
+ overflow: hidden;
+ padding: 10px 25px;
+ position: absolute;
+ color: var(--dracula-comment);
+}
+
+header {
+ left: 0;
+ right: 0;
+ top: 0;
+}
+
+footer {
+ left: 0;
+ right: 0;
+ bottom: 0;
+}
+
+section::after {
+ right: 0;
+ bottom: 0;
+ font-size: 80%;
+}
diff --git a/02_advanced/.vscode/settings.json b/02_advanced/.vscode/settings.json
new file mode 100644
index 0000000..3fa021c
--- /dev/null
+++ b/02_advanced/.vscode/settings.json
@@ -0,0 +1,30 @@
+{
+ "workbench.iconTheme": "vscode-icons",
+ "workbench.colorTheme": "One Dark Pro",
+ "prettier.printWidth": 120,
+ "prettier.singleQuote": true,
+ "editor.hover.enabled": "on",
+ "editor.wordWrap": "on",
+ "explorer.confirmDelete": false,
+ "explorer.confirmDragAndDrop": false,
+ "editor.quickSuggestionsDelay": 600,
+ "editor.tabSize": 2,
+ "editor.formatOnSave": true,
+ "emmet.includeLanguages": {
+ "javascript": "javascriptreact",
+ "ejs": "html"
+ },
+ "html.format.unformatted": "wbr,%",
+ "files.associations": {
+ "*.ejs": "html"
+ },
+ "editor.fontFamily": "'MesloLGS NF', Hack, Consolas, 'Courier New', monospace",
+ "oneDarkPro.markdownStyle": false,
+ "explorer.compactFolders": false,
+ "workbench.editor.labelFormat": "short",
+ "editor.hover.delay": 800,
+ "editor.bracketPairColorization.enabled": true,
+ "editor.guides.bracketPairs": "active",
+ "markdown.marp.themes": ["./.vscode/marp-theme.css"],
+ "markdown-preview-github-styles.colorTheme": "light"
+}
diff --git a/02_advanced/.vscode/snippets.code-snippets b/02_advanced/.vscode/snippets.code-snippets
new file mode 100644
index 0000000..259f93d
--- /dev/null
+++ b/02_advanced/.vscode/snippets.code-snippets
@@ -0,0 +1,73 @@
+{
+ "Output HTML Element": {
+ "scope": "html",
+ "prefix": "output",
+ "body": ["
"],
+ "description": "generate a div Element with output alert and alert secondary class"
+ },
+ "Bootstrap html": {
+ "scope": "html",
+ "prefix": "!bs",
+ "body": [
+ "",
+ "",
+ "\t",
+ "\t\t ",
+ "\t\t ",
+ "\t\t$0 ",
+ "\t\t ",
+ "\t",
+ "\t",
+ "\t\t",
+ "\t\t\t",
+ "\t\t\t\t
$0 ",
+ "\t\t\t",
+ "\t\t ",
+ "\t\t",
+ "\t",
+ ""
+ ],
+ "description": "Generate HTML with Bootstrap CDN and script-tag"
+ },
+ "$ und $$ helper function": {
+ "scope": "javascript,typescript",
+ "prefix": "$$$",
+ "body": [
+ "const $ = (qs) => document.querySelector(qs);",
+ "const $$ = (qs) => Array.from(document.querySelectorAll(qs));"
+ ],
+ "description": "$ and $$ shorthand helper function"
+ },
+
+ "JavaScript Dateivorlage": {
+ "scope": "javascript,typescript",
+ "prefix": "vjs",
+ "body": [
+ "'use strict';",
+ "",
+ "(() => {",
+ "",
+ "\t// === DOM & VARS =======",
+ "\tconst DOM = {};",
+ "",
+ "\t// === INIT =============",
+ "\tconst init = () => {",
+ "",
+ "\t}",
+ "",
+ "\t// === EVENTHANDLER =====",
+ "",
+ "\t// === XHR/FETCH ========",
+ "",
+ "\t// === FUNCTIONS ========",
+ "",
+ "\tinit();",
+ "",
+ "})();"
+ ],
+ "description": "JavaScript Dateivorlage"
+ }
+}
diff --git a/02_advanced/agenda.md b/02_advanced/agenda.md
new file mode 100644
index 0000000..0501057
--- /dev/null
+++ b/02_advanced/agenda.md
@@ -0,0 +1,237 @@
+---
+marp: true
+theme: default
+---
+
+## JavaScript Grundlagen Teil 1.
+
+---
+
+#### Tag 01
+
+**Inhalt:**
+
+- Vorstellungsrunde
+- Einrichtung der IDE
+- Tools für die Webentwicklung (Emmet, Markdown, VS-Code, Co-Pilot)
+- Arbeiten mit VSCode
+- Konsolenausgaben mit `console.log()`
+
+**Übungen:**
+
+- Übungen: 1 - 3, Content Factory
+
+---
+
+#### Tag 02
+
+**Inhalt:**
+
+- Dialogfenster in JS `prompt()`, `alert()`, `confirm()`
+- Kommentare in JS
+- Rechnen in JS
+- Datentyp String, Number, Boolean
+- literal und typeof
+- Prioritätsreihenfolge
+
+**Übungen:**
+
+Übung 3 - 6 (Content-Factory bis 1.3.3)
+
+---
+
+#### Tag 03
+
+**Inhalt:**
+
+- Variablen und Konstanten in JS
+- Zusammengesetzte Zuweisungsoperatoren
+- Increment & Decrement
+- Strings verketten mit +
+- Escape-Notation
+- Implizite und explizite Typkonvertierung
+
+**Übungen:**
+
+Übung 7 - 12
+
+---
+
+#### Tag 04
+
+**Inhalt:**
+
+- Escape-Notation
+- Implizite und explizite Typkonvertierung
+- NaN - Paradoxon
+- Math Object
+- Number.toFixed()
+- isNaN
+- Lexikographische Vergleiche
+
+**Übungen:**
+
+Übung 14 - 18
+
+---
+
+#### Tag 05
+
+**Inhalt:**
+
+- Repetition der Inhalte
+- Relationale Operatoren & Vergleichoperatoren
+- **Exkurs: Webseitenstruktur + SASS HTML-Formularfelder**
+- 1:1 Meeting
+
+**Übungen:**
+
+Übung Kontaktformular mit HTML und BS,
+Lektion 10 erarbeiten
+
+---
+
+#### Tag 06
+
+**Inhalt:**
+
+- **Exkurs: HTML Formularfelder mit BS**
+- if else Verzweigung und ternärer Operator
+
+**Übungen:**
+
+Übung 19 - 21 + Kontaktformular
+
+---
+
+#### Tag 07
+
+**Inhalt:**
+
+- logische Operatoren UND und ODER
+- unärer Operator (!)
+- String Methoden
+- Funktionen in JS + mit Übergabeparameter + mit Rückgabewerten
+
+**Übungen:**
+
+Übung 22 - 31
+
+---
+
+#### Tag 08
+
+**Inhalt:**
+
+- Funktionen mit Rückgabewerten
+- Guards, Restparameter, Defaulparameter
+- Array Part 1
+
+**Übungen:**
+
+Übung 32 - 38
+
+---
+
+#### Tag 09
+
+**Inhalt:**
+
+- Array Methoden toSorted, toReversed, toSpliced
+- toSorted, toReversed
+- Array sort mit "compare function"
+- Array: Higher Order Funktionen Part (sort map, forEach, reduce, some, every)
+
+**Übungen:**
+
+Übung 39 - 45 + optionale Übung
+
+---
+
+#### Tag 10
+
+**Inhalt:**
+
+- Array.find und Array.findIndex
+- Alle Array Higher Order Funktionen im Überblick
+- local scoping
+- Git SCM und Windows Terminal einrichten
+
+**Übungen:**
+
+Übung 46 - 48
+
+---
+
+## JavaScript für Fortgeschrittene
+
+---
+
+#### Tag 11
+
+**Inhalt:**
+
+- **Exkurs: Schleifen**
+- Einführung in JS für Fortgeschrittene
+- Objekte in JS
+
+**Übungen:**
+
+Projektarbeit
+Abschlussquiz - JS Grundlagen
+
+---
+
+#### Tag 12
+
+**Inhalt:**
+
+- Destructuring von Objekten und Arrays
+- Rekursion
+
+**Übungen:**
+
+Übung 01 - 10
+
+---
+
+#### Tag 13
+
+**Inhalt:**
+
+- Promises
+- Callback-Hell
+- Installation von node (npm) und Windows Terminal (für Node)
+- **Exkurs: Statische Webseite mit Sass und HTML**
+- **Exkurs: Versionierung mit Github Part I**
+
+**Übungen:**
+
+---
+
+#### Tag 14
+
+**Inhalt:**
+
+- Promise Aufbau
+- Promise in Funktionen
+- File System von Node
+- commonjs vs esm
+- async await
+
+**Übungen:**
+
+Übung 09 - 11
+
+---
+
+#### Tag 15
+
+**Inhalt:**
+
+- Wiederholung der Inhalte
+- Promise.all()
+- **Exkurs: Switch Case Abfragen**
+- **Exkurs: Statische Webseite mit Sass und HTML**
+- **Exkurs: Versionierung mit Github Part I**
+- 1:1 Meeting
diff --git a/02_advanced/docs/schleifen-in-js.pdf b/02_advanced/docs/schleifen-in-js.pdf
new file mode 100644
index 0000000..1568f27
Binary files /dev/null and b/02_advanced/docs/schleifen-in-js.pdf differ
diff --git a/01_grundlagen/linksammlung.md b/02_advanced/linksammlung.md
similarity index 100%
rename from 01_grundlagen/linksammlung.md
rename to 02_advanced/linksammlung.md
diff --git a/02_advanced/unterricht/tag11/01_schleifen/01_for-statement.html b/02_advanced/unterricht/tag11/01_schleifen/01_for-statement.html
new file mode 100644
index 0000000..8296490
--- /dev/null
+++ b/02_advanced/unterricht/tag11/01_schleifen/01_for-statement.html
@@ -0,0 +1,67 @@
+
+
+
+
+
+ JS for-statement (for...Schleife)
+
+
+
+
+
+
JS for-statement (for...Schleife)
+
+ for-statement -
+ Die for Anweisung beschreibt eine Schleife mit drei optionalen Ausdrücken und einer oder
+ mehreren Anweisungen.
+
+
+
+
+
+
diff --git a/02_advanced/unterricht/tag11/01_schleifen/02_for-of-statement.html b/02_advanced/unterricht/tag11/01_schleifen/02_for-of-statement.html
new file mode 100644
index 0000000..dcb05cb
--- /dev/null
+++ b/02_advanced/unterricht/tag11/01_schleifen/02_for-of-statement.html
@@ -0,0 +1,55 @@
+
+
+
+
+
+ JS for- of statement (for...of Schleife)
+
+
+
+
+
+
JS for- of statement (for...of Schleife)
+
+
+ for...of statement
+
+ - Mit dem for...of statement können sogenannte iterable objects durchlaufen werden (Array,
+ Map, Set, das "arguments" Objekt und weitere eingeschlossen), wobei auf jeden gefundenen Wert eigene
+ Statements ausgeführt werden können.
+
+
+
+
+
+
diff --git a/02_advanced/unterricht/tag11/01_schleifen/03_for-in-statement.html b/02_advanced/unterricht/tag11/01_schleifen/03_for-in-statement.html
new file mode 100644
index 0000000..ea684ea
--- /dev/null
+++ b/02_advanced/unterricht/tag11/01_schleifen/03_for-in-statement.html
@@ -0,0 +1,51 @@
+
+
+
+
+
+ JS for...in statement (for...in Schleife)
+
+
+
+
+
+
JS for...in statement (for...in Schleife)
+
+
+ for...in statement
+
+ - iteriert über alle zählbaren String-Eigenschaften eines Objekts (ignoriert Eigenschaften, die durch Symbole
+ gekennzeichnet sind), einschließlich geerbter zählbarer Eigenschaften.
+
+
+
+
+
+
diff --git a/02_advanced/unterricht/tag11/01_schleifen/04_while-statement.html b/02_advanced/unterricht/tag11/01_schleifen/04_while-statement.html
new file mode 100644
index 0000000..fbb3411
--- /dev/null
+++ b/02_advanced/unterricht/tag11/01_schleifen/04_while-statement.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+ JS while - (while - Schleife)
+
+
+
+
+
+
JS while - (while - Schleife)
+
+ while - Schleife
+ - Die while-Anweisung (Engl. statement) beschreibt eine Schleife, die solange durchlaufen
+ wird wie die Schleifenbedingung wahr (Engl. true) ergibt. Die Schleifenbedingung (Engl. condition) wird am
+ Anfang der Schleife ausgewertet.
+
+
+
+
+
+
diff --git a/02_advanced/unterricht/tag11/01_schleifen/05_do-while-statement.html b/02_advanced/unterricht/tag11/01_schleifen/05_do-while-statement.html
new file mode 100644
index 0000000..e1a2a9d
--- /dev/null
+++ b/02_advanced/unterricht/tag11/01_schleifen/05_do-while-statement.html
@@ -0,0 +1,51 @@
+
+
+
+
+
+ JS do...while - (do...while - Schleife)
+
+
+
+
+
+
JS do...while - (do...while - Schleife)
+
+
+ do...while - Schleife
+
+ - Die do...while-Anweisung (Engl. statement) beschreibt eine Schleife, die solange
+ durchlaufen wird wie die Schleifenbedingung wahr (Engl. true) ergibt. Die Schleifenbedingung (Engl. condition)
+ wird am Ende der Schleife ausgewertet.
+
+
+
+
+
+
diff --git a/02_advanced/unterricht/tag11/01_schleifen/schleifen-in-js.pdf b/02_advanced/unterricht/tag11/01_schleifen/schleifen-in-js.pdf
new file mode 100644
index 0000000..1568f27
Binary files /dev/null and b/02_advanced/unterricht/tag11/01_schleifen/schleifen-in-js.pdf differ