diff --git a/migrations/development/20230314062152-course-flavor.sql b/migrations/development/20230314062152-course-flavor.sql
index 0b467420032b8253090cb862e4f12754f5ffedb6..5f7275e89166791dd31f4e42dd142df223ca4d73 100644
--- a/migrations/development/20230314062152-course-flavor.sql
+++ b/migrations/development/20230314062152-course-flavor.sql
@@ -28,7 +28,7 @@ BEFORE INSERT ON public."course"
 FOR EACH ROW EXECUTE PROCEDURE assign_lecturer();
 
 -- +migrate Down
-DROP TRIGGER IF EXISTS assign_lecturer ON public."course"
+DROP TRIGGER IF EXISTS assign_lecturer ON public."course";
 
 DROP FUNCTION IF EXISTS assign_lecturer();
 
diff --git a/quiz/Kuis PBD 1.json b/quiz/Kuis PBD 1.json
new file mode 100644
index 0000000000000000000000000000000000000000..264e784da26c6c7bb154fa30018acb07e34aeee8
--- /dev/null
+++ b/quiz/Kuis PBD 1.json	
@@ -0,0 +1,1529 @@
+{
+    "id": "10ed19c0-95e3-460f-aa51-ee8ebc8638d4",
+    "name": "Kuis PBD 1",
+    "course_id": "IF3210",
+    "description": "Kuis PBD Pertama",
+    "help": "Materi mencakup semua materi yang telah dipelajari",
+    "media": [],
+    "problems": [
+        {
+            "id": "e1767bd2-359f-4fd2-b6fd-c82fe80f9f3c",
+            "media_id": [],
+            "question": "1. Berikut adalah karakteristik dari aplikasi mobile yang berbeda dengan aplikasi desktop",
+            "answers": [
+                {
+                    "id": "a652fd40-b670-4bfe-a10d-b06445ab2585",
+                    "media_id": [],
+                    "answer": "a. Location-aware",
+                    "is_solution": false
+                },
+                {
+                    "id": "fba76552-c397-4994-bece-0d21a1efc005",
+                    "media_id": [],
+                    "answer": "b. Sensitive to responsiveness",
+                    "is_solution": true
+                },
+                {
+                    "id": "22d8b000-0e46-490d-9f77-8fc26c9fdb13",
+                    "media_id": [],
+                    "answer": "c. Always connected",
+                    "is_solution": false
+                },
+                {
+                    "id": "9b16e307-9088-45ae-8e26-b99fa8c9d2aa",
+                    "media_id": [],
+                    "answer": "d. Less focus on computing task",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "cbc6069c-740e-4c43-9ee6-41b97baa0405",
+            "media_id": [],
+            "question": "2. Arsitektur aplikasi mobile",
+            "answers": [
+                {
+                    "id": "75135728-c9ab-4516-884c-bf70d9725f92",
+                    "media_id": [],
+                    "answer": "a. Thin-client with back-end server",
+                    "is_solution": false
+                },
+                {
+                    "id": "7963d0ba-68ff-4021-9537-052a0f4a4439",
+                    "media_id": [],
+                    "answer": "b. Thick-client with back-end server",
+                    "is_solution": true
+                },
+                {
+                    "id": "50b2c34a-f0b2-4f3f-b918-877fc9eb9c57",
+                    "media_id": [],
+                    "answer": "c. Thick-client without back-end server (i.e. standalone)",
+                    "is_solution": true
+                },
+                {
+                    "id": "43818983-e313-467f-b27c-3ac4f83fc1b5",
+                    "media_id": [],
+                    "answer": "d. Thin-client without back-end server",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "7dfb29c8-df77-47e6-bb80-b0b98401a200",
+            "media_id": [],
+            "question": "3. Yang merupakan aplikasi mobile",
+            "answers": [
+                {
+                    "id": "e1d17db6-f527-475b-b49b-fc401b92051f",
+                    "media_id": [],
+                    "answer": "a. Native app",
+                    "is_solution": false
+                },
+                {
+                    "id": "b4134b5b-ef4e-4b33-83cb-53761db68d92",
+                    "media_id": [],
+                    "answer": "b. Mobile web app",
+                    "is_solution": false
+                },
+                {
+                    "id": "df7b3050-e3c2-4aed-a546-3e7416c5c87a",
+                    "media_id": [],
+                    "answer": "c. Mobile website",
+                    "is_solution": false
+                },
+                {
+                    "id": "61074e8c-b84a-40ab-ba50-1119cc957ee9",
+                    "media_id": [],
+                    "answer": "d. SMS-based app",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "a176cd88-5a4e-4cd1-9888-45e90246edd4",
+            "media_id": [],
+            "question": "4. Kelebihan mobile web app dibanding dengan native app",
+            "answers": [
+                {
+                    "id": "c8367825-6fd5-463b-86be-3582c76f50da",
+                    "media_id": [],
+                    "answer": "a. Single code base untuk sejumlah piranti mobile",
+                    "is_solution": true
+                },
+                {
+                    "id": "1ac6cee6-8f0b-45d1-8edd-0c87b95244ba",
+                    "media_id": [],
+                    "answer": "b. Seamless versioning",
+                    "is_solution": false
+                },
+                {
+                    "id": "8fe4c879-b97e-4555-9986-448e04f4663e",
+                    "media_id": [],
+                    "answer": "c. Berjalan lebih cepat",
+                    "is_solution": true
+                },
+                {
+                    "id": "32d45fff-735d-421b-a03c-39a907942f76",
+                    "media_id": [],
+                    "answer": "d. Dapat berjalan pada browser di piranti mobile",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "46ea027d-2228-4508-b317-b7c69804a7b2",
+            "media_id": [],
+            "question": "5. Yang merupakan mobile platform",
+            "answers": [
+                {
+                    "id": "2e9a0030-3091-4d44-a863-b1d49e83f4c8",
+                    "media_id": [],
+                    "answer": "a. IOS (not iOS)",
+                    "is_solution": false
+                },
+                {
+                    "id": "8cfaa30a-e631-4e6f-886e-e0a722cbb3bd",
+                    "media_id": [],
+                    "answer": "b. Meego",
+                    "is_solution": true
+                },
+                {
+                    "id": "977a4001-4300-4a3b-aecb-7ca51739e04e",
+                    "media_id": [],
+                    "answer": "c. Symbian",
+                    "is_solution": true
+                },
+                {
+                    "id": "5fb72562-1469-436e-b1e7-86775621cee2",
+                    "media_id": [],
+                    "answer": "d. Windows",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "e3951f7e-277a-49aa-9cbb-2eddcadcd220",
+            "media_id": [],
+            "question": "6. Komponen berikut termasuk dalam layer application framework pada arsitektur sistem Android:",
+            "answers": [
+                {
+                    "id": "6dc285c9-d32f-4144-beb9-7349ea10ccb1",
+                    "media_id": [],
+                    "answer": "a. Media framework",
+                    "is_solution": true
+                },
+                {
+                    "id": "44e20d37-2eec-4d0e-b0dd-184b3cbc23c4",
+                    "media_id": [],
+                    "answer": "b. Activity manager",
+                    "is_solution": false
+                },
+                {
+                    "id": "76b414a3-e258-4c80-af94-0e7059d78e94",
+                    "media_id": [],
+                    "answer": "c. Surface manager",
+                    "is_solution": false
+                },
+                {
+                    "id": "21f956e4-4c99-4939-bc08-43b65847ded1",
+                    "media_id": [],
+                    "answer": "d. Content provider",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "6ade9ace-0770-423b-bf3e-bc04a9222906",
+            "media_id": [],
+            "question": "7. Jenis proses pada system Android",
+            "answers": [
+                {
+                    "id": "427e86d9-fe0a-4166-9610-57a54a1440b2",
+                    "media_id": [],
+                    "answer": "a. Visible process",
+                    "is_solution": false
+                },
+                {
+                    "id": "4ce12ba3-1e59-43c8-88a0-823a86d0a689",
+                    "media_id": [],
+                    "answer": "b. Service process",
+                    "is_solution": true
+                },
+                {
+                    "id": "b3cf97d2-0cbe-4601-ada3-fd9d7986b418",
+                    "media_id": [],
+                    "answer": "c. Enable process",
+                    "is_solution": true
+                },
+                {
+                    "id": "6bf35cce-c7e5-482b-80c3-9d0543a1c097",
+                    "media_id": [],
+                    "answer": "d. Active process",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "69e52039-cd10-4ac1-8309-664f4b2abbde",
+            "media_id": [],
+            "question": "8. Berikut adalah method yang termasuk dalam android activity life cycle :",
+            "answers": [
+                {
+                    "id": "c9e24fc3-82a5-4ef9-bff6-d6fe495506fa",
+                    "media_id": [],
+                    "answer": "a. onResume()",
+                    "is_solution": false
+                },
+                {
+                    "id": "dae8fc7d-ff37-42d6-8266-7eebd75088d3",
+                    "media_id": [],
+                    "answer": "b. onPause()",
+                    "is_solution": true
+                },
+                {
+                    "id": "b179a153-ddc6-4699-93cb-fadffd45de80",
+                    "media_id": [],
+                    "answer": "c. onInit()",
+                    "is_solution": true
+                },
+                {
+                    "id": "9e28d7cc-3fc6-4e93-8e3d-932455725578",
+                    "media_id": [],
+                    "answer": "d. onTerminate()",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "0214943c-1516-4ca3-bab8-bbd65d603a0d",
+            "media_id": [],
+            "question": "9. Motion sensors dalam Android:",
+            "answers": [
+                {
+                    "id": "b5a72319-dd52-45ae-8ff6-9138d63d0012",
+                    "media_id": [],
+                    "answer": "a. Rotational vector",
+                    "is_solution": true
+                },
+                {
+                    "id": "a8eb6722-3222-4ea4-9b41-9a23d1ff5f57",
+                    "media_id": [],
+                    "answer": "b. Orientation sensor",
+                    "is_solution": true
+                },
+                {
+                    "id": "575bbe37-9d67-4099-a5c6-7e4d4d57a39b",
+                    "media_id": [],
+                    "answer": "c. Pressure sensor",
+                    "is_solution": false
+                },
+                {
+                    "id": "b964c468-881a-4af8-9571-b3de5e003da6",
+                    "media_id": [],
+                    "answer": "d. Proximity",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "0f9f5f8a-3325-4174-be98-79f59647e75f",
+            "media_id": [],
+            "question": "10. Activity manager berfungsi untuk:",
+            "answers": [
+                {
+                    "id": "e5b935d7-9e43-4e2e-89fe-dd363835e720",
+                    "media_id": [],
+                    "answer": "a. Memungkinkan aplikasi mengakses data",
+                    "is_solution": false
+                },
+                {
+                    "id": "db4c0653-903f-4a16-a773-6308f00f9595",
+                    "media_id": [],
+                    "answer": "b. Kemungkinan semua apps menampilkan alert terkustomisasi",
+                    "is_solution": false
+                },
+                {
+                    "id": "4d151a38-9114-4253-a1e4-ebc109124ac1",
+                    "media_id": [],
+                    "answer": "c. Mengelola life cycle dari aplikasi",
+                    "is_solution": false
+                },
+                {
+                    "id": "a08591e6-217c-467c-9054-02ce3d48f5e2",
+                    "media_id": [],
+                    "answer": "d. Menyediakan akses ke non-code resources",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "07bf3b9f-8298-4751-b662-dc9bc1bfa545",
+            "media_id": [],
+            "question": "11. Berikut adalah hal yang dilakukan dalam konteks sensor framework:",
+            "answers": [
+                {
+                    "id": "60d1df14-0dd3-4996-ba91-0c0e4b3742db",
+                    "media_id": [],
+                    "answer": "a. Check available sensor in a device",
+                    "is_solution": true
+                },
+                {
+                    "id": "e1f1589b-8b29-4914-9065-2b31ee2d8657",
+                    "media_id": [],
+                    "answer": "b. Check capability of each sensor",
+                    "is_solution": false
+                },
+                {
+                    "id": "0ede4e79-76f2-4267-bd64-44ec00025c5f",
+                    "media_id": [],
+                    "answer": "c. Access sensor output/data",
+                    "is_solution": false
+                },
+                {
+                    "id": "9b2ed678-4e2d-4105-bea9-acda19356b0d",
+                    "media_id": [],
+                    "answer": "d. Register event listener",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "6ed3d6cf-87a8-459f-8aac-226c7b2d3c53",
+            "media_id": [],
+            "question": "12. Untuk menampilkan sebuah GUI, komponen yang harus ada adalah sbb:",
+            "answers": [
+                {
+                    "id": "ba8f72f2-8e7c-411b-8c70-0076b86e8f79",
+                    "media_id": [],
+                    "answer": "a. Activity",
+                    "is_solution": true
+                },
+                {
+                    "id": "d825b18b-d437-4489-93ca-607dce4d67f9",
+                    "media_id": [],
+                    "answer": "b. Service",
+                    "is_solution": false
+                },
+                {
+                    "id": "848ef9be-0f65-45d1-a17b-f2a8ac0114e8",
+                    "media_id": [],
+                    "answer": "c. broadcastReceiver",
+                    "is_solution": true
+                },
+                {
+                    "id": "eabda767-8e63-401a-a3fc-55fd3adf1a0f",
+                    "media_id": [],
+                    "answer": "d. ContentProvider",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "39100d3d-10a5-4890-b7d3-8e3bdab91368",
+            "media_id": [],
+            "question": "13. Pernyataan tentang UI component pada android yang benar",
+            "answers": [
+                {
+                    "id": "b65dfacf-e97a-49e9-bc7d-8bb1f7af88d6",
+                    "media_id": [],
+                    "answer": "a. Diproses melalui single-threaded queue",
+                    "is_solution": false
+                },
+                {
+                    "id": "9322f589-94fd-46d6-8c6e-7e860115531c",
+                    "media_id": [],
+                    "answer": "b. Mengimplementasikan View aspek dari model MVC",
+                    "is_solution": false
+                },
+                {
+                    "id": "687ba9f6-34ff-4f2b-8e3b-80f94a0abb6a",
+                    "media_id": [],
+                    "answer": "c. UI dapat freeze",
+                    "is_solution": false
+                },
+                {
+                    "id": "c246d418-747a-48ed-b8a2-2b8a78290a57",
+                    "media_id": [],
+                    "answer": "d. View dan Control berinteraksi secara langsung",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "057458f9-73b9-4841-82bb-fbd9d4c32d0a",
+            "media_id": [],
+            "question": "14. Pernyataan tentang Resources berikut benar:",
+            "answers": [
+                {
+                    "id": "b6eac150-79d8-4294-ae87-8bb5cb795e10",
+                    "media_id": [],
+                    "answer": "a. Diakses via R.java",
+                    "is_solution": true
+                },
+                {
+                    "id": "2733affd-8d13-46a0-a1f7-e1cd57e877a4",
+                    "media_id": [],
+                    "answer": "b. Merepresentasikan sebuah screen",
+                    "is_solution": true
+                },
+                {
+                    "id": "7d208304-5f8b-4a29-97c0-6eec2928027b",
+                    "media_id": [],
+                    "answer": "c. Terletak pada file /resources",
+                    "is_solution": true
+                },
+                {
+                    "id": "e906b2f8-5f33-4dbd-a54a-1f46ded9d30b",
+                    "media_id": [],
+                    "answer": "d. Didefinisikan melalui file xml",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "df100ca3-68f4-4a27-ab31-5d6c803bd41b",
+            "media_id": [],
+            "question": "15. Pernyataan tentang SharedPreferences berikut benar",
+            "answers": [
+                {
+                    "id": "a74bd854-163a-4a5d-935c-45ffc1391bbc",
+                    "media_id": [],
+                    "answer": "a. Menyimpan data dalam bentuk xml",
+                    "is_solution": false
+                },
+                {
+                    "id": "16c8ee21-98cf-4f36-b815-93d8f06501bd",
+                    "media_id": [],
+                    "answer": "b. Menyimpan tipe kompleks",
+                    "is_solution": true
+                },
+                {
+                    "id": "e52866ef-ea47-4b76-9378-34d6195e8cba",
+                    "media_id": [],
+                    "answer": "c. Dapat dipanggil dalam bentuk getPreferences()",
+                    "is_solution": true
+                },
+                {
+                    "id": "0869d236-9b91-43c1-a19a-a3904cba006b",
+                    "media_id": [],
+                    "answer": "d. Dapat dipanggil dalam bentuk getSharedPreferences()",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "ebd5774e-7a68-4e07-bb34-c86410f90b4d",
+            "media_id": [],
+            "question": "16. Pernyataan tentang Android berikut benar",
+            "answers": [
+                {
+                    "id": "6a046909-5f1f-4c7e-8b3b-bf6f90cb6fcd",
+                    "media_id": [],
+                    "answer": "a. Aplikasi pada Android ditulis dalam Java dan dikompilasi menjadi Java Bytecode",
+                    "is_solution": true
+                },
+                {
+                    "id": "36a77287-2d9a-44e3-a1fb-80d937461a84",
+                    "media_id": [],
+                    "answer": "b. Aplikasi dapat mempublish kapabilitas yang dapat digunakan aplikasi lain",
+                    "is_solution": true
+                },
+                {
+                    "id": "8ba8b02f-5763-47a3-b784-7c3878b21288",
+                    "media_id": [],
+                    "answer": "c. Berbasis linux kernel",
+                    "is_solution": false
+                },
+                {
+                    "id": "6cd690d5-2c2f-43f0-bc4d-7bcb3e4b7623",
+                    "media_id": [],
+                    "answer": "d. Mendukung akses database dengan SQLite",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "ae39991a-d590-461b-8aa4-f8c3b7af4a11",
+            "media_id": [],
+            "question": "17. Sistem storage yang tersedia pada platform Android",
+            "answers": [
+                {
+                    "id": "6c603a30-8e16-4a53-86da-6a16d9b79023",
+                    "media_id": [],
+                    "answer": "a. Shared preferences",
+                    "is_solution": false
+                },
+                {
+                    "id": "f8f86ba3-e50c-46bc-96a5-0c8bd721a624",
+                    "media_id": [],
+                    "answer": "b. Internal storage",
+                    "is_solution": false
+                },
+                {
+                    "id": "2989ea18-abdd-41fb-8cac-0ca77a1f0d73",
+                    "media_id": [],
+                    "answer": "c. External storage",
+                    "is_solution": false
+                },
+                {
+                    "id": "7e2d40c4-5eba-4d18-b4a1-fd2eacb1c45c",
+                    "media_id": [],
+                    "answer": "d. Local database",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "98e8155f-30ed-4042-96c7-56c4ab181759",
+            "media_id": [],
+            "question": "18. Pernyataan tentang SQLite di Android berikut benar",
+            "answers": [
+                {
+                    "id": "b0b5dfb4-de13-41e3-8cdc-396ec21ec459",
+                    "media_id": [],
+                    "answer": "a. Akses basis data SQLite pada device membutuhkan root akses",
+                    "is_solution": false
+                },
+                {
+                    "id": "c64b1589-830d-46b5-9470-bc376694ab29",
+                    "media_id": [],
+                    "answer": "b. Menggunakan SQLOpenHelper untuk melakukan: insert, update, delete, and select",
+                    "is_solution": false
+                },
+                {
+                    "id": "60cfb6a9-7f29-4428-9bc6-81b779281cb3",
+                    "media_id": [],
+                    "answer": "c. Basis data SQLite hanya dapat diakses oleh aplikasi yang membuatnya",
+                    "is_solution": true
+                },
+                {
+                    "id": "eecdadd6-2242-4ee6-a222-f05e714db384",
+                    "media_id": [],
+                    "answer": "d. Sejumlah data di Content Provider disimpan sebagai SQLite database",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "21ac8634-6a41-4cb9-8ac4-789a865d2e7f",
+            "media_id": [],
+            "question": "19. Pernyataan yang tepat terkait konektivitas di Android",
+            "answers": [
+                {
+                    "id": "ae653b9a-3227-44c1-97ee-2414437bd727",
+                    "media_id": [],
+                    "answer": "a. Aplikasi hanya membutuhkan permission INTERNET untuk dapat mengaksesjaringan",
+                    "is_solution": true
+                },
+                {
+                    "id": "719d0660-f188-4cad-91a0-e8ff2933f42e",
+                    "media_id": [],
+                    "answer": "b. Android telah memberikan dukungan SSL",
+                    "is_solution": true
+                },
+                {
+                    "id": "329f66fd-693f-4c62-97eb-c5051f92f84b",
+                    "media_id": [],
+                    "answer": "c. Aplikasi tidak membutuhkan permission tambahan untuk men-setting proxy server",
+                    "is_solution": true
+                },
+                {
+                    "id": "392aa3e2-a0d8-4cdc-889b-10019f41ee71",
+                    "media_id": [],
+                    "answer": "d. Apache HTTPClient lebih didukung Google dari HttpURLConnection",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "b2a1d097-c0d9-4ecb-91b3-383119ff688a",
+            "media_id": [],
+            "question": "20. Berikut adalah primitif yang didukung OpenGL ES",
+            "answers": [
+                {
+                    "id": "271c6713-223d-4377-bd99-5468d06a1776",
+                    "media_id": [],
+                    "answer": "a. Menggambar titik",
+                    "is_solution": false
+                },
+                {
+                    "id": "422eed2c-0476-4ea3-88ca-9972fad11355",
+                    "media_id": [],
+                    "answer": "b. Menggambar poligon",
+                    "is_solution": false
+                },
+                {
+                    "id": "884c2bf3-3a78-4bc2-a0fb-89b17c81430b",
+                    "media_id": [],
+                    "answer": "c. Menggambar segi tiga",
+                    "is_solution": false
+                },
+                {
+                    "id": "ade3342c-9543-4988-ad27-a9917844a48f",
+                    "media_id": [],
+                    "answer": "d. Menggambar segi empat",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "1f567c3b-d58e-41e8-af40-e5c5fdba4610",
+            "media_id": [],
+            "question": "21. Berikut adalah pernyataan yang benar terkait Android Location Framework",
+            "answers": [
+                {
+                    "id": "179d4df1-a7e0-42c5-83d1-0226c1a1dea4",
+                    "media_id": [],
+                    "answer": "a. LocationManager menyediakan akses ke Android Location Service",
+                    "is_solution": true
+                },
+                {
+                    "id": "11aceb36-ffbc-407b-8c23-7281d14fd8ff",
+                    "media_id": [],
+                    "answer": "b. Hanya mendukung sebuah location provider saja dalam satu waktu",
+                    "is_solution": false
+                },
+                {
+                    "id": "09b38450-8687-4f18-970f-78b3bff548ed",
+                    "media_id": [],
+                    "answer": "c. Menyediakan layanan forward dan reverse geocoding",
+                    "is_solution": true
+                },
+                {
+                    "id": "f729b4cb-7758-41f3-85ed-d466749094f6",
+                    "media_id": [],
+                    "answer": "d. Layanan proximity alert tidak disediakan oleh framework ini (melainkan oleh Sensor Framework)",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "9a23c43d-a8cd-43cd-b1b5-521013b5ff2f",
+            "media_id": [],
+            "question": "22. Berikut ini adalah jenis challenge yang dapat diberikan oleh sebuah game",
+            "answers": [
+                {
+                    "id": "cbf2a914-8748-448d-82cb-4150c219ea10",
+                    "media_id": [],
+                    "answer": "a. Spatial awareness",
+                    "is_solution": true
+                },
+                {
+                    "id": "23f0afa9-2ac8-4afa-b67f-9a6828f0c60e",
+                    "media_id": [],
+                    "answer": "b. Money management",
+                    "is_solution": true
+                },
+                {
+                    "id": "8f7cb5ed-6514-43a6-8856-ff4df2624ae2",
+                    "media_id": [],
+                    "answer": "c. Reaction time",
+                    "is_solution": false
+                },
+                {
+                    "id": "0f080722-1f5c-43bd-9e3f-06f87aaaa1f2",
+                    "media_id": [],
+                    "answer": "d. Pattern matching",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "bf6b2cd9-927d-49c4-b4aa-ef6bb661a4ce",
+            "media_id": [],
+            "question": "23. Urutan game development life cycle adalah",
+            "answers": [
+                {
+                    "id": "814b4039-6e49-4ac2-99b8-65f13a8b9524",
+                    "media_id": [],
+                    "answer": "a. Concept -> pitch -> Greenlight -> Prototype ->Pre-production -> alpha Testing -> Production -> Beta Testing -> Gold Master",
+                    "is_solution": false
+                },
+                {
+                    "id": "8d421a06-a525-48ee-90b4-8238323fe33b",
+                    "media_id": [],
+                    "answer": "b. Concept -> pitch -> Green Light -> Prototype ->Pre-production -> alpha Testing -> Production -> Beta Testing -> Gold Master",
+                    "is_solution": false
+                },
+                {
+                    "id": "08bc3066-75a3-4423-ba2c-36e261bf3dc0",
+                    "media_id": [],
+                    "answer": "c. Concept -> pitch -> Prototype -> Green Light Pre-production -> alpha Testing -> Beta Testing -> Gold Master",
+                    "is_solution": true
+                },
+                {
+                    "id": "c7d3b716-5c92-4404-9478-264868479fe1",
+                    "media_id": [],
+                    "answer": "d. Concept -> Prototype -> Pitch -> Green Light Pre-production -> alpha Testing -> Beta Testing -> Gold Master",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "576de161-baa8-4e2d-b832-962a2c87d011",
+            "media_id": [],
+            "question": "24. Berikut adalah role dari game programmer",
+            "answers": [
+                {
+                    "id": "ae49a3ad-97b1-40ac-8f7e-bc1111d938db",
+                    "media_id": [],
+                    "answer": "a. Character programmer",
+                    "is_solution": false
+                },
+                {
+                    "id": "757ed5aa-938f-4782-be33-e0fa15ebbd6c",
+                    "media_id": [],
+                    "answer": "b. Enemy programmer",
+                    "is_solution": true
+                },
+                {
+                    "id": "8e9079c5-6656-4ff1-b2ca-2b8cca20a596",
+                    "media_id": [],
+                    "answer": "c. Engine programmer",
+                    "is_solution": true
+                },
+                {
+                    "id": "d2889ba3-4b8b-428f-aa6d-121ada13fa9f",
+                    "media_id": [],
+                    "answer": "d. Network programmer",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "12b0f72b-9a77-4162-ad7d-59d6ebbdb509",
+            "media_id": [],
+            "question": "25. Hal yang perlu diperhitungkan dalam memilih game engine adalah",
+            "answers": [
+                {
+                    "id": "fef7f79f-0497-47b0-88d8-ed859217212d",
+                    "media_id": [],
+                    "answer": "a. Kemudahan penggunaan",
+                    "is_solution": false
+                },
+                {
+                    "id": "264c2e91-b444-4c47-a354-009f9f121b82",
+                    "media_id": [],
+                    "answer": "b. Fungsionalitas",
+                    "is_solution": false
+                },
+                {
+                    "id": "af7390d5-2713-49da-9881-cf900ba27a9d",
+                    "media_id": [],
+                    "answer": "c. Harga",
+                    "is_solution": false
+                },
+                {
+                    "id": "d143550f-3def-47fd-8da0-ed53473e328b",
+                    "media_id": [],
+                    "answer": "d. Target platform",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "362471d6-f3be-4191-96e1-f28ce6f8be22",
+            "media_id": [],
+            "question": "26. Fitur yang disediakan oleh Unity adalah",
+            "answers": [
+                {
+                    "id": "5118a2d7-2887-4ce6-903a-1a7771545562",
+                    "media_id": [],
+                    "answer": "a. Physics Engine",
+                    "is_solution": false
+                },
+                {
+                    "id": "22339c43-f595-407a-91bc-bae1b879b389",
+                    "media_id": [],
+                    "answer": "b. GUI system",
+                    "is_solution": false
+                },
+                {
+                    "id": "a48cc357-e217-4bd6-9cf1-6f4cc61c020e",
+                    "media_id": [],
+                    "answer": "c. 2D animation",
+                    "is_solution": false
+                },
+                {
+                    "id": "2609c361-6ad5-4566-a99c-407ade3ae093",
+                    "media_id": [],
+                    "answer": "d. 3D terrain editor",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "027b6365-b169-42c5-9b8c-98e9269eb551",
+            "media_id": [],
+            "question": "27. Berikut ini adalah fungsi yang secara default terdapat pada script",
+            "answers": [
+                {
+                    "id": "8238e514-1fae-4d1a-856a-00aa9e0a3667",
+                    "media_id": [],
+                    "answer": "a. Awake",
+                    "is_solution": true
+                },
+                {
+                    "id": "5608ba55-9aa4-46d9-9c5e-e9f992bcfa5d",
+                    "media_id": [],
+                    "answer": "b. OnUpdate",
+                    "is_solution": true
+                },
+                {
+                    "id": "2846f2c1-32fe-4020-aa28-554bcb9f5ca8",
+                    "media_id": [],
+                    "answer": "c. OnStart",
+                    "is_solution": false
+                },
+                {
+                    "id": "34a967b3-f01d-48a8-a86b-39a86a582368",
+                    "media_id": [],
+                    "answer": "d. FixedUpdate",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "02774636-e66e-4f4c-a96a-01ee9a42af6e",
+            "media_id": [],
+            "question": "28. Yang termasuk dalam pemanfaatan Physics Engine adalah",
+            "answers": [
+                {
+                    "id": "92af437d-8bea-4fc0-a63a-d026e99a49e1",
+                    "media_id": [],
+                    "answer": "a. Memberikan efek gravitasi",
+                    "is_solution": true
+                },
+                {
+                    "id": "bd91241c-d78b-49a1-908c-c41e90558234",
+                    "media_id": [],
+                    "answer": "b. Mendeteksi tembakan peluru",
+                    "is_solution": false
+                },
+                {
+                    "id": "c9c9cc87-4fc8-46a1-a94b-fcfd3e506be6",
+                    "media_id": [],
+                    "answer": "c. Mensimulasikan bentuk rigidbody saat ditekan",
+                    "is_solution": true
+                },
+                {
+                    "id": "31367b28-d71b-4d8c-b11e-9ce5fe243e01",
+                    "media_id": [],
+                    "answer": "d. Membuat ragdoll",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "4974e769-0aa7-415c-ba9c-62d4d0c2c43a",
+            "media_id": [],
+            "question": "29. Unity Components yang tidak digunakan untuk menampilkan tabrakan dua benda dalam 3D",
+            "answers": [
+                {
+                    "id": "9355f481-4298-4658-b6e8-00b980d05e66",
+                    "media_id": [],
+                    "answer": "a. Light",
+                    "is_solution": false
+                },
+                {
+                    "id": "e8ce902f-f26b-45c7-a5ee-a904812ebfd3",
+                    "media_id": [],
+                    "answer": "b. Rigidbody",
+                    "is_solution": true
+                },
+                {
+                    "id": "543cc688-711a-4c9a-a4f5-3a46c20d5062",
+                    "media_id": [],
+                    "answer": "c. Camera",
+                    "is_solution": true
+                },
+                {
+                    "id": "33263fbd-7d5b-4255-8bc1-d67f84a5c1aa",
+                    "media_id": [],
+                    "answer": "d. Canvas",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "f66b36c4-efd6-413a-aa55-c2983ca6ff36",
+            "media_id": [],
+            "question": "30. Microcontroller adalah komputer kecil pada sebuah integrated circuit (IC) yang berisi:",
+            "answers": [
+                {
+                    "id": "f367f82d-f4a4-4289-a7b8-41f6f284caed",
+                    "media_id": [],
+                    "answer": "a. Processor core (CPU)",
+                    "is_solution": false
+                },
+                {
+                    "id": "dbe24625-7b90-4357-9e6f-ab4ab03194fb",
+                    "media_id": [],
+                    "answer": "b. Memory",
+                    "is_solution": false
+                },
+                {
+                    "id": "3f3fea24-5662-4140-abba-3a9f0fb11178",
+                    "media_id": [],
+                    "answer": "c. Programmable input/output peripherals",
+                    "is_solution": true
+                },
+                {
+                    "id": "bc016a8b-09c3-4ef0-82dd-97ffd8698e99",
+                    "media_id": [],
+                    "answer": "d. Firmware atau sistem operasi",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "bc7289a6-eb32-40fc-a972-0da4bfe4bd57",
+            "media_id": [],
+            "question": "31. Solusi microcontroller dibanding solusi computer based biasanya memiliki kelebihan:",
+            "answers": [
+                {
+                    "id": "5a672e92-0726-4e43-983c-15a9643ed264",
+                    "media_id": [],
+                    "answer": "a. Memiliki computing power yang lebih tinggi",
+                    "is_solution": false
+                },
+                {
+                    "id": "4bf71eec-be92-4522-8bc4-37f547bbe88f",
+                    "media_id": [],
+                    "answer": "b. Kebutuhan biaya yang lebih murah",
+                    "is_solution": false
+                },
+                {
+                    "id": "e274b2ff-e93a-4c1f-9fe6-652773614e25",
+                    "media_id": [],
+                    "answer": "c. Waktu pengembangan yang lebih cepat",
+                    "is_solution": false
+                },
+                {
+                    "id": "d4cffad1-4510-429b-a65b-95bd37a38ceb",
+                    "media_id": [],
+                    "answer": "d. Memiliki tingkat availability dan kehandalan yang lebih baik",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "5575af64-bf94-46ae-80dd-3e080b105649",
+            "media_id": [],
+            "question": "32. ARM adalah microcontroller dengan karakteristik:",
+            "answers": [
+                {
+                    "id": "41944ba0-5eb0-47f5-ace9-8a1d29716031",
+                    "media_id": [],
+                    "answer": "a. Berbasis arsitektur RISC (reduced instruction set computing)",
+                    "is_solution": false
+                },
+                {
+                    "id": "2f9ed016-d7b9-41af-807a-41449a6c98c9",
+                    "media_id": [],
+                    "answer": "b. Berbasis arsitektur CISC (complex instruction set computing)",
+                    "is_solution": true
+                },
+                {
+                    "id": "ab17df6a-fb46-4887-be13-0df6b08e0f58",
+                    "media_id": [],
+                    "answer": "c. 32-bit processor",
+                    "is_solution": false
+                },
+                {
+                    "id": "b070bb9c-0ec9-4627-be8d-67a033a32c78",
+                    "media_id": [],
+                    "answer": "d. 64-bit processor",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "aade48ae-3493-46b4-b1f3-332b5f1956cb",
+            "media_id": [],
+            "question": "33. Arduino memiliki karakteristik berikut:",
+            "answers": [
+                {
+                    "id": "cd3acbdf-0117-472c-ba16-425d374f22a8",
+                    "media_id": [],
+                    "answer": "a. Open-source physical computing platform",
+                    "is_solution": false
+                },
+                {
+                    "id": "ee822c3d-9d71-4c15-bef3-04815cd0513c",
+                    "media_id": [],
+                    "answer": "b. Berbasis simple microcontroller board",
+                    "is_solution": true
+                },
+                {
+                    "id": "f9e55efa-ab13-4326-b3cd-da3fed974b56",
+                    "media_id": [],
+                    "answer": "c. Tersedia development environment untuk membuat dan menuliskan program ke board",
+                    "is_solution": false
+                },
+                {
+                    "id": "44e13fa4-30d8-4b58-961b-a41810bb464e",
+                    "media_id": [],
+                    "answer": "d. Selalu menggunakan microcontroller keluarga ATMega",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "6656207a-0474-4acc-ac17-d75fd8502002",
+            "media_id": [],
+            "question": "34. Kelebihan menggunakan Arduino dibandingkan membuat board sendiri:",
+            "answers": [
+                {
+                    "id": "bb5925c2-376c-4f26-9386-d834f57469e9",
+                    "media_id": [],
+                    "answer": "a. Kebutuhan biaya yang selalu lebih murah",
+                    "is_solution": true
+                },
+                {
+                    "id": "079bfe66-8add-46f3-a816-b41a757ad209",
+                    "media_id": [],
+                    "answer": "b. Solusi yang tepat untuk segala kebutuhan embedded system",
+                    "is_solution": false
+                },
+                {
+                    "id": "171704f5-33fd-4c27-94e7-1d01ecdfa537",
+                    "media_id": [],
+                    "answer": "c. Mudah dikembangkan dan extensible",
+                    "is_solution": true
+                },
+                {
+                    "id": "431a563d-88cf-4bbe-b02c-46de580c81e8",
+                    "media_id": [],
+                    "answer": "d. Sudah tersedia IDE untuk pengembangan software",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "0668c2e5-c690-4682-a208-611eaa80d63a",
+            "media_id": [],
+            "question": "35. Berikut adalah typical langkah-langkah dalam pengembangan system menggunakan Arduino:",
+            "answers": [
+                {
+                    "id": "f34b0ea4-254d-4e6e-b95a-4b6248df753e",
+                    "media_id": [],
+                    "answer": "a. Merencanakan kebutuhan biaya untuk hardware dan software",
+                    "is_solution": false
+                },
+                {
+                    "id": "4d192022-ba1e-4bf1-a973-56ee11f1547b",
+                    "media_id": [],
+                    "answer": "b. Menyusun hardware (assemble) sesuai dengan kebutuhan",
+                    "is_solution": false
+                },
+                {
+                    "id": "e5ff3163-0c3c-4655-89cf-4d2b884bf1b9",
+                    "media_id": [],
+                    "answer": "c. Membuat sketch program",
+                    "is_solution": true
+                },
+                {
+                    "id": "202fc1ea-bc03-4d3b-b91b-d349d8c5b99e",
+                    "media_id": [],
+                    "answer": "d. Upload program ke Arduino",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "a5343ada-8d55-4b33-bbc8-c204ca7e0f7f",
+            "media_id": [],
+            "question": "36. Arduino yang digunakan pada kuliah ini mampu berkomunikasi dengan perangkat lain menggunakan: (ARDUINO UNO)",
+            "answers": [
+                {
+                    "id": "4729370c-50a6-4a36-bfcf-3eecae010c26",
+                    "media_id": [],
+                    "answer": "a. UART",
+                    "is_solution": false
+                },
+                {
+                    "id": "1a961600-b430-4dff-b9b6-2bc90053139f",
+                    "media_id": [],
+                    "answer": "b. USB",
+                    "is_solution": true
+                },
+                {
+                    "id": "642275d1-4a8f-4d8e-9095-fb604d87142e",
+                    "media_id": [],
+                    "answer": "c. SPI",
+                    "is_solution": false
+                },
+                {
+                    "id": "b2e3aa8f-7079-427a-8f3c-b10f6be3f054",
+                    "media_id": [],
+                    "answer": "d. I2C atau TWI",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "5539d334-8bde-4fa2-bb16-27414be44413",
+            "media_id": [],
+            "question": "37. Pernyataan yang benar sesuai dengan skema Arduino berikut (PIN D2 sebagai input):",
+            "answers": [
+                {
+                    "id": "6400c8a3-3eee-4ec5-8add-382f34d8ad0b",
+                    "media_id": [],
+                    "answer": "a. Bila saklar tertutup, maka pin D2 akan bernilai HIGH",
+                    "is_solution": false
+                },
+                {
+                    "id": "05dba710-3842-44e2-8edc-30e5f958b63e",
+                    "media_id": [],
+                    "answer": "b. Bila saklar terbuka, maka state pin D2 tidak bisa ditentukan apakah HIGH atau LOW",
+                    "is_solution": false
+                },
+                {
+                    "id": "ad227a06-9363-45f9-9656-e1b29c99f9ef",
+                    "media_id": [],
+                    "answer": "c. Resistor yang menghubungkan pin D2 ke GND berfungsi sebagai pulldown resistor",
+                    "is_solution": true
+                },
+                {
+                    "id": "50767155-1977-4c40-a3ac-827cbe58a178",
+                    "media_id": [],
+                    "answer": "d. Karena terhubung juga ke GND, saat saklar tertutup, pin D2 tidak bisa ditentukan apakah HIGH atau LOW",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "7bd1cf53-4c6e-4bac-96a0-3070aa2bb1ae",
+            "media_id": [],
+            "question": "38. Pada pemrograman arduino, perintah (command) analogWrite bila diterapkan untuk pin digital:",
+            "answers": [
+                {
+                    "id": "a7189696-17a0-4e8e-90b7-f963c38459ad",
+                    "media_id": [],
+                    "answer": "a. Teknik tersebut disebut PWM(pulse width modulation)",
+                    "is_solution": false
+                },
+                {
+                    "id": "108ae7a6-cd23-49b2-b21f-326325b5b024",
+                    "media_id": [],
+                    "answer": "b. Digunakan untuk menghasilkan output seperti analog dengan rentang nilai 0 volt - 5 volt",
+                    "is_solution": false
+                },
+                {
+                    "id": "4087b663-2ef3-4cb0-afb7-1817082347a1",
+                    "media_id": [],
+                    "answer": "c. Menghasilkan square wave bergantian on/high dan off/low sesuai dengan parameter",
+                    "is_solution": false
+                },
+                {
+                    "id": "accaa9ae-f158-450b-be08-59c44d106b74",
+                    "media_id": [],
+                    "answer": "d. analogWrite hanya bisa diterapkan untuk pin analog",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "984592ea-851b-45f9-9061-221c7ce6877d",
+            "media_id": [],
+            "question": "39. Serial port pada arduino",
+            "answers": [
+                {
+                    "id": "d466e20a-efb1-43ef-9260-36640b4e8fc5",
+                    "media_id": [],
+                    "answer": "a. disebut juga UART atau USART",
+                    "is_solution": true
+                },
+                {
+                    "id": "eb8f6beb-e069-44e8-bb83-2730aa730f91",
+                    "media_id": [],
+                    "answer": "b. mampu mengirimkan data secara byte per bet asynchronous",
+                    "is_solution": true
+                },
+                {
+                    "id": "aae62809-8d08-4413-a102-c86a17e75aa7",
+                    "media_id": [],
+                    "answer": "c. mampu mengirimkan data secara bit per bit synchronous",
+                    "is_solution": false
+                },
+                {
+                    "id": "60dd0da8-7007-41fb-a30a-6460b2861ca1",
+                    "media_id": [],
+                    "answer": "d. bisa digunakan untuk berkomunikasi dengan arduino lain, komputer, atau device lain yang memiliki serial port juga",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "5a533c33-bd11-4eaa-98b8-9c0c4e055aa9",
+            "media_id": [],
+            "question": "40. Berikut terkait interrupt pada Arduino",
+            "answers": [
+                {
+                    "id": "6dce33ac-0c0d-43c2-a733-edd2266dc314",
+                    "media_id": [],
+                    "answer": "a. interrupt bisa dihasilkan oleh event yang berasal perangkat atau modul dari luar",
+                    "is_solution": true
+                },
+                {
+                    "id": "f049b841-709b-474a-a586-4a60b40fa7b1",
+                    "media_id": [],
+                    "answer": "b. semua interrupt dapat dibuat handler-nya",
+                    "is_solution": false
+                },
+                {
+                    "id": "1ec55600-4516-42cc-8398-77add3e92309",
+                    "media_id": [],
+                    "answer": "c. interrupt handler akan berjalan secara asynchronous bila event yang sesuai terjadi",
+                    "is_solution": true
+                },
+                {
+                    "id": "cd340790-459b-4edc-859a-df9cf36b5cf4",
+                    "media_id": [],
+                    "answer": "d. interrupt handler harus dibuat sependek mungkin agar tidak kehilangan event berikutnya yang menimbulkan interrupt",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "28949743-fb65-4fed-b814-6a5890effd17",
+            "media_id": [],
+            "question": "41. Berikut adalah komponen yang terdapat pada sebuah Smart Card",
+            "answers": [
+                {
+                    "id": "a8948d22-3842-44ab-afd6-a24b0d55b36e",
+                    "media_id": [],
+                    "answer": "a. interface",
+                    "is_solution": false
+                },
+                {
+                    "id": "df0f3407-bf24-457b-9047-f11912c12939",
+                    "media_id": [],
+                    "answer": "b. ROM/RAM",
+                    "is_solution": false
+                },
+                {
+                    "id": "8e855410-80b9-4ec5-80d9-949182c4e3e3",
+                    "media_id": [],
+                    "answer": "c. EEPROM",
+                    "is_solution": false
+                },
+                {
+                    "id": "5ca8bd66-ca67-4d47-841e-3282822f76c2",
+                    "media_id": [],
+                    "answer": "d. Cache",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "4b69670b-d464-4c5a-905f-73e4c8fd7be0",
+            "media_id": [],
+            "question": "42. Berikut adalah pernyataan tentang teknologi Smart Card",
+            "answers": [
+                {
+                    "id": "bf7a6fa7-82ef-4657-9bb8-0ff5938058ff",
+                    "media_id": [],
+                    "answer": "a. Dapat berkomunikasi secara wireless",
+                    "is_solution": false
+                },
+                {
+                    "id": "2ed9c217-3a2f-4446-9372-65a57dc9974d",
+                    "media_id": [],
+                    "answer": "b. Tidak membutuhkan tenaga listrik untuk menjalankan CPU di kartu",
+                    "is_solution": true
+                },
+                {
+                    "id": "3be0dffa-d65f-4467-bc14-2c5167f37d59",
+                    "media_id": [],
+                    "answer": "c. Membutuhkan strip magnetik strip berkomunikasi dengan reader",
+                    "is_solution": true
+                },
+                {
+                    "id": "2d82ac17-12c5-4262-824f-349a04930d11",
+                    "media_id": [],
+                    "answer": "d. Harus dalam bentuk sebuah kartu dengan ukuran kartu kredit",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "3c82fbda-fbc5-4143-8abd-eea3e313cb96",
+            "media_id": [],
+            "question": "43. Berikut adalah keuntungan dengan mengembangkan back-end pada sebuah cloud service",
+            "answers": [
+                {
+                    "id": "3192cfc8-b037-4d63-a980-7f7f2f1ceac2",
+                    "media_id": [],
+                    "answer": "a. Tidak membutuhkan investasi infrastruktur HW yang besar",
+                    "is_solution": false
+                },
+                {
+                    "id": "0a196539-a513-43d5-ac8b-879522026810",
+                    "media_id": [],
+                    "answer": "b. Risiko keamanan informasi lebih tinggi karena sistem dan data berada di luar kendali kita",
+                    "is_solution": false
+                },
+                {
+                    "id": "31447859-3a09-46cd-a6b7-aeb88219ebae",
+                    "media_id": [],
+                    "answer": "c. Dapat scale-up seiring dengan bertambahnya pengguna layanan",
+                    "is_solution": true
+                },
+                {
+                    "id": "70136b1b-c4bf-4dca-af7c-f11d7a474800",
+                    "media_id": [],
+                    "answer": "d. Biaya operasi yang tidak terduga karena bergantung dengan jumlah transaksi",
+                    "is_solution": false
+                }
+            ]
+        },
+        {
+            "id": "1104818c-566a-43f3-a20c-b43179db2e2b",
+            "media_id": [],
+            "question": "44. Merupakan pernyataan terkait prinsip dasar dari cloud services",
+            "answers": [
+                {
+                    "id": "12479669-2566-439e-a4ce-c4eadfefb1b4",
+                    "media_id": [],
+                    "answer": "a. Pembayaran jumlah tagihan tetap tiap bulan/tahun",
+                    "is_solution": true
+                },
+                {
+                    "id": "d8b6f289-4d4e-4377-992b-0a042c380417",
+                    "media_id": [],
+                    "answer": "b. Menggunakan dedicated computing facilities",
+                    "is_solution": false
+                },
+                {
+                    "id": "e9e47ef0-152d-4ede-abb9-7a3ea86b31b5",
+                    "media_id": [],
+                    "answer": "c. Dapat scale-up/down sesuai dengan kebutuhan aplikasi (dengan surcharge if applicable)",
+                    "is_solution": true
+                },
+                {
+                    "id": "daa42346-bbeb-4f04-9f11-50808126ece6",
+                    "media_id": [],
+                    "answer": "d. Tidak perlu melakukan rekayasa beban dan kinerja karena telah dihandle oleh cloud provider",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "0052d42b-9747-44fa-a723-3b4fa8e033df",
+            "media_id": [],
+            "question": "45. Fakta terkait dengan testing dari sebuah aplikasi",
+            "answers": [
+                {
+                    "id": "711926a4-9996-421a-ae78-4d0fa5a975b3",
+                    "media_id": [],
+                    "answer": "a. Cara untuk menjamin bahwa aplikasi dapat berjalan baik (free bugs)",
+                    "is_solution": false
+                },
+                {
+                    "id": "ed0f69d8-511d-4d19-b99d-25b595815256",
+                    "media_id": [],
+                    "answer": "b. Tidak ada jaminan untuk melingkupi semua bad behaviors",
+                    "is_solution": true
+                },
+                {
+                    "id": "9c17c3d4-9519-46ff-a1ca-fa3951420375",
+                    "media_id": [],
+                    "answer": "c. Dilakukan dengan memasukkan semua konfigurasi masukan kedalam aplikasi",
+                    "is_solution": false
+                },
+                {
+                    "id": "98e1f259-e63a-462d-96fa-9f6784608353",
+                    "media_id": [],
+                    "answer": "d. Dapat digunakan untuk menguji kebenaran dari long-running (run-forever) process",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "2531f38e-6607-4ec5-9d1a-1ce2fa9182ac",
+            "media_id": [],
+            "question": "46. Berikut adalah jenis testing yang digunakan untuk menjamin bahwa semua aplikasi dapat berjalan dalam sejumlah mobile devices",
+            "answers": [
+                {
+                    "id": "2e38a8b2-0664-44cd-ac9a-882507814292",
+                    "media_id": [],
+                    "answer": "a. Unit testing untuk menjamin semua module telah berjalan sesuai dengan spesifikasi fungsi",
+                    "is_solution": true
+                },
+                {
+                    "id": "5bc7a448-626b-43ce-a5cf-efbc96667b70",
+                    "media_id": [],
+                    "answer": "b. Integration testing untuk menguji external resources yang dibutuhkan telah tersedia dan terkonfigurasi dengan tepat",
+                    "is_solution": false
+                },
+                {
+                    "id": "72bb5447-00b4-4d78-b0b8-68438d50dd12",
+                    "media_id": [],
+                    "answer": "c. Performance testing untuk menjamin aplikasi berjalan dengan response time yang diterima pengguna",
+                    "is_solution": true
+                },
+                {
+                    "id": "12c2fd07-ea6f-4712-9568-60cf048bf4e8",
+                    "media_id": [],
+                    "answer": "d. Fuzz testing untuk menjamin aplikasi dapat menerima semua masukan yang mungkin",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "4688a03e-4acb-4ed1-8f8f-1eddf99223e6",
+            "media_id": [],
+            "question": "47. Berikut adalah hal-hal yang menyebabkan debugging terhadap sebuah permasalah merupakan proses yang sulit",
+            "answers": [
+                {
+                    "id": "fe80d6c6-4e53-4957-a1a1-49bbe27aab8c",
+                    "media_id": [],
+                    "answer": "a. Permasalah terjadi hanya sesekali (atau random)",
+                    "is_solution": false
+                },
+                {
+                    "id": "5d582836-ebc0-48bc-ab23-c33a48b4f63f",
+                    "media_id": [],
+                    "answer": "b. Aplikasi membutuhkan external services untuk berjalan",
+                    "is_solution": true
+                },
+                {
+                    "id": "171951f7-119b-4e33-a2d5-fc5d261ea031",
+                    "media_id": [],
+                    "answer": "c. Permasalahan disebabkan oleh masukan malform dari external system",
+                    "is_solution": true
+                },
+                {
+                    "id": "f67d353d-6b6c-44b6-abb3-f023c408a8a0",
+                    "media_id": [],
+                    "answer": "d. Permasalahan sulit untuk di-reproduce secara akurat",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "0d2ee9b7-8d90-45bd-875a-4f90129450f9",
+            "media_id": [],
+            "question": "48. berikut adalah fasilitas dari modern visual debugger yang dapat membantu proses debugging",
+            "answers": [
+                {
+                    "id": "7a11034b-cdbf-4c03-be66-e866a1c146b3",
+                    "media_id": [],
+                    "answer": "a. watch(es)",
+                    "is_solution": true
+                },
+                {
+                    "id": "306384ef-6972-4040-9864-df38c4bed8ee",
+                    "media_id": [],
+                    "answer": "b. stop",
+                    "is_solution": true
+                },
+                {
+                    "id": "0e3956e7-6d06-41d0-b4fc-75ab82c61e95",
+                    "media_id": [],
+                    "answer": "c. clear stack",
+                    "is_solution": true
+                },
+                {
+                    "id": "57b96c9a-4a05-424b-be4a-b880be526439",
+                    "media_id": [],
+                    "answer": "d. breakpoint",
+                    "is_solution": true
+                }
+            ]
+        },
+        {
+            "id": "730d6ed5-8a63-45a8-877f-00c654885e35",
+            "media_id": [],
+            "question": "49. Berikut adalah kualitas dasar yang menjadi bagian dari keamanan informasi",
+            "answers": [
+                {
+                    "id": "71017559-1072-4fdc-8a80-af638265a787",
+                    "media_id": [],
+                    "answer": "a. correctness",
+                    "is_solution": false
+                },
+                {
+                    "id": "42996b6c-e578-4868-a5c2-617d536cb06c",
+                    "media_id": [],
+                    "answer": "b. confidentiality",
+                    "is_solution": true
+                },
+                {
+                    "id": "65ec88ef-a8c5-4805-8148-6e42989fa541",
+                    "media_id": [],
+                    "answer": "c. auditability",
+                    "is_solution": true
+                },
+                {
+                    "id": "922d159a-322a-4d35-ab20-b3af422e6a58",
+                    "media_id": [],
+                    "answer": "d. availability",
+                    "is_solution": false
+                }
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/quiz/Kuis PBD 1.txt b/quiz/Kuis PBD 1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3b682d366551a9dd007f75521d5cb09a6a41ccc3
--- /dev/null
+++ b/quiz/Kuis PBD 1.txt	
@@ -0,0 +1,250 @@
+1. Berikut adalah karakteristik dari aplikasi mobile yang berbeda dengan aplikasi desktop
+a. Location-aware
+b. Sensitive to responsiveness
+c. Always connected
+d. Less focus on computing task
+2. Arsitektur aplikasi mobile
+a. Thin-client with back-end server
+b. Thick-client with back-end server
+c. Thick-client without back-end server (i.e. standalone)
+d. Thin-client without back-end server
+3. Yang merupakan aplikasi mobile
+a. Native app
+b. Mobile web app
+c. Mobile website
+d. SMS-based app
+4. Kelebihan mobile web app dibanding dengan native app
+a. Single code base untuk sejumlah piranti mobile
+b. Seamless versioning
+c. Berjalan lebih cepat
+d. Dapat berjalan pada browser di piranti mobile
+5. Yang merupakan mobile platform
+a. IOS (not iOS)
+b. Meego
+c. Symbian
+d. Windows
+6. Komponen berikut termasuk dalam layer application framework pada arsitektur sistem Android:
+a. Media framework
+b. Activity manager
+c. Surface manager
+d. Content provider
+7. Jenis proses pada system Android
+a. Visible process
+b. Service process
+c. Enable process
+d. Active process
+8. Berikut adalah method yang termasuk dalam android activity life cycle :
+a. onResume()
+b. onPause()
+c. onInit()
+d. onTerminate()
+9. Motion sensors dalam Android:
+a. Rotational vector
+b. Orientation sensor
+c. Pressure sensor
+d. Proximity
+10. Activity manager berfungsi untuk:
+a. Memungkinkan aplikasi mengakses data
+b. Kemungkinan semua apps menampilkan alert terkustomisasi
+c. Mengelola life cycle dari aplikasi
+d. Menyediakan akses ke non-code resources
+11. Berikut adalah hal yang dilakukan dalam konteks sensor framework:
+a. Check available sensor in a device
+b. Check capability of each sensor
+c. Access sensor output/data
+d. Register event listener
+12. Untuk menampilkan sebuah GUI, komponen yang harus ada adalah sbb:
+a. Activity
+b. Service
+c. broadcastReceiver
+d. ContentProvider
+13. Pernyataan tentang UI component pada android yang benar
+a. Diproses melalui single-threaded queue
+b. Mengimplementasikan View aspek dari model MVC
+c. UI dapat freeze
+d. View dan Control berinteraksi secara langsung
+14. Pernyataan tentang Resources berikut benar:
+a. Diakses via R.java
+b. Merepresentasikan sebuah screen
+c. Terletak pada file /resources
+d. Didefinisikan melalui file xml
+15. Pernyataan tentang SharedPreferences berikut benar
+a. Menyimpan data dalam bentuk xml
+b. Menyimpan tipe kompleks
+c. Dapat dipanggil dalam bentuk getPreferences()
+d. Dapat dipanggil dalam bentuk getSharedPreferences()
+16. Pernyataan tentang Android berikut benar
+a. Aplikasi pada Android ditulis dalam Java dan dikompilasi menjadi Java Bytecode
+b. Aplikasi dapat mempublish kapabilitas yang dapat digunakan aplikasi lain
+c. Berbasis linux kernel
+d. Mendukung akses database dengan SQLite
+17. Sistem storage yang tersedia pada platform Android
+a. Shared preferences
+b. Internal storage
+c. External storage
+d. Local database
+18. Pernyataan tentang SQLite di Android berikut benar
+a. Akses basis data SQLite pada device membutuhkan root akses
+b. Menggunakan SQLOpenHelper untuk melakukan: insert, update, delete, and select
+c. Basis data SQLite hanya dapat diakses oleh aplikasi yang membuatnya
+d. Sejumlah data di Content Provider disimpan sebagai SQLite database
+19. Pernyataan yang tepat terkait konektivitas di Android
+a. Aplikasi hanya membutuhkan permission INTERNET untuk dapat mengaksesjaringan
+b. Android telah memberikan dukungan SSL
+c. Aplikasi tidak membutuhkan permission tambahan untuk men-setting proxy server
+d. Apache HTTPClient lebih didukung Google dari HttpURLConnection
+20. Berikut adalah primitif yang didukung OpenGL ES
+a. Menggambar titik
+b. Menggambar poligon
+c. Menggambar segi tiga
+d. Menggambar segi empat
+21. Berikut adalah pernyataan yang benar terkait Android Location Framework
+a. LocationManager menyediakan akses ke Android Location Service
+b. Hanya mendukung sebuah location provider saja dalam satu waktu
+c. Menyediakan layanan forward dan reverse geocoding
+d. Layanan proximity alert tidak disediakan oleh framework ini (melainkan oleh Sensor Framework)
+22. Berikut ini adalah jenis challenge yang dapat diberikan oleh sebuah game
+a. Spatial awareness
+b. Money management
+c. Reaction time
+d. Pattern matching
+23. Urutan game development life cycle adalah
+a. Concept -> pitch -> Greenlight -> Prototype ->Pre-production -> alpha Testing -> Production -> Beta Testing -> Gold Master
+b. Concept -> pitch -> Green Light -> Prototype ->Pre-production -> alpha Testing -> Production -> Beta Testing -> Gold Master
+c. Concept -> pitch -> Prototype -> Green Light Pre-production -> alpha Testing -> Beta Testing -> Gold Master
+d. Concept -> Prototype -> Pitch -> Green Light Pre-production -> alpha Testing -> Beta Testing -> Gold Master
+24. Berikut adalah role dari game programmer
+a. Character programmer
+b. Enemy programmer
+c. Engine programmer
+d. Network programmer
+25. Hal yang perlu diperhitungkan dalam memilih game engine adalah
+a. Kemudahan penggunaan
+b. Fungsionalitas
+c. Harga
+d. Target platform
+26. Fitur yang disediakan oleh Unity adalah
+a. Physics Engine
+b. GUI system
+c. 2D animation
+d. 3D terrain editor
+27. Berikut ini adalah fungsi yang secara default terdapat pada script
+a. Awake
+b. OnUpdate
+c. OnStart
+d. FixedUpdate
+28. Yang termasuk dalam pemanfaatan Physics Engine adalah
+a. Memberikan efek gravitasi
+b. Mendeteksi tembakan peluru
+c. Mensimulasikan bentuk rigidbody saat ditekan
+d. Membuat ragdoll
+29. Unity Components yang tidak digunakan untuk menampilkan tabrakan dua benda dalam 3D
+a. Light
+b. Rigidbody
+c. Camera
+d. Canvas
+30. Microcontroller adalah komputer kecil pada sebuah integrated circuit (IC) yang berisi:
+a. Processor core (CPU)
+b. Memory
+c. Programmable input/output peripherals
+d. Firmware atau sistem operasi
+31. Solusi microcontroller dibanding solusi computer based biasanya memiliki kelebihan:
+a. Memiliki computing power yang lebih tinggi
+b. Kebutuhan biaya yang lebih murah
+c. Waktu pengembangan yang lebih cepat
+d. Memiliki tingkat availability dan kehandalan yang lebih baik
+32. ARM adalah microcontroller dengan karakteristik:
+a. Berbasis arsitektur RISC (reduced instruction set computing)
+b. Berbasis arsitektur CISC (complex instruction set computing)
+c. 32-bit processor
+d. 64-bit processor
+33. Arduino memiliki karakteristik berikut:
+a. Open-source physical computing platform
+b. Berbasis simple microcontroller board
+c. Tersedia development environment untuk membuat dan menuliskan program ke board
+d. Selalu menggunakan microcontroller keluarga ATMega
+34. Kelebihan menggunakan Arduino dibandingkan membuat board sendiri:
+a. Kebutuhan biaya yang selalu lebih murah
+b. Solusi yang tepat untuk segala kebutuhan embedded system
+c. Mudah dikembangkan dan extensible
+d. Sudah tersedia IDE untuk pengembangan software
+35. Berikut adalah typical langkah-langkah dalam pengembangan system menggunakan Arduino:
+a. Merencanakan kebutuhan biaya untuk hardware dan software
+b. Menyusun hardware (assemble) sesuai dengan kebutuhan
+c. Membuat sketch program
+d. Upload program ke Arduino
+36. Arduino yang digunakan pada kuliah ini mampu berkomunikasi dengan perangkat lain menggunakan: (ARDUINO UNO)
+a. UART
+b. USB
+c. SPI
+d. I2C atau TWI
+37. Pernyataan yang benar sesuai dengan skema Arduino berikut (PIN D2 sebagai input):
+a. Bila saklar tertutup, maka pin D2 akan bernilai HIGH
+b. Bila saklar terbuka, maka state pin D2 tidak bisa ditentukan apakah HIGH atau LOW
+c. Resistor yang menghubungkan pin D2 ke GND berfungsi sebagai pulldown resistor
+d. Karena terhubung juga ke GND, saat saklar tertutup, pin D2 tidak bisa ditentukan apakah HIGH atau LOW
+38. Pada pemrograman arduino, perintah (command) analogWrite bila diterapkan untuk pin digital:
+a. Teknik tersebut disebut PWM(pulse width modulation)
+b. Digunakan untuk menghasilkan output seperti analog dengan rentang nilai 0 volt - 5 volt
+c. Menghasilkan square wave bergantian on/high dan off/low sesuai dengan parameter
+d. analogWrite hanya bisa diterapkan untuk pin analog
+39. Serial port pada arduino
+a. disebut juga UART atau USART
+b. mampu mengirimkan data secara byte per bet asynchronous
+c. mampu mengirimkan data secara bit per bit synchronous
+d. bisa digunakan untuk berkomunikasi dengan arduino lain, komputer, atau device lain yang memiliki serial port juga
+40. Berikut terkait interrupt pada Arduino
+a. interrupt bisa dihasilkan oleh event yang berasal perangkat atau modul dari luar
+b. semua interrupt dapat dibuat handler-nya
+c. interrupt handler akan berjalan secara asynchronous bila event yang sesuai terjadi
+d. interrupt handler harus dibuat sependek mungkin agar tidak kehilangan event berikutnya yang menimbulkan interrupt
+41. Berikut adalah komponen yang terdapat pada sebuah Smart Card
+a. interface
+b. ROM/RAM
+c. EEPROM
+d. Cache
+42. Berikut adalah pernyataan tentang teknologi Smart Card
+a. Dapat berkomunikasi secara wireless
+b. Tidak membutuhkan tenaga listrik untuk menjalankan CPU di kartu
+c. Membutuhkan strip magnetik strip berkomunikasi dengan reader
+d. Harus dalam bentuk sebuah kartu dengan ukuran kartu kredit
+43. Berikut adalah keuntungan dengan mengembangkan back-end pada sebuah cloud service
+a. Tidak membutuhkan investasi infrastruktur HW yang besar
+b. Risiko keamanan informasi lebih tinggi karena sistem dan data berada di luar kendali kita
+c. Dapat scale-up seiring dengan bertambahnya pengguna layanan
+d. Biaya operasi yang tidak terduga karena bergantung dengan jumlah transaksi
+44. Merupakan pernyataan terkait prinsip dasar dari cloud services
+a. Pembayaran jumlah tagihan tetap tiap bulan/tahun
+b. Menggunakan dedicated computing facilities
+c. Dapat scale-up/down sesuai dengan kebutuhan aplikasi (dengan surcharge if applicable)
+d. Tidak perlu melakukan rekayasa beban dan kinerja karena telah dihandle oleh cloud provider
+45. Fakta terkait dengan testing dari sebuah aplikasi
+a. Cara untuk menjamin bahwa aplikasi dapat berjalan baik (free bugs)
+b. Tidak ada jaminan untuk melingkupi semua bad behaviors
+c. Dilakukan dengan memasukkan semua konfigurasi masukan kedalam aplikasi
+d. Dapat digunakan untuk menguji kebenaran dari long-running (run-forever) process
+46. Berikut adalah jenis testing yang digunakan untuk menjamin bahwa semua aplikasi dapat berjalan dalam sejumlah mobile devices
+a. Unit testing untuk menjamin semua module telah berjalan sesuai dengan spesifikasi fungsi
+b. Integration testing untuk menguji external resources yang dibutuhkan telah tersedia dan terkonfigurasi dengan tepat
+c. Performance testing untuk menjamin aplikasi berjalan dengan response time yang diterima pengguna
+d. Fuzz testing untuk menjamin aplikasi dapat menerima semua masukan yang mungkin
+47. Berikut adalah hal-hal yang menyebabkan debugging terhadap sebuah permasalah merupakan proses yang sulit
+a. Permasalah terjadi hanya sesekali (atau random)
+b. Aplikasi membutuhkan external services untuk berjalan
+c. Permasalahan disebabkan oleh masukan malform dari external system
+d. Permasalahan sulit untuk di-reproduce secara akurat
+48. berikut adalah fasilitas dari modern visual debugger yang dapat membantu proses debugging
+a. watch(es)
+b. stop
+c. clear stack
+d. breakpoint
+49. Berikut adalah kualitas dasar yang menjadi bagian dari keamanan informasi
+a. correctness
+b. confidentiality
+c. auditability
+d. availability
+50. Bentuk dari perlindungan kekayaan intelektual yang ada di Indonesia
+a. merek
+b. hak cipta/copyright
+c. paten
+d. indikasi geografis
\ No newline at end of file
diff --git a/quiz/quiz_parser.py b/quiz/quiz_parser.py
new file mode 100644
index 0000000000000000000000000000000000000000..8cfef1ed62a1a3acd5da24d69056aca7a42bd225
--- /dev/null
+++ b/quiz/quiz_parser.py
@@ -0,0 +1,65 @@
+import json
+import re
+import uuid
+import random
+
+filename = "Kuis PBD 1"
+quiz = None
+
+with open(f"{filename}.txt", "r") as file:
+    data = file.read().splitlines()
+    # type QuizDetail struct {
+    # 	Id          uuid.UUID     `json:"id"`
+    # 	Name        string        `json:"name"`
+    # 	CourseId    string        `json:"course_id"`
+    # 	Description string        `json:"description"`
+    # 	Help        string        `json:"help"`
+    # 	Media       []QuizMedia   `json:"media"`
+    # 	Problems    []QuizProblem `json:"problems"`
+    # }
+    quiz = {
+        "id"          : str(uuid.uuid4()),
+        "name"        : filename,
+        "course_id"   : "IF3210",
+        "description" : "Kuis PBD Pertama",
+        "help"        : "Materi mencakup semua materi yang telah dipelajari",
+        "media"       : [],
+        "problems"    : []
+    }
+
+    current_problem = None
+    for line in data:
+        if re.match(r"^\d+\.", line):
+            if current_problem is not None:
+                quiz["problems"].append(current_problem)
+            # type QuizProblem struct {
+            # 	Id       uuid.UUID      `json:"id"`
+            # 	MediaId  []uuid.UUID    `json:"media_id"`
+            # 	Question string         `json:"question"`
+            # 	Answer   []AnswerOption `json:"answers"`
+            # }
+            current_problem = {
+                "id"       : str(uuid.uuid4()),
+                "media_id" : [],
+                "question" : line,
+                "answers"  : []
+            }
+        elif re.match(r"^[a-z]+\.", line):
+            # type AnswerOption struct {
+            #     Id         uuid.UUID   `json:"id"`
+            #     MediaId    []uuid.UUID `json:"media_id"`
+            #     Answer     string      `json:"answer"`
+            #     IsSolution *bool       `json:"is_solution"`
+            # }
+            current_problem["answers"].append({
+                "id"         : str(uuid.uuid4()),
+                "media_id"   : [],
+                "answer"     : line,
+                "is_solution": True if random.random() >= 0.5 else False
+            })
+        else:
+            raise Exception(f"Invalid line: {line}")
+    
+if quiz is not None:
+    with open(f"{filename}.json", "w") as file:
+        json.dump(quiz, file, indent=4)