|
1 | 1 | --- |
2 | 2 | author: BC George, Carsten Gips (HSBI) |
3 | 3 | no_beamer: true |
4 | | -title: "Compiler-Projekt: DSL-gestützte Aufgaben- und Rätselbeschreibung mit |
5 | | - Laufzeit-Interpretation in einem Spiel" |
| 4 | +title: "MIF 1.5 Kurs-Projekt: Sprachen und Compiler" |
6 | 5 | --- |
7 | 6 |
|
8 | | -::: tldr |
9 | | -**Zusammenfassung** |
| 7 | +# Ziel und Rahmen |
10 | 8 |
|
11 | | -In diesem Projekt beschäftigen Sie sich mit der Analyse, dem Entwurf und der |
12 | | -Implementierung einer domänenspezifischen Sprache (DSL) einschließlich eines |
13 | | -Interpreters. Ziel ist es, theoretische Grundlagen des Compilerbaus mit praktischer |
14 | | -Laufzeitintegration in eine bestehende Spiele-Engine zu verbinden. |
| 9 | +In diesem Projekt beschäftigen Sie sich mit fortgeschrittenen Inhalten im Bereich |
| 10 | +Programmiersprachen und Compilerbau. Sie können eigenständige Ideen einbringen oder |
| 11 | +einen der nachfolgend genannten Vorschläge aufgreifen und verfeinern. Neben der |
| 12 | +praktischen Beschäftigung mit den Kurs-Themen recherchieren Sie selbstständig nach |
| 13 | +relevanter Fachliteratur und reflektieren Ihre Designentscheidungen. |
15 | 14 |
|
16 | | -Ihre Arbeitsergebnisse präsentieren Sie in drei Terminen über den Verlauf des |
17 | | -Semesters. |
18 | | - |
19 | | -**Fristen** |
20 | | - |
21 | | -- Vorstellung der Konzepte (intern): Di, 18.11. (Praktikumsslot) |
22 | | -- Edmonton/Minden: Vorstellung DSL-Projekt (englisch): Mo, 01.12., 18:00 - 19:00 |
23 | | - Uhr |
24 | | -- Abschlusspräsentation: Di, 20.01. (Vorlesungs- und Praktikumsslot) |
25 | | - |
26 | | -***Teams*** |
27 | | - |
28 | | -Die Bearbeitung erfolgt in 3er-Teams. |
| 15 | +::: center |
| 16 | +Für das MIF‑1.5‑Kursprojekt können Sie jede[^1] Idee wählen, die einen Bezug zum |
| 17 | +Compilerbau hat. |
29 | 18 | ::: |
30 | 19 |
|
31 | | -# Kurzbeschreibung |
32 | | - |
33 | | -Didaktische Inhalte können in Serious-Games effizienter bereitgestellt werden, wenn |
34 | | -Lehrende über eine fachnahe, deklarative Sprache arbeiten. Spiele wie beispielsweise |
35 | | -das Dungeon-Framework (ECS, Game-Loop) haben eine entsprechende API, die Nutzung |
36 | | -erfordert jedoch aktuell dedizierte Kenntnisse der API und der jeweiligen |
37 | | -Programmiersprache. Eine DSL mit Interpreter schließt diese Lücke und eröffnet Raum |
38 | | -für Forschung zu Sprachdesign, Laufzeitintegration, Event-Verarbeitung und |
39 | | -Performanz in Game-Loops. |
| 20 | +# Passende Themen (nicht abschließend) |
40 | 21 |
|
41 | | -Sie entwickeln im Projekt eine domänenspezifische Sprache (DSL) zur Beschreibung |
42 | | -fachlicher Unterrichtsaufgaben und Escape-Room-Rätsel sowie einen Interpreter, der |
43 | | -diese Spezifikationen zur Laufzeit in ein Computer-Spiel wie das Java-basierte |
44 | | -[Dungeon-Framework](https://github.com/Dungeon-CampusMinden/Dungeon) oder das von |
45 | | -Ihnen parallel im Wahlmodul "Computer Games" entwickelte Spiel integriert. |
| 22 | +Umfang und geeignete Themen (Beispiele, nicht abschließend) |
46 | 23 |
|
47 | | -Die DSL ermöglicht Lehrenden, Aufgaben, Bewertungen und Interaktionen deklarativ zu |
48 | | -beschreiben, ohne direkt die Spiele-API zu nutzen. |
| 24 | +- Sprachdesign (DSLs), Scanner/Parser (ANTLR, tree-sitter), Typ-/Effekt-Systeme |
| 25 | +- IR-Design und -Transformation (Intermediate Representation), z.B. |
| 26 | + [Bril](https://github.com/sampsyo/bril), SSA, Dataflow-Analysen |
| 27 | +- MLIR (Multi-Level IR): Dialektentwurf, Lowerings, Pass-Pipelines, |
| 28 | + Canonicalization |
| 29 | +- Interpreter, VM/JIT, Codegenerierung (z.B. LLVM), Linken/Laden |
| 30 | +- Statische Analysen, Verifikation, Symbolik/SMT, Transformationspipelines |
| 31 | +- E-Graphs und Equality Saturation (z.B. egg/egglog) für optimierende Umformungen |
| 32 | +- Tooling: Incremental Build/Hot-Reload, Profiling/Tracing, Debug-Infos, |
| 33 | + Fehlermeldungen |
49 | 34 |
|
50 | | -Der Interpreter übernimmt die initiale Levelkonfiguration, beobachtet |
51 | | -Spielereignisse, bewertet Lösungen und interagiert zur Laufzeit mit Spieler:innen |
52 | | -(REPL). |
| 35 | +Bitte wählen Sie einen klar abgegrenzten Scope, der in Tiefe und Breite zum Semester |
| 36 | +passt. |
53 | 37 |
|
54 | | -Das Projekt verfolgt zwei zentrale Fragen: |
55 | | - |
56 | | -- Wie gestaltet man eine DSL, mit der didaktische Intentionen, Aufgabenlogik und |
57 | | - Escape-Room-Mechaniken klar, knapp und überprüfbar ausdrückbar sind? |
58 | | -- Wie bettet man den Interpreter technisch in ein Spiel ein (z.B. ECS-System |
59 | | - vs. Parallel-Thread), um Spielbarkeit und Responsiveness zu garantieren und um |
60 | | - im Interpreter auf Ereignisse (Input, Kollisionen, Zustandswechsel) reagieren zu |
61 | | - können? |
62 | | - |
63 | | -Das Projekt verbindet damit verschiedene Forschungsgebiete: |
64 | | -Programmiersprachen/Compilerbau, Gamification und Serious Games sowie |
65 | | -Softwarearchitektur in Echtzeit-/Game-Loop-Umgebungen. |
66 | | - |
67 | | -Potentiell interessante Literatur: |
| 38 | +Potentiell interessante Literatur im Bereich DSL: |
68 | 39 |
|
69 | 40 | - @Fowler2010 |
70 | 41 | - @Voelter2013 (*Anmerkung*: Das Buch ist recht alt, aber die ersten drei Kapitel |
71 | 42 | könnten hilfreich sein.) |
72 | 43 | - @mernik2005 |
73 | 44 |
|
74 | | -# Ziele |
75 | | - |
76 | | -## Fachliche Ziele |
77 | | - |
78 | | -1. Konzeption und formale Spezifikation einer DSL für die Interaktion mit dem Spiel |
79 | | - - Beschreibung von fachliche Aufgaben (Single Choice, Multiple Choice, |
80 | | - Zuordnung, ...) |
81 | | - - Beschreibung von Escape-Room-Rätsel (Rätsel und Aufgaben, aber auch Elemente |
82 | | - wie Schlösser/Schlüssel, Abhängigkeiten, Zeit-Constraints, Hinweise) |
83 | | - - Didaktische Metadaten (Lernziele, Schwierigkeitsgrad, Tags), Randomisierung |
84 | | - mit Seeds, Hints/Feedback |
85 | | - - Beschreibung von Level- und Szenenkonfiguration (Geometrie, Entities, NPCs, |
86 | | - Items, Fähigkeiten, Positionen) |
87 | | - - Beschreibung von Bewertungslogik, Feedback, Hints, Scoring und Lernziele |
88 | | - - Interaktion mit einem laufenden Spiel (Bewegen des Helden o.ä.) |
89 | | - |
90 | | -\smallskip |
91 | | - |
92 | | -2. Implementierung eines Interpreters für die DSL und Nutzung des laufenden Spiel |
93 | | - als spezielle Laufzeitumgebung |
94 | | - - Überführung von DSL-Artefakten in das Spiel und Konfiguration eines |
95 | | - ausführbares Spiels |
96 | | - - Beobachtung von und Reaktion auf Spielereignisse zur Laufzeit |
97 | | - - Durchführung von Bewertungen, sobald Bedingungen erfüllt sind |
98 | | - - Interaktion mit der Escape-Room-API |
99 | | - - Erreichbarkeit über eine REPL von außen (Eingabe/Auswertung weiterer |
100 | | - Statements zur Laufzeit) |
101 | | - |
102 | | -Der Interpreter behandelt das laufende Spiel als eine Art erweitertes Environment. |
103 | | - |
104 | | -## Technische Ziele |
105 | | - |
106 | | -1. Einbindung in ein ECS-basiertes System: |
107 | | - - als eigenes System in der Game-Loop, oder |
108 | | - - als separater Thread mit synchronisierter Schnittstelle |
109 | | - (Message-Queue/Command-Buffer). |
110 | | -2. Namens- und Umgebungsauflösung: |
111 | | - - zuerst lokaler DSL-Scope, dann Auflösung im Spiel (Entities, Komponenten, |
112 | | - Ressourcen). |
113 | | - - Lese-/Schreibzugriffe wirken konsistent auf den Spiel-Zustand. |
114 | | -3. Laufzeitinteraktion: |
115 | | - - Anzeige von Informationen, Dialogen, Aufgaben-UI (SC/MC/Zuordnung), |
116 | | - - Eingabe/Antworterfassung und Feedback, |
117 | | - - REPL für Debugging und Live-Inspektion. |
118 | | - |
119 | | -# Erwartete Ergebnisse (Deliverables) |
120 | | - |
121 | | -- Sprachspezifikation: Grammatik, Typsystem, statische Analysen, |
122 | | - Semantikbeschreibung |
123 | | -- Interpreter: Parser (z.B. ANTLR oder Recursive Descent), AST/IR, Evaluator, |
124 | | - Event-Engine, Runtime-Bibliothek für Spiel-Operationen, REPL |
125 | | -- Integration ins Spiel: Adapter zu ECS (Dungeon: Entity/Component/Systems), |
126 | | - Event-Subscription, Name-Resolution- und State-Access-Schicht |
127 | | -- Beispielartefakte: Katalog von Beispielaufgaben bzw. ein Escape-Room-Szenario |
128 | | -- Demo: Live-Demonstration im Spiel, Screencast, reproduzierbares Setup |
129 | | - (Build-Skripte, ggf. Container) |
130 | | - |
131 | | -# Geplante Projektpräsentationen |
132 | | - |
133 | | -## Vorstellung der Konzepte (intern) |
134 | | - |
135 | | -Bereiten Sie pro Team eine Präsentation (ca. 20 Minuten, Di, 18.11., Praktikumsslot, |
136 | | -Deutsch) vor, in der Sie den aktuellen Stand der Diskussion zu den zentralen |
137 | | -Konzepten und Ideen in Ihrem Projekt vorstellen. Folgende Punkte sollten Sie |
138 | | -abdecken: |
139 | | - |
140 | | -- DSL-Skizze: |
141 | | - - Zielbild, was Nutzer:innen im Spiel bzw. Dungeon mit der DSL erreichen |
142 | | - können |
143 | | - - Syntax und Semantik und Konzepte der DSL |
144 | | -- Domänenmodell: technische Anbindung der DSL an das Spiel bzw. den Dungeon |
145 | | - (Interpreter, Dungeon/Game-Loop, Abarbeitung und Interaktion) |
146 | | -- Konkrete Minimalbeispiele zur Veranschaulichung der Konzepte |
147 | | - |
148 | | -Betrachten Sie diesen Vortrag als einen ersten Meilenstein für Ihr Projekt und als |
149 | | -eine Art Generalprobe für den zwei Wochen später folgenden [Talk](talk.md) auf dem |
150 | | -Edmonton-/Minden-Meeting. |
151 | | - |
152 | | -## Edmonton/Minden: Minden Presentations |
153 | | - |
154 | | -Ergänzen Sie den Vortrag aus der internen Vorstellen (s.o.) um die in der |
155 | | -Zwischenzeit erreichten Arbeitsschritte und Teilergebnisse, beispielsweise den |
156 | | -funktionierenden Parser/AST sowie eine erste Konfigurationen im Dungeon oder Spiel |
157 | | -("Prototyp"). |
158 | | - |
159 | | -Halten Sie Ihre Präsentation auf dem ersten Edmonton-/Minden-Meeting (Mo, 01.12., |
160 | | -18-19 Uhr, EN): |
161 | | - |
162 | | -- Dauer: ca. 40-45 Minuten pro Team, parallel in Breakout-Gruppen |
163 | | -- Ziel: Vorstellung von Idee, Problemstellung, Architektur/Design, Prototyp |
164 | | -- Publikum: Kanadische Studierende; bitte auf klare |
165 | | - "Problem-Ansatz-Nutzen"-Struktur achten |
166 | | -- Sprache: Englisch |
167 | | - |
168 | | -## Abschlusspräsentation |
169 | | - |
170 | | -Die Abschlusspräsentation findet im Rahmen der Vorlesungs- und Praktikumszeit in der |
171 | | -letzten Vorlesungswoche (Di, 20.01.) statt. |
172 | | - |
173 | | -Es gelten folgende Randbedingungen: |
174 | | - |
175 | | -- Dauer: ca. 30 Minuten pro Team (Vorlesungs- und Praktikumsslot) |
176 | | -- Ziel: Ergebnisse, Demos, Evaluation, Lessons Learned, Ausblick |
177 | | -- Sprache: Deutsch |
| 45 | +# Projektanregungen |
| 46 | + |
| 47 | +- DSL und IR: Entwerfen Sie eine DSL zur Beschreibung von Quests/Übungsaufgaben |
| 48 | + und transformieren Sie diese in eine geeignete IR (z.B. Bril). Fokus: Grammatik, |
| 49 | + statische Checks, saubere IR-Übersetzung. |
| 50 | + |
| 51 | + ::: {.details title="Hinweise"} |
| 52 | + Didaktische Inhalte können in Serious-Games effizienter bereitgestellt werden, |
| 53 | + wenn Lehrende über eine fachnahe, deklarative Sprache arbeiten. Spiele wie |
| 54 | + beispielsweise das Dungeon-Framework (ECS, Game-Loop) haben eine entsprechende |
| 55 | + API, die Nutzung erfordert jedoch aktuell dedizierte Kenntnisse der API und der |
| 56 | + jeweiligen Programmiersprache. Eine DSL mit Interpreter schließt diese Lücke und |
| 57 | + eröffnet Raum für Forschung zu Sprachdesign, Laufzeitintegration, |
| 58 | + Event-Verarbeitung und Performanz in Game-Loops. |
| 59 | + |
| 60 | + Sie entwickeln eine domänenspezifische Sprache (DSL) zur Beschreibung fachlicher |
| 61 | + Unterrichtsaufgaben und Escape-Room-Rätsel sowie die Übersetzung in ein |
| 62 | + geeignetes Zwischencode-Format. |
| 63 | + |
| 64 | + *Anmerkung*: Die IR könnte auch MiniJava aus dem nachfolgenden Projektvorschlag |
| 65 | + sein ... |
| 66 | + ::: |
| 67 | + |
| 68 | +- Visualisierung von Programmabläufen in einem interaktiven Interpreter im |
| 69 | + [Dungeon](https://github.com/Dungeon-CampusMinden/Dungeon): Behandeln Sie den |
| 70 | + laufenden Dungeon als Environment des Interpreters. Variablen könnten z.b. als |
| 71 | + Komponenten an NPC/Entities abgelegt werden. Berechnungen werden damit über |
| 72 | + Dungeon-Objekte sichtbar (z.B. Datenfluss als Bewegungen/Effekte). Fokus: |
| 73 | + Semantik/Runtime-Mapping, Ereignisverarbeitung. |
| 74 | + |
| 75 | + ::: {.details title="Hinweise"} |
| 76 | + Sie entwickeln einen Interpreter, der z.B. einen Sub-Dialekt von Python zur |
| 77 | + Laufzeit in ein Computer-Spiel wie das Java-basierte |
| 78 | + [Dungeon-Framework](https://github.com/Dungeon-CampusMinden/Dungeon) oder das |
| 79 | + von Ihnen parallel im Wahlmodul "Computer Games" entwickelte Spiel integriert. |
| 80 | + |
| 81 | + Der Interpreter übernimmt die initiale Levelkonfiguration, beobachtet |
| 82 | + Spielereignisse, bewertet Lösungen und interagiert zur Laufzeit mit |
| 83 | + Spieler:innen (REPL). |
| 84 | + ::: |
| 85 | + |
| 86 | +- Blockly -\> Dungeon: Parsen und Interpretieren von Blockly-Code im |
| 87 | + [Dungeon](https://github.com/Dungeon-CampusMinden/Dungeon) |
| 88 | + |
| 89 | + ::: {.details title="Hinweise"} |
| 90 | + Im [Dungeon-Projekt](https://github.com/Dungeon-CampusMinden/Dungeon) wurde eine |
| 91 | + Blockly-Anbindung realisiert. Dabei werden vordefinierte Rätsel im Dungeon |
| 92 | + gestartet und parallel ein Blockly-Fenster, und durch Zusammenklicken der |
| 93 | + passenden Blöcke kann man das Rätsel im Dungeon lösen. Man sieht dabei live die |
| 94 | + Auswirkungen des Blockly-Codes auf den Dungeon. Das Blockly-Projekt im Dungeon |
| 95 | + richtet sich an Programmier-Einsteiger:innen (ca. 5./6. Klasse). |
| 96 | + |
| 97 | + In der vorliegenden Implementierung wurde zu jedem Block in Blockly der |
| 98 | + zugehörige Java-Code aus der Dungeon-API als Konfiguration hinterlegt. Blockly |
| 99 | + sendet diesen Code als Text über eine Remote-Schnittstelle an den laufenden |
| 100 | + Dungeon, wo der komplette Code in eine temporäre Datei gespeichert und zusammen |
| 101 | + mit der Dungeon-API und dem `javac` übersetzt wird und per Hot-Reloading in das |
| 102 | + laufende Spiel geladen wird. Das ist nicht nur sehr umständlich, sondern die |
| 103 | + Dungeon-API wird fest in den Textschnipseln von Blockly verdrahtet und ist damit |
| 104 | + anfällig für Refactoring. |
| 105 | + |
| 106 | + Ziel dieses Projekt-Vorschlags ist die Entkopplung von Blockly und der |
| 107 | + Dungeon-API durch eine geeignete DSL. Für die Blöcke in Blockly soll eine |
| 108 | + einfache, vom Dungeon unabhängige DSL definiert werden. Der DSL-Code soll in |
| 109 | + einem Interpreter, der im Dungeon als "System" in der ECS-Architektur mitläuft, |
| 110 | + empfangen und verarbeitet werden und in die entsprechenden Aktionen im Dungeon |
| 111 | + umgesetzt werden. |
| 112 | + |
| 113 | + Dieses Projekt kann auch mit der nachfolgenden Projekt-Anregung kombiniert |
| 114 | + werden: Der Blockly-Code wird in einem von Ihnen entwickelten Transpiler nach |
| 115 | + MiniJava übersetzt (und dann von dem im anderen Projekt entwickelten Interpreter |
| 116 | + im Dungeon interpretiert). |
| 117 | + ::: |
| 118 | + |
| 119 | +- MiniJava als einfache OOP-Sprache mit FP-Features für Spiel mit VSCode Extension |
| 120 | + |
| 121 | + ::: {.details title="Hinweise"} |
| 122 | + Im [Dungeon-Projekt](https://github.com/Dungeon-CampusMinden/Dungeon) wurde eine |
| 123 | + VSCode-Extension realisiert. In diesem Plugin kann vereinfachter Java-Code mit |
| 124 | + direkter Anbindung an die Dungeon-API geschrieben werden, der im Dungeon |
| 125 | + ausgeführt wird (über den im Blockly-Projekt beschriebenen Mechanismus |
| 126 | + "Speichern \> Javac \> Hot-Reloading) und so die vorgegebenen Rätsel löst. Das |
| 127 | + VSCode-Projekt im Dungeon richtet sich an fortgeschrittene |
| 128 | + Programmier-Einsteiger:innen (ca. 10./11. Klasse). Letztlich sind dieser |
| 129 | + vereinfachte Java-Code und die Konfiguration der Blockly-Blöcke nur eine andere |
| 130 | + Art der Schnittstelle für die selbe Verarbeitung im Dungeon, beide können |
| 131 | + relativ frei gegeneinander ausgetauscht werden. |
| 132 | + |
| 133 | + Ziel dieses Projekt-Vorschlags ist die Definition einer einfachen |
| 134 | + objektorientierten Sprache ("MiniJava") mit Features aus der funktionalen |
| 135 | + Programmieren, die sich für Programmier-Einsteiger leicht verstehen lässt und an |
| 136 | + der man wichtige Programmierkonzepte einfach erlernen kann. Diese Sprache soll |
| 137 | + unabhängig von der Dungeon-API sein, aber trotzdem typische Möglichkeiten für |
| 138 | + die Interaktion in Spielen aufweisen. Für diese Sprache soll ein Interpreter |
| 139 | + entwickelt werden, der im Dungeon als "System" in der ECS-Architektur mitläuft, |
| 140 | + empfangen und verarbeitet werden und in die entsprechenden Aktionen im Dungeon |
| 141 | + umgesetzt werden. Zusätzlich soll eine VSCode-Extension realisiert werden, die |
| 142 | + Syntax-Highlighting und Autocompletion unterstützt und per Tool-Tip die |
| 143 | + jeweilige Dokumentation anzeigen kann. |
| 144 | + |
| 145 | + Dieses Projekt lässt sich im Verarbeitungsteil in zwei Projekte aufteilen: Ein |
| 146 | + Projekt bearbeitet die VSCode-Extension für MiniJava, das andere Projekt |
| 147 | + realisiert den Interpreter für MiniJava im Dungeon. |
| 148 | + ::: |
| 149 | + |
| 150 | +- LaTeX Equation Language: Parsen und übersetzen eines LaTeX-Teilgrammatik |
| 151 | + (Arithmetik, cases, Funktionsdefinition) in ausführbaren LLVM-IR-Code oder |
| 152 | + Java-Bytecode o.ä. Ziel: Brücke von symbolischer Notation zu maschinennahem |
| 153 | + Code. |
| 154 | + |
| 155 | +- MLIR/E-Graphs-Pipeline: Entwurf eines kleinen MLIR-Dialekts (z.B. arithmetische |
| 156 | + Ausdrücke) mit Lowering nach LLVM; alternativ/ergänzend Optimierung via E-Graphs |
| 157 | + (Equality Saturation) und anschließendes Lowering. |
| 158 | + |
| 159 | +# Exposé (pro Team, Kurs-GitHub) |
| 160 | + |
| 161 | +- Umfang: 150--400 Wörter |
| 162 | +- Struktur: |
| 163 | + 1. Was wollt ihr machen? |
| 164 | + 2. Warum ist das spannend? |
| 165 | + 3. Wie werdet ihr das umsetzen? |
| 166 | + 4. Wie könnt ihr euren Erfolg empirisch bewerten? |
| 167 | + 5. Wer ist alles im Team? |
| 168 | + |
| 169 | +Bitte beschreiben Sie die einzelnen Punkte so ausführlich wie nötig, um |
| 170 | +nachvollziehbar zu sein. |
| 171 | + |
| 172 | +Abgabe als Beitrag in unserem [Forum im |
| 173 | +Kurs-GitHub](https://github.com/Compiler-CampusMinden/CPL-Vorlesung-Master-W25/discussions/categories/projekt-exposé), |
| 174 | +spätestens einen Tag vor der internen Projektvorstellung. |
| 175 | + |
| 176 | +# Organisation |
| 177 | + |
| 178 | +**Teams**: Die Bearbeitung erfolgt in 3er-Teams. |
| 179 | + |
| 180 | +**Fristen** |
| 181 | + |
| 182 | +- **Vorstellung der Konzepte** (intern): Di, 18.11. (Praktikumsslot, pro Team eine |
| 183 | + Präsentation von ca. 20 Minuten; das Exposé soll mind. einen Tag vorher im Forum |
| 184 | + eingestellt sein) =\> Generalprobe für den [Talk](talk.md) im |
| 185 | + Edmonton-/Minden-Meeting |
| 186 | +- **Edmonton/Minden**: Vorstellung Ihres Projekts: Mo, 01.12., 18:00 - 19:00 Uhr |
| 187 | + (pro Team eine (**englisch-sprachige**) Präsentation von ca. 40-45 Minuten plus |
| 188 | + Diskussion in Breakout-Gruppen) |
| 189 | +- **Abschlusspräsentation**: Di, 20.01. (Vorlesungs- und Praktikumsslot, pro Team |
| 190 | + eine Präsentation von ca. 30 Minuten) |
178 | 191 |
|
179 | 192 | ------------------------------------------------------------------------------------ |
180 | 193 |
|
181 | 194 | Wir freuen uns darauf, Sie in diesem herausfordernden und spannenden Projekt zu |
182 | 195 | begleiten und wünschen Ihnen viel Erfolg! |
183 | 196 |
|
184 | | -Bitte stimmen Sie alle Schritte und Ergebnisse mit Ihren Dozent:innen ab und holen |
185 | | -Sie sich aktiv Feedback. |
| 197 | +[^1]: ... for a given value of "jede" :) ... Die Idee muss zum Thema passen und vom |
| 198 | + Anspruch und Umfang her einem 10 ECTS Master-Modul angemessen sein. |
0 commit comments