diff --git a/README.md b/README.md
index 969d60bf7f170a0e2f5b8826caae395b8a2a6dfc..9e3710dd456879e751e6c43214aa1e5081fd0240 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,9 @@
-# ALP4 Tutorial-10
+# ALP4 Tutorial-11
 
 This branch contains all materials for the 9th tutorial session.
 
 ## Agenda
 
 - Assignment's solution presentation
-- Recap & Discussion: IPC, RPC, HTTP(S)
+- Recap & Discussion: P2P, Cloud Computing
 - Q&A
diff --git a/exercises/hello-html/index.html b/exercises/hello-html/index.html
deleted file mode 100644
index 5c952d4a4a7b8ef9fc20359c491290db3b855c91..0000000000000000000000000000000000000000
--- a/exercises/hello-html/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!-- index.html -->
-<html>
-  <body>
-    <div id="app"></div>
-    <script type="text/javascript">
-        const app = document.getElementById('app');
-        app.innerHTML = '<h1>Hello World!</h1>';
-    </script>
-  </body>
-</html>
diff --git a/slides/images/cover.jpg b/slides/images/cover.jpg
index 59a5db4c02e8022a041c4d7002e273b34d2cd360..c7fd296a000399b9687fbd71842ff9b600aca1b4 100644
Binary files a/slides/images/cover.jpg and b/slides/images/cover.jpg differ
diff --git a/slides/images/dom-to-ui.png b/slides/images/dom-to-ui.png
deleted file mode 100644
index 73e8367a733a8243011d350636b73cb62ab5798b..0000000000000000000000000000000000000000
Binary files a/slides/images/dom-to-ui.png and /dev/null differ
diff --git a/slides/images/html-to-dom.png b/slides/images/html-to-dom.png
deleted file mode 100644
index 2b6aebc8e71b822046308bc2dbf309cedba83791..0000000000000000000000000000000000000000
Binary files a/slides/images/html-to-dom.png and /dev/null differ
diff --git a/slides/images/http-header.png b/slides/images/http-header.png
deleted file mode 100644
index 993d1ba5d0db9fa1b3370fe33c4b09510419b933..0000000000000000000000000000000000000000
Binary files a/slides/images/http-header.png and /dev/null differ
diff --git a/slides/images/https-detailed.webp b/slides/images/https-detailed.webp
deleted file mode 100644
index 92cbce8fa5961bc8ef07099f98bdc1d783002b64..0000000000000000000000000000000000000000
Binary files a/slides/images/https-detailed.webp and /dev/null differ
diff --git a/slides/images/reactjs.webp b/slides/images/reactjs.webp
deleted file mode 100644
index a57a53ab75449b02e5d3a361cd3bb8282c8ea04e..0000000000000000000000000000000000000000
Binary files a/slides/images/reactjs.webp and /dev/null differ
diff --git a/slides/package-lock.json b/slides/package-lock.json
index e402bf49404386e68d1a5de8739423bbdf8fe564..87d8bb0493ff46e636eb7e34c4b5bd1230637a2d 100644
--- a/slides/package-lock.json
+++ b/slides/package-lock.json
@@ -39,9 +39,9 @@
       }
     },
     "node_modules/@antfu/utils": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.4.tgz",
-      "integrity": "sha512-qe8Nmh9rYI/HIspLSTwtbMFPj6dISG6+dJnOguTlPNXtCvS2uezdxscVBb7/3DrmNbQK49TDqpkSQ1chbRGdpQ==",
+      "version": "0.7.5",
+      "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.5.tgz",
+      "integrity": "sha512-dlR6LdS+0SzOAPx/TPRhnoi7hE251OVeT2Snw0RguNbBSbjUHdWr0l3vcUUDg26rEysT89kCbtw1lVorBXLLCg==",
       "funding": {
         "url": "https://github.com/sponsors/antfu"
       }
@@ -58,33 +58,33 @@
       }
     },
     "node_modules/@babel/compat-data": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz",
-      "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==",
+      "version": "7.22.6",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.6.tgz",
+      "integrity": "sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==",
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/core": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz",
-      "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==",
+      "version": "7.22.6",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.6.tgz",
+      "integrity": "sha512-HPIyDa6n+HKw5dEuway3vVAhBboYCtREBMp+IWeseZy6TFtzn6MHkCH2KKYUOC/vKKwgSMHQW4htBOrmuRPXfw==",
       "dependencies": {
         "@ampproject/remapping": "^2.2.0",
         "@babel/code-frame": "^7.22.5",
         "@babel/generator": "^7.22.5",
-        "@babel/helper-compilation-targets": "^7.22.5",
+        "@babel/helper-compilation-targets": "^7.22.6",
         "@babel/helper-module-transforms": "^7.22.5",
-        "@babel/helpers": "^7.22.5",
-        "@babel/parser": "^7.22.5",
+        "@babel/helpers": "^7.22.6",
+        "@babel/parser": "^7.22.6",
         "@babel/template": "^7.22.5",
-        "@babel/traverse": "^7.22.5",
+        "@babel/traverse": "^7.22.6",
         "@babel/types": "^7.22.5",
+        "@nicolo-ribaudo/semver-v6": "^6.3.3",
         "convert-source-map": "^1.7.0",
         "debug": "^4.1.0",
         "gensync": "^1.0.0-beta.2",
-        "json5": "^2.2.2",
-        "semver": "^6.3.0"
+        "json5": "^2.2.2"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -120,15 +120,15 @@
       }
     },
     "node_modules/@babel/helper-compilation-targets": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz",
-      "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==",
+      "version": "7.22.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.6.tgz",
+      "integrity": "sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==",
       "dependencies": {
-        "@babel/compat-data": "^7.22.5",
+        "@babel/compat-data": "^7.22.6",
         "@babel/helper-validator-option": "^7.22.5",
-        "browserslist": "^4.21.3",
-        "lru-cache": "^5.1.1",
-        "semver": "^6.3.0"
+        "@nicolo-ribaudo/semver-v6": "^6.3.3",
+        "browserslist": "^4.21.9",
+        "lru-cache": "^5.1.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -138,9 +138,9 @@
       }
     },
     "node_modules/@babel/helper-create-class-features-plugin": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz",
-      "integrity": "sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==",
+      "version": "7.22.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.6.tgz",
+      "integrity": "sha512-iwdzgtSiBxF6ni6mzVnZCF3xt5qE6cEA0J7nFt8QOAWZ0zjCFceEgpn3vtb2V7WFR6QzP2jmIFOHMTRo7eNJjQ==",
       "dependencies": {
         "@babel/helper-annotate-as-pure": "^7.22.5",
         "@babel/helper-environment-visitor": "^7.22.5",
@@ -149,8 +149,8 @@
         "@babel/helper-optimise-call-expression": "^7.22.5",
         "@babel/helper-replace-supers": "^7.22.5",
         "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
-        "@babel/helper-split-export-declaration": "^7.22.5",
-        "semver": "^6.3.0"
+        "@babel/helper-split-export-declaration": "^7.22.6",
+        "@nicolo-ribaudo/semver-v6": "^6.3.3"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -288,9 +288,9 @@
       }
     },
     "node_modules/@babel/helper-split-export-declaration": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz",
-      "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==",
+      "version": "7.22.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+      "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
       "dependencies": {
         "@babel/types": "^7.22.5"
       },
@@ -323,12 +323,12 @@
       }
     },
     "node_modules/@babel/helpers": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz",
-      "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==",
+      "version": "7.22.6",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz",
+      "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==",
       "dependencies": {
         "@babel/template": "^7.22.5",
-        "@babel/traverse": "^7.22.5",
+        "@babel/traverse": "^7.22.6",
         "@babel/types": "^7.22.5"
       },
       "engines": {
@@ -349,9 +349,9 @@
       }
     },
     "node_modules/@babel/parser": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz",
-      "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==",
+      "version": "7.22.6",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.6.tgz",
+      "integrity": "sha512-EIQu22vNkceq3LbjAq7knDf/UmtI2qbcNI8GRBlijez6TpQLvSodJPYfydQmNA5buwkxxxa/PVI44jjYZ+/cLw==",
       "bin": {
         "parser": "bin/babel-parser.js"
       },
@@ -405,9 +405,9 @@
       }
     },
     "node_modules/@babel/standalone": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.22.5.tgz",
-      "integrity": "sha512-6Lwhzral4YDEbIM3dBC8/w0BMDvOosGBGaJWSORLkerx8byawkmwwzXKUB0jGlI1Zp90+cK2uyTl62UPtLbUjQ==",
+      "version": "7.22.6",
+      "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.22.6.tgz",
+      "integrity": "sha512-xVLT1r+JZMnvt47EmIr7cJb3xUDqHmyc/wr783/+Q+pLJfSVmV8bwwcSjXnqT4ajteUT0CufADWpcqRcwidL4w==",
       "optional": true,
       "engines": {
         "node": ">=6.9.0"
@@ -427,17 +427,17 @@
       }
     },
     "node_modules/@babel/traverse": {
-      "version": "7.22.5",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz",
-      "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==",
+      "version": "7.22.6",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.6.tgz",
+      "integrity": "sha512-53CijMvKlLIDlOTrdWiHileRddlIiwUIyCKqYa7lYnnPldXCG5dUSN38uT0cA6i7rHWNKJLH0VU/Kxdr1GzB3w==",
       "dependencies": {
         "@babel/code-frame": "^7.22.5",
         "@babel/generator": "^7.22.5",
         "@babel/helper-environment-visitor": "^7.22.5",
         "@babel/helper-function-name": "^7.22.5",
         "@babel/helper-hoist-variables": "^7.22.5",
-        "@babel/helper-split-export-declaration": "^7.22.5",
-        "@babel/parser": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.6",
+        "@babel/parser": "^7.22.6",
         "@babel/types": "^7.22.5",
         "debug": "^4.1.0",
         "globals": "^11.1.0"
@@ -934,6 +934,14 @@
       "resolved": "https://registry.npmjs.org/@mdit-vue/types/-/types-0.12.0.tgz",
       "integrity": "sha512-mrC4y8n88BYvgcgzq9bvTlDgFyi2zuvzmPilRvRc3Uz1iIvq8mDhxJ0rHKFUNzPEScpDvJdIujqiDrulMqiudA=="
     },
+    "node_modules/@nicolo-ribaudo/semver-v6": {
+      "version": "6.3.3",
+      "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz",
+      "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
     "node_modules/@nodelib/fs.scandir": {
       "version": "2.1.5",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -994,39 +1002,6 @@
         "node": "^14.18.0 || >=16.10.0"
       }
     },
-    "node_modules/@nuxt/kit/node_modules/lru-cache": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "optional": true,
-      "dependencies": {
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/@nuxt/kit/node_modules/semver": {
-      "version": "7.5.3",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
-      "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
-      "optional": true,
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/@nuxt/kit/node_modules/yallist": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-      "optional": true
-    },
     "node_modules/@nuxt/schema": {
       "version": "3.6.1",
       "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.6.1.tgz",
@@ -1354,61 +1329,61 @@
       "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA=="
     },
     "node_modules/@unhead/dom": {
-      "version": "1.1.28",
-      "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.1.28.tgz",
-      "integrity": "sha512-o5w3GUo1en9OWNHpUkrkZxmlx2Xf7q++VLb5Lm0MtbHYM578lWmB1zLfmJMN13kvaNKN8RUhTYG5WMtKMzDfGw==",
+      "version": "1.1.30",
+      "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.1.30.tgz",
+      "integrity": "sha512-EvASOkk36lW5sRfIe+StCojpkPEExsQNt+cqcpdVr9iiRH54jziCDFxcLfjawc+jp4NO86KvmfHo86GIly3/SQ==",
       "dependencies": {
-        "@unhead/schema": "1.1.28",
-        "@unhead/shared": "1.1.28"
+        "@unhead/schema": "1.1.30",
+        "@unhead/shared": "1.1.30"
       },
       "funding": {
         "url": "https://github.com/sponsors/harlan-zw"
       }
     },
     "node_modules/@unhead/schema": {
-      "version": "1.1.28",
-      "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.1.28.tgz",
-      "integrity": "sha512-KDAPSYcYZHC3ni3Hd3Ye/piBasaHa/uQWCLICOVADwKi1Pm6hhMxCCwpsPSJtfekN31kOvIA09vZv8roPwTthQ==",
+      "version": "1.1.30",
+      "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.1.30.tgz",
+      "integrity": "sha512-lgz0aw+OP1PlKHBhNWAVabV2iAHBhSXCt3Ynswu0m++MwJxOVXizYJRZOVKK7Zx3u7vwPRV/nweYc6rmNHv5gA==",
       "dependencies": {
         "hookable": "^5.5.3",
-        "zhead": "^2.0.7"
+        "zhead": "^2.0.9"
       },
       "funding": {
         "url": "https://github.com/sponsors/harlan-zw"
       }
     },
     "node_modules/@unhead/shared": {
-      "version": "1.1.28",
-      "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.1.28.tgz",
-      "integrity": "sha512-mC0k7a4Cb4vKsASjD/Ws5hrRdZfTf5uapRF+1ekVqeyo1VVISoXNB6CdxTjHgqi8vKQr5wmvoSvEt1fOoU1PQQ==",
+      "version": "1.1.30",
+      "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.1.30.tgz",
+      "integrity": "sha512-OPS+d4SZuYSWquQZVLfbyFYggdqKz8DtcdHXObRoKWnosrgVPyGJoOaFnjfkYYuvU6BFYnUtnZNMRQVUjmER1g==",
       "dependencies": {
-        "@unhead/schema": "1.1.28"
+        "@unhead/schema": "1.1.30"
       },
       "funding": {
         "url": "https://github.com/sponsors/harlan-zw"
       }
     },
     "node_modules/@unhead/ssr": {
-      "version": "1.1.28",
-      "resolved": "https://registry.npmjs.org/@unhead/ssr/-/ssr-1.1.28.tgz",
-      "integrity": "sha512-gnSVyvpx/R1byQ8mArh2QRI1PdQ9mlRvtnt1Qiy7JUrtkJeqf/Hfn85fwZ+RhHRSDBPhMl7qD24FSlz5EwA9Zw==",
+      "version": "1.1.30",
+      "resolved": "https://registry.npmjs.org/@unhead/ssr/-/ssr-1.1.30.tgz",
+      "integrity": "sha512-0XBgoPZoPjLCEQpGc/PhTYPvXEcWufcpcHWo6jxRham3VCoQN5RoSzFNGPEtd4ZhMMVRMQLJ7yPDGfFXtu78Pg==",
       "dependencies": {
-        "@unhead/schema": "1.1.28",
-        "@unhead/shared": "1.1.28"
+        "@unhead/schema": "1.1.30",
+        "@unhead/shared": "1.1.30"
       },
       "funding": {
         "url": "https://github.com/sponsors/harlan-zw"
       }
     },
     "node_modules/@unhead/vue": {
-      "version": "1.1.28",
-      "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.1.28.tgz",
-      "integrity": "sha512-n/4UusPccA0eyLxeinEagfm7hswzg4Uud+dYNlPByHHThCBobYcHjhnOOeS9YvkMGbdZpG1l7k/kywQIcwYqgg==",
+      "version": "1.1.30",
+      "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.1.30.tgz",
+      "integrity": "sha512-jWDfYDjiNj8a8GTQoYeJrpKisI7YKIWwuMP1IREKa4cx41oCsbCKUDjomjnpmdBcpqvb/Kw32Tm+EMcuE/CYkA==",
       "dependencies": {
-        "@unhead/schema": "1.1.28",
-        "@unhead/shared": "1.1.28",
+        "@unhead/schema": "1.1.30",
+        "@unhead/shared": "1.1.30",
         "hookable": "^5.5.3",
-        "unhead": "1.1.28"
+        "unhead": "1.1.30"
       },
       "funding": {
         "url": "https://github.com/sponsors/harlan-zw"
@@ -1739,21 +1714,21 @@
       }
     },
     "node_modules/@vue/babel-helper-vue-transform-on": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.4.tgz",
-      "integrity": "sha512-i/+rx6NIx1SeqA6sJJCv0tRPAU/F6lOnxjV9v1DJVGT7rH0CWOluaYfb+ifODVHFj2cEw85X2U6fU0n466ng0Q=="
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz",
+      "integrity": "sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w=="
     },
     "node_modules/@vue/babel-plugin-jsx": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.4.tgz",
-      "integrity": "sha512-/F9YSGaxL53aBUwowjtALVBH+HXjXbsDt41NaVHc10HREkutCt51Wukm6sbgrq2sp34Mne+PCvOrjJjM2yLoWA==",
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz",
+      "integrity": "sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==",
       "dependencies": {
         "@babel/helper-module-imports": "^7.22.5",
         "@babel/plugin-syntax-jsx": "^7.22.5",
         "@babel/template": "^7.22.5",
         "@babel/traverse": "^7.22.5",
         "@babel/types": "^7.22.5",
-        "@vue/babel-helper-vue-transform-on": "^1.1.4",
+        "@vue/babel-helper-vue-transform-on": "^1.1.5",
         "camelcase": "^6.3.0",
         "html-tags": "^3.3.1",
         "svg-tags": "^1.0.0"
@@ -2068,9 +2043,9 @@
       }
     },
     "node_modules/acorn": {
-      "version": "8.9.0",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz",
-      "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==",
+      "version": "8.10.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+      "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
       "bin": {
         "acorn": "bin/acorn"
       },
@@ -2279,9 +2254,9 @@
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001509",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001509.tgz",
-      "integrity": "sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==",
+      "version": "1.0.30001512",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001512.tgz",
+      "integrity": "sha512-2S9nK0G/mE+jasCUsMPlARhRCts1ebcp2Ji8Y8PWi4NDE1iRdLCnEPHkEfeBrGC45L4isBx5ur3IQ6yTE2mRZw==",
       "funding": [
         {
           "type": "opencollective",
@@ -2958,9 +2933,9 @@
       }
     },
     "node_modules/dayjs": {
-      "version": "1.11.8",
-      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.8.tgz",
-      "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ=="
+      "version": "1.11.9",
+      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz",
+      "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA=="
     },
     "node_modules/debug": {
       "version": "4.3.4",
@@ -3225,9 +3200,9 @@
       "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.4.442",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.442.tgz",
-      "integrity": "sha512-RkrZF//Ya+0aJq2NM3OdisNh5ZodZq1rdXOS96G8DdDgpDKqKE81yTbbQ3F/4CKm1JBPsGu1Lp/akkna2xO06Q=="
+      "version": "1.4.450",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.450.tgz",
+      "integrity": "sha512-BLG5HxSELlrMx7dJ2s+8SFlsCtJp37Zpk2VAxyC6CZtbc+9AJeZHfYHbrlSgdXp6saQ8StMqOTEDaBKgA7u1sw=="
     },
     "node_modules/elkjs": {
       "version": "0.8.2",
@@ -3396,9 +3371,9 @@
       }
     },
     "node_modules/fast-glob": {
-      "version": "3.2.12",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
-      "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz",
+      "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==",
       "dependencies": {
         "@nodelib/fs.stat": "^2.0.2",
         "@nodelib/fs.walk": "^1.2.3",
@@ -3681,9 +3656,9 @@
       }
     },
     "node_modules/globby": {
-      "version": "13.2.0",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.0.tgz",
-      "integrity": "sha512-jWsQfayf13NvqKUIL3Ta+CIqMnvlaIDFveWE/dpOZ9+3AMEJozsxDvKA02zync9UuvOM8rOXzsD5GqKP4OnWPQ==",
+      "version": "13.2.1",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.1.tgz",
+      "integrity": "sha512-DPCBxctI7dN4EeIqjW2KGqgdcUMbrhJ9AzON+PlxCtvppWhubTLD4+a0GFxiym14ZvacUydTPjLPc2DlKz7EIg==",
       "optional": true,
       "dependencies": {
         "dir-glob": "^3.0.1",
@@ -4044,9 +4019,9 @@
       "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
     },
     "node_modules/jiti": {
-      "version": "1.18.2",
-      "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz",
-      "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==",
+      "version": "1.19.1",
+      "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz",
+      "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==",
       "bin": {
         "jiti": "bin/jiti.js"
       }
@@ -4282,11 +4257,11 @@
       }
     },
     "node_modules/magic-string": {
-      "version": "0.30.0",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz",
-      "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==",
+      "version": "0.30.1",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz",
+      "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==",
       "dependencies": {
-        "@jridgewell/sourcemap-codec": "^1.4.13"
+        "@jridgewell/sourcemap-codec": "^1.4.15"
       },
       "engines": {
         "node": ">=12"
@@ -4389,9 +4364,9 @@
       }
     },
     "node_modules/mermaid": {
-      "version": "10.2.3",
-      "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.2.3.tgz",
-      "integrity": "sha512-cMVE5s9PlQvOwfORkyVpr5beMsLdInrycAosdr+tpZ0WFjG4RJ/bUHST7aTgHNJbujHkdBRAm+N50P3puQOfPw==",
+      "version": "10.2.4",
+      "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.2.4.tgz",
+      "integrity": "sha512-zHGjEI7lBvWZX+PQYmlhSA2p40OzW6QbGodTCSzDeVpqaTnyAC+2sRGqrpXO+uQk3CnoeClHQPraQUMStdqy2g==",
       "dependencies": {
         "@braintree/sanitize-url": "^6.0.2",
         "cytoscape": "^3.23.0",
@@ -5547,9 +5522,9 @@
       "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
     },
     "node_modules/rollup": {
-      "version": "3.25.3",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.25.3.tgz",
-      "integrity": "sha512-ZT279hx8gszBj9uy5FfhoG4bZx8c+0A1sbqtr7Q3KNWIizpTdDEPZbV2xcbvHsnFp4MavCQYZyzApJ+virB8Yw==",
+      "version": "3.26.1",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.1.tgz",
+      "integrity": "sha512-I5gJCSpSMr3U9wv4D5YA8g7w7cj3eaSDeo7t+JcaFQOmoOUBgu4K9iMp8k3EZnwbJrjQxUMSKxMyB8qEQzzaSg==",
       "bin": {
         "rollup": "dist/bin/rollup"
       },
@@ -5643,13 +5618,38 @@
       }
     },
     "node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+      "version": "7.5.3",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
+      "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+      "optional": true,
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
       "bin": {
         "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
       }
     },
+    "node_modules/semver/node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "optional": true,
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/semver/node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "optional": true
+    },
     "node_modules/shebang-command": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -5971,13 +5971,13 @@
       }
     },
     "node_modules/unhead": {
-      "version": "1.1.28",
-      "resolved": "https://registry.npmjs.org/unhead/-/unhead-1.1.28.tgz",
-      "integrity": "sha512-lJqXq5YMAD3p+Nhnvb7fNJwkU91kJNhrnZNcEuAlaTB+0L4es69UvMzekT/wvoE7pde4Yxs0upcTyL4BBz4vQw==",
+      "version": "1.1.30",
+      "resolved": "https://registry.npmjs.org/unhead/-/unhead-1.1.30.tgz",
+      "integrity": "sha512-25N/P1GnnC8EYCDerzE0hl2nOdRqS1NOFh1STEyKWRo/Bi5dXn8Z2NTaqzkbr5ExJTZEAiDfZ+eALvMTmvlXlA==",
       "dependencies": {
-        "@unhead/dom": "1.1.28",
-        "@unhead/schema": "1.1.28",
-        "@unhead/shared": "1.1.28",
+        "@unhead/dom": "1.1.30",
+        "@unhead/schema": "1.1.30",
+        "@unhead/shared": "1.1.30",
         "hookable": "^5.5.3"
       },
       "funding": {
@@ -5985,14 +5985,14 @@
       }
     },
     "node_modules/unimport": {
-      "version": "3.0.11",
-      "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.0.11.tgz",
-      "integrity": "sha512-UaaLu7TiqiEwjm5a9FGsL8RL87U65wyr1jBeIAAvLChgJZRMTTkknU9bkWjBsVGutXLT2Yq8/dPyWXSC3/ELRg==",
+      "version": "3.0.14",
+      "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.0.14.tgz",
+      "integrity": "sha512-67Rh/sGpEuVqdHWkXaZ6NOq+I7sKt86o+DUtKeGB6dh4Hk1A8AQrzyVGg2+LaVEYotStH7HwvV9YSaRjyT7Uqg==",
       "optional": true,
       "dependencies": {
         "@rollup/pluginutils": "^5.0.2",
         "escape-string-regexp": "^5.0.0",
-        "fast-glob": "^3.2.12",
+        "fast-glob": "^3.3.0",
         "local-pkg": "^0.4.3",
         "magic-string": "^0.30.0",
         "mlly": "^1.4.0",
@@ -6085,11 +6085,11 @@
       }
     },
     "node_modules/unplugin": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.3.1.tgz",
-      "integrity": "sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==",
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.3.2.tgz",
+      "integrity": "sha512-Lh7/2SryjXe/IyWqx9K7IKwuKhuOFZEhotiBquOODsv2IVyDkI9lv/XhgfjdXf/xdbv32txmnBNnC/JVTDJlsA==",
       "dependencies": {
-        "acorn": "^8.8.2",
+        "acorn": "^8.9.0",
         "chokidar": "^3.5.3",
         "webpack-sources": "^3.2.3",
         "webpack-virtual-modules": "^0.5.0"
@@ -6317,9 +6317,9 @@
       }
     },
     "node_modules/vite-plugin-inspect": {
-      "version": "0.7.30",
-      "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.7.30.tgz",
-      "integrity": "sha512-4z3bxULL9KGsSu2Gt+Z/lYQB2APpODG+2eHDGWK9NE4IGnwKfbz0lzJqVJGFtLGhvdwzGjt01aPgpMLYb/bibw==",
+      "version": "0.7.32",
+      "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.7.32.tgz",
+      "integrity": "sha512-TqRLHwOM3FTJPOGCCHJmub4SVVogSjZ9LSDo1Q6WeN2Zvc7HB7tr7cqYlAyStXCI90KvVnb1BRwI22+HXlghXQ==",
       "dependencies": {
         "@antfu/utils": "^0.7.4",
         "@rollup/pluginutils": "^5.0.2",
@@ -6487,9 +6487,9 @@
       }
     },
     "node_modules/vue-router": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.2.tgz",
-      "integrity": "sha512-cChBPPmAflgBGmy3tBsjeoe3f3VOSG6naKyY5pjtrqLGbNEXdzCigFUHgBvp9e3ysAtFtEx7OLqcSDh/1Cq2TQ==",
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.3.tgz",
+      "integrity": "sha512-ynQ/edCZNUC/9koONOSgxGJbEBXZ1nUA0lKI3xTiOd3Ywe4QRCf2q8pGCG1v5ovdzPggoq3M09FxNCZTM9pZfw==",
       "dependencies": {
         "@vue/devtools-api": "^6.5.0"
       },
@@ -6738,9 +6738,9 @@
       }
     },
     "node_modules/zhead": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/zhead/-/zhead-2.0.7.tgz",
-      "integrity": "sha512-q9iCCXBWndfYNMGCN7S970+e3ILAPzmX78Skblx7+SGlo6x6SXW0GJ5mJzigYsq2mkHCGqEUhe0QGDEDZauw8g==",
+      "version": "2.0.9",
+      "resolved": "https://registry.npmjs.org/zhead/-/zhead-2.0.9.tgz",
+      "integrity": "sha512-Y3g6EegQc6PVrYXPq2OS7/s27UGVS5Y6NY6SY3XGH4Hg+yQWbQTtWsjCgmpR8kZnYrv8auB54sz+x5FEDrvqzQ==",
       "funding": {
         "url": "https://github.com/sponsors/harlan-zw"
       }
diff --git a/slides/pages/qa.md b/slides/pages/qa.md
index 61e7178021255f9b3c4f6c4c3f268b7ee146cd14..e8db433e8d1713d6f4442a8ef59a22f086a7d91c 100644
--- a/slides/pages/qa.md
+++ b/slides/pages/qa.md
@@ -7,7 +7,12 @@ title: Q&A
 Any questions about:
 
 - Eighth Assignment Sheet
+- Ninth Assignment Sheet
 - Topics from the lectures
 - Organisation
 
 <br/>
+
+## Resources
+
+- [P2P Network](https://www.enjoyalgorithms.com/blog/peer-to-peer-networks)
diff --git a/slides/pages/recap.md b/slides/pages/recap.md
index 41b48fea6741cef052d4993717f45c774307e3bd..65dab975ca3618291d304db43c955a3ea81ceeda 100644
--- a/slides/pages/recap.md
+++ b/slides/pages/recap.md
@@ -1,209 +1,43 @@
 ---
-title: Agenda
+title: Web Radio Server in Java
 ---
 
-# Recaps & Discussion
+# Web Radio & Chat Room Server/Client in Java
 
-Discuss the following topics and explain those concepts in your own words to your teammates:
-<br/>
-
-- What is IPC?
-- What is RPC?
-- What are the differences between RPC and IPC?
-- What roles do protocols play in IPC/RPC?
-- What are common protocols used in IPC/RPC?
-- What are the external data representations used in IPC/RPC?
-- What are marshalling and unmarshalling?
-
----
-title: HTTP(s) I
-layout: two-cols
----
-
-# HTTP
-
-**HTTP** stands for **Hypertext Transfer Protocol**.
-
-It is the protocol that enables communication between different systems, transferring information and data over a network.
-
-It is a:
-
-- Text-based protocol
-- Stateless protocol
-- Application layer protocol
-
-It is used for:
-
-- Client-server model
-- Request-response model
-- Distributed, collaborative, hypermedia information system
-
-::right::
-
-<div class="container flex justify-center">
-    <img src="/images/http-header.png" class="block w-md"/>
-</div>
+A possible approach:
 
+- Use different threads to handle different clients as well as different tasks
+- Use different ports to handle different services
 
 ---
-title: HTTP(s) II
+title: P2P
 ---
 
-### A typical HTTP request
-
-<br/>
-
-```http
-GET / HTTP/1.1
-Host: www.example.com
-User-Agent: Mozilla/5.0
-Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
-Accept-Language: en-GB,en;q=0.5
-Accept-Encoding: gzip, deflate, br
-Connection: keep-alive
-```
-
----
-title: HTTP(s) III
----
-
-### A typical HTTP response
+# Recaps & Discussion - P2P
 
+Discuss the following topics and explain those concepts in your own words to your teammates:
 <br/>
 
-```http
-HTTP/1.1 200 OK
-Date: Mon, 23 May 2005 22:38:34 GMT
-Content-Type: text/html; charset=UTF-8
-Content-Length: 155
-Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
-Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
-ETag: "3f80f-1b6-3e1cb03b"
-Accept-Ranges: bytes
-Connection: close
-
-<html>
-  <head>
-    <title>An Example Page</title>
-  </head>
-  <body>
-    <p>Hello World, this is a very simple HTML document.</p>
-  </body>
-</html>
-```
-
----
-title: HTTP(s) IV
----
-
-### HTTPS
-
-**Hypertext Transfer Protocol Secure (HTTPS)** is an extension of the HTTP protocol.
-
-**HTTP = HTTP + TLS/SSL**
-
-<div class="container flex justify-center">
-    <img src="/images/https-detailed.webp" class="block w-md"/>
-</div>
-
----
-title: HTTP(s) V
-layout: center
----
-
-- What are the differences between HTTP and HTTPS?
-- What are the benefits/drawbacks of using HTTPS?
+- What is peer-to-peer (P2P) architecture?
+- What are the use cases/examples of P2P?
+- What are the different types of P2P network?
+- What are the advantages and disadvantages of these type of P2P networks?
+- What are the advantages and disadvantages of P2P itself?
 
 ---
-title: Foundation of Web Development
-layout: center
+title: Cloud Computing
 ---
 
-# Foundations of Web Developments
-
-Mostly Frontend here
-
----
-title: Web Development I
----
-
-## Rendering User Interfaces
-
-When a user visits a web page, the server returns an HTML file to the browser that may look like this:
-
-<div class="container flex justify-center">
-    <img src="/images/html-to-dom.png" class="block w-lg"/>
-</div>
-
-The browser then reads the HTML and constructs the Document Object Model (DOM).
-
----
-title: Web Development II
----
-
-## What is DOM?
-
-The DOM is an object representation of the HTML elements. 
-
-It acts as a bridge between your code and the user interface, and has a tree-like structure with parent and child relationships.
-
-<div class="container flex justify-center">
-    <img src="/images/dom-to-ui.png" class="block w-lg"/>
-</div>
-
----
-title: Web Development III
----
-
-## DOM Manipulation
-
-The DOM can be manipulated using JavaScript.
-
-```html
-<!-- index.html -->
-<html>
-  <body>
-    <div id="app"></div>
-    <script type="text/javascript">
-        const app = document.getElementById('app');
-        app.innerHTML = '<h1>Hello World!</h1>';
-    </script>
-  </body>
-</html>
-```
-
-See live demo.
-
----
-title: Web Development IV
----
-
-## Too much DOM manipulation?
-
-**Use a framework!**
-
-<div class="container flex justify-left">
-    <img src="/images/reactjs.webp" class="block w-sm"/>
-</div>
+# Cloud Computing
 
+Discuss the following topics and explain those concepts in your own words to your teammates:
 <br/>
 
-- [React](https://react.dev/) is a JavaScript library for building user interfaces
-- Write declarative code to describe the UI
-- The framework will handle DOM manipulation for you
-- Organize your code into reusable components
-- Alternative: [Vue.js](https://vuejs.org/), [Angular](https://angular.io/), etc.
-
----
-title: Web Development V
----
-
-## Useful Resources
-
-<br/>
+- What is cloud computing?
+- What are the **service models** of cloud computing?
+- What are the **deployment models** of cloud computing?
+- What are the key technologies involved in cloud computing?
 
-- [Mozilla - Learn web development](https://developer.mozilla.org/en-US/docs/Learn)
-- [The Modern JavaScript Tutorial](https://javascript.info/)
-- [Learn React](https://react.dev/learn)
-- [Learn CSS](https://web.dev/learn/css/)
-- **Don't want to configure your own local development environment?** Try [CodeSandbox!](https://codesandbox.io/)
+<!-- <div class="container flex justify-center"> -->
+<!--     <img src="/images/http-header.png" class="block w-md"/> -->
+<!-- </div> -->
diff --git a/slides/slides.md b/slides/slides.md
index 63dd7f7bdfa5d25a2a67d889ebf9bc6da94332a0..5381f2179e10265bd4ebccab6d867fe4109721f8 100644
--- a/slides/slides.md
+++ b/slides/slides.md
@@ -17,7 +17,7 @@ css: unocss
 background: /images/cover.jpg
 ---
 
-# ALP4 Tutorial 10
+# ALP4 Tutorial 11
 
 ## Chao Zhan