You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: Projekte2017.md
+72-72
Original file line number
Diff line number
Diff line change
@@ -6,12 +6,12 @@ Zum Bestehen der Veranstaltung müssen Sie insgesamt (Übung + Projekt) 220 Punk
6
6
7
7
Die Punkte sind unterteilt in Kategorien, aus denen nicht mehr als die angegebene Anzahl berücksichtigt wird:
8
8
9
-
- Parser: 50 Punkte
10
-
- div. Libraries: 60 Punkte
11
-
- "Core"-Haskell: 80 Punkte ("Core"-Haskell umfasst die Libraries `lens`,`mtl` bzw. `transformers`,`attoparsec` oder andere Parser,`gloss` oder andere GUI)
12
-
- Visualisierung: 80 Punkte
13
-
- Parallelism/Concurrency: 50 Punkte
14
-
- Binärparsing: 25 Punkte
9
+
- Parser (ohne binär): 75 Punkte
10
+
- div. Libraries: 90 Punkte
11
+
- "Core"-Haskell: 120 Punkte ("Core"-Haskell umfasst die Libraries `lens`,`mtl` bzw. `transformers`,`attoparsec` oder andere Parser,`gloss` oder andere GUI)
12
+
- Visualisierung: 100 Punkte
13
+
- Parallelism/Concurrency: 90 Punkte
14
+
- Binärparsing: 50 Punkte
15
15
16
16
Dies dient dazu, dass man sich nicht nur auf eine Sache konzentriert, sondern verschiedene Aspekte und deren Zusammenspiel verstanden haben muss.
17
17
@@ -21,37 +21,36 @@ Für alle Projekte gilt: **Bitte schreiben Sie ordentlichen Code. Organisieren S
21
21
22
22
## Projekte
23
23
24
-
Von den Projekten "Sokoban" und "Snake" darf nur eines gewählt werden.
24
+
Von den Projekten "Sokoban" und "Snake" darf nur eines gewählt werden.
25
25
26
-
### Sokoban (Punkte: 80 + 80 (optional))
26
+
### Sokoban (Punkte: 115 + 105 (optional))
27
27
28
28
Spielbeschreibung: [Sokoban](https://en.wikipedia.org/wiki/Sokoban) ist ein kachel- und rundenbasiertes Puzzlespiel (ähnlich wie `Game` aus den Übungen), in dem es darum geht, alle Kisten auf markierte Zielpunkte zu schieben (mit nur wenig Platz für Manöver). [Hier](https://en.wikipedia.org/wiki/Sokoban#/media/File:Sokoban_ani.gif) finden Sie ein Beispiellevel, das alle Basisregeln deutlich macht.
29
29
30
30
#### Bepunktung
31
31
32
-
Mindestanforderungen:
33
-
Das Spiel muss fehlerfrei spielbar sein (also: Siegbedingungen überprüfen, korrekte Kollisionsabfrage, . . . ), bei erfolgreich absolviertem Level automatisch das nächste Laden und einen Counter enthalten, wie viele Züge in diesem Level bereits getätigt wurden. Die Spiellogik soll über einen State (auch als RWST möglich) abgehandelt werden. Es sollen verschiedene spielbare Level vorliegen, die bei Spielstart aus einer oder mehreren externen Textdateien geladen werden sollen (Definieren Sie eine Repräsentation für Level und schreiben Sie den entsprechenden Parser). Eine grafische Oberfläche ist Pflicht (Ausgabe auf der Konsole genügt nicht!), die Wahl der GUI-Bibliothek (gloss, not-gloss, sdl2, gtk2hs,...) steht Ihnen jedoch frei.
32
+
Das Spiel muss fehlerfrei spielbar sein (also: Siegbedingungen überprüfen, korrekte Kollisionsabfrage,..). Es sollen verschiedene spielbare Level vorliegen. Eine grafische Oberfläche ist Pflicht (Ausgabe auf der Konsole genügt nicht!), die Wahl der GUI-Bibliothek (gloss, not-gloss, sdl2, gtk2hs,...) steht Ihnen jedoch frei.
34
33
35
-
- Visualisierung: 15 Punkte (Visualisierung)
36
-
- Level-Parser: 20 Punkte (Parser)
37
-
- Benutzung von State oder RWST: 25 Punkte (Core)
38
-
- Implementation Spiellogik: 20 Punkte (Core)
34
+
- Visualisierung: 30 Punkte (Visualisierung)
35
+
- Level-Parser: 25 Punkte (Parser)
36
+
- Benutzung von State oder RWST: 30 Punkte (Core)
37
+
- Implementation Spiellogik: 30 Punkte (Core)
39
38
40
-
Optionale Zusätze:
41
-
Zusätzliche Feature müssen auch in den mitgelieferten Levels auftauchen.
39
+
Optional:
40
+
Zusätzliche Gameplay-Features müssen in mitgelieferten Levels auftauchen.
42
41
43
-
- Verwendung von Lens: 10 Punkte (Core)
44
-
- Einlesen/Anzeigen von Bildern mittels Library: 5 Punkte (div. Libraries)
45
-
- Binärparser für Bitmaps und Anzeigen: 25 Punkte (Binärparsing)
42
+
- Verwendung von Lens: 20 Punkte (Core)
43
+
- Einlesen/Anzeigen von Bildern mittels Library: 10 Punkte (div. Libraries)
44
+
- Binärparser für Bitmaps und Anzeigen: 35 Punkte (Binärparsing)
46
45
- Gameplay-Features:
47
-
- Türen (die man mit Schlüssel öffnen kann): 4 Punkte (Core) + 2 Punkte (Visual.)
48
-
- Handschuhe (die eingesammelt Ziehen von Kisten ermöglichen): 4 Punkte (Core) + 2 Punkte (Visual.)
46
+
- Türen (die man mit Schlüssel öffnen kann): 6 Punkte (Core) + 4 Punkte (Visual.)
47
+
- Handschuhe (die eingesammelt Ziehen von Kisten ermöglichen): 6 Punkte (Core) + 4 Punkte (Visual.)
49
48
- Undo/Redo: 10 Punkte (Core)
50
49
- Speicherfunktion: 10 Punkte (Core)
51
-
- Replayfunktion: 8 Punkte (Core) + 2 Punkte (Visual.)
50
+
- Replayfunktion: 8 Punkte (Core) + 4 Punkte (Visual.)
52
51
- ...
53
52
54
-
### Snake (Punkte: 50 + 50 (optional))
53
+
### Snake (Punkte: 80 + 140 (optional))
55
54
56
55
[Snake](https://en.wikipedia.org/wiki/Snake) mit verschiedenen Level programmieren. Snake ist gut für eine Multiplayer-Implementation geeignet.
57
56
@@ -61,60 +60,60 @@ Level-Variante: Wenn ein Level an der Außenseite keine Wand hat, dann kommt die
61
60
62
61
#### Bepunktung
63
62
64
-
Mindestanforderung:
65
63
Das Spiel ist gemäß der obigen Beschreibung fehlerfrei spielbar. Es gibt verschiedene Level (mit und ohne Wände), die beim Spielstart aus einer oder mehreren Textdateien geparst werden. Eine grafische Oberfläche ist Pflicht (Ausgabe auf der Konsole genügt nicht!), die Wahl der GUI-Bibliothek (gloss, not-gloss, sdl2, gtk2hs,...) steht Ihnen jedoch frei.
66
64
67
-
- Visualisierung: 15 Punkte (Visualisierung)
68
-
- Level-Parser: 15 Punkte (Parser)
69
-
- Implementation Spiellogik: 20 Punkte (Core)
65
+
- Visualisierung: 25 Punkte (Visualisierung)
66
+
- Level-Parser: 25 Punkte (Parser)
67
+
- Implementation Spiellogik: 30 Punkte (Core)
70
68
71
-
Optionale Zusätze:
72
-
Zusätzliche Feature müssen in der Projektbeschreibung und auch in den mitgelieferten Levels auftauchen.
69
+
Optional:
70
+
Zusätzliche Gameplay-Features müssen in mitgelieferten Levels auftauchen.
73
71
74
-
- Benutzung von State oder RWST: 25 Punkte (Core)
75
-
- Verwendung von Lens: 10 Punkte (Core)
76
-
- Einlesen/Anzeigen von Bildern mittels Library: 5 Punkte (div. Libraries)
77
-
- Binärparser für Bitmaps und anzeigen: 25 Punkte (Binärparsing)
72
+
- Benutzung von State oder RWST: 30 Punkte (Core)
73
+
- Verwendung von Lens: 20 Punkte (Core)
74
+
- Einlesen/Anzeigen von Bildern mittels Library: 10 Punkte (div. Libraries)
75
+
- Binärparser für Bitmaps und Anzeigen: 35 Punkte (Binärparsing)
Multiplayer: Jeder Spieler steuert eine Schlange. Tote Schlangen verschwinden vom Spielfeld. Wer zuletzt überlebt, hat gewonnen.
79
+
Multiplayer:
80
+
Jeder Spieler steuert eine Schlange. Tote Schlangen verschwinden vom Spielfeld. Wer zuletzt überlebt, hat gewonnen.
82
81
83
-
- Multiplayer an einem PC: 10 Punkte (Core)
84
-
- Multiplayer über Netzwerk: 10 Punkte (Concurrency) + 10 Punkte (Binärparsing) + 15 Punkte (Core)
85
-
- Dedizierter Multiplayer-Server: 25 Punkte (Concurrency)
82
+
- Multiplayer an einem PC: 15 Punkte (Core)
83
+
- Multiplayer über Netzwerk: 30 Punkte (Concurrency) + 15 Punkte (Binärparsing) + 20 Punkte (Core)
84
+
- Dedizierter Multiplayer-Server: 60 Punkte (Concurrency)
86
85
87
-
### Datamining (Punktesumme: 35 + 45 (optional))
86
+
### Datamining (Punktesumme: 55 + 82 (optional))
88
87
89
-
Es wird ihnen eine CSV-Datei des Haushaltsplanes der Landesregierung NRW von 2015 gegeben. Lesen die Datei ein und visualisieren sie diese in einer geeigneten Weise. Für eine optionale interagierbare Visualisierung gibt es die 20 optionalen Visualisierungspunkte.
88
+
Es wird ihnen eine CSV-Datei eines öffentlichen Haushaltsplanes gegeben. Lesen die Datei ein und visualisieren sie diese in einer geeigneten Weise. Für eine optionale, interagierbare Visualisierung gibt es die 45 optionalen Visualisierungspunkte.
90
89
91
90
#### Bepunktung
92
91
93
-
- Parsing von CSV-Daten mit `,` und `\n`: 7 Punkte (Parser)
94
-
- Verifikation der Daten: 3 Punkte (Parser)
95
-
- Erstellung der Visualisierung: 25 Punkte (Visualisierung)
92
+
- Parsing von CSV-Daten mit `,` und `\n`: 15 Punkte (Parser)
93
+
- Verifikation der Daten: 5 Punkte (Parser)
94
+
- Erstellung der Visualisierung: 35 Punkte (Visualisierung)
96
95
97
-
Optionale Zusätze:
96
+
Optional:
98
97
99
-
- Erkennen/Angeben von Feldtrennern und Zeilentrennern: 7 Punkte (Parser)
100
-
- Sinnvolle interaktive Visualisierung: 10 (Core) + 20 Punkte (Visualisierung) - z.b. wie [Wuppertraler Haushaltsdaten](http://offenerhaushalt.opendatal.de/#produkte/year=2012&art=Ergebnis)
101
-
- Daten im JSON-Format annehmen: 8 Punkte (Parser) bei selbst-schreiben, 8 Punkte (div. Libraries) bei Nutzung von externen Libs.
98
+
- Erkennen/Angeben von Feldtrennern und Zeilentrennern: 10 Punkte (Parser)
99
+
- Sinnvolle interaktive Visualisierung: 15 (Core) + 45 Punkte (Visualisierung) - z.b. wie [Wuppertraler Haushaltsdaten](http://offenerhaushalt.opendatal.de/#produkte/year=2012&art=Ergebnis)
100
+
- Daten im JSON-Format annehmen: 12 Punkte (Parser) bei Selbst-Schreiben, 10 Punkte (div. Libraries) bei Nutzung von externen Libs.
Dieses Projekt entspricht dem Betriebssysteme-Projekt des rechnenden Servers. Ihr Programm soll einen Port öffnen und dort Verbindungen akzeptieren. Diese schicken "Aufträge" (simple Arithmetik mit `+-*/`) an den Server, der einige Zeit brauchen soll, diese zu bearbeiten (2-30 Sekunden). Man kann mehrere "Jobs" starten, sich nach ihrem Zustand erkundigen, die Ergebnisse abholen oder auf Ergebnisse warten.
106
105
107
106
#### Bepunktung
108
107
109
-
- Minimal-Server: 25 Punkte (Parallelism/Concurrency)
108
+
- Minimal-Server: 45 Punkte (Parallelism/Concurrency)
110
109
111
-
Optionale Zusätze:
110
+
Optional:
112
111
113
-
- Parsing der Eingaben mittels Parser: 5 Punkte (Parser)
114
-
- Verwendung von Lenses: 8 Punkte (Core)
115
-
- Verteiltes Rechnen: 25 Punkte (Parallelism/Concurrency) + 45 Punkte (div. Libraries) bei Verwendung von CloudHaskell - man rechnet nicht auf einem Server, sondern auf einer Cloud
112
+
- Parsing der Eingaben mittels Parser: 12 Punkte (Parser)
113
+
- Verwendung von Lenses: 15 Punkte (Core)
114
+
- Verteiltes Rechnen: 35 Punkte (Parallelism/Concurrency) + 70 Punkte (div. Libraries) bei Verwendung von CloudHaskell - man rechnet nicht auf einem Server, sondern auf einer Cloud
116
115
117
-
### Jabber-Bot (Punktesumme: 33 + 72 (optional))
116
+
### Jabber-Bot (Punktesumme: 42 + 110 (optional))
118
117
119
118
Das XMPP-Protokoll (auch Jabber genannt) int eine offene Schnittstelle. Über die Techfak bekommen sie einen eigenen Jabber-Account ([email protected]). Schreiben sie einen Bot, der einfache Aufgaben in einem Jabber-Chat (oder Konferenz) übernimmt.
120
119
@@ -128,22 +127,22 @@ Das XMPP-Protokoll (auch Jabber genannt) int eine offene Schnittstelle. Über di
128
127
129
128
#### Bepunktung
130
129
131
-
- Aufsetzen des Bots: 25 Punkte (div. Libraries)
132
-
- Remember-Me-Aufgabe: 8 Punkte (Core)
130
+
- Aufsetzen des Bots: 40 Punkte (div. Libraries)
131
+
- Remember-Me-Aufgabe: 12 Punkte (Core)
133
132
134
-
Optionale Zusätze:
133
+
Optional:
135
134
136
-
- Wikipedia-Suche-Aufgabe: 16 Punkte (Core) + 8 Punkte (div. Libraries) bei Verwendung von hexpat-lens zum Antwort-Parsen
135
+
- Wikipedia-Suche-Aufgabe: 25 Punkte (Core) + 15 Punkte (div. Libraries) bei Verwendung von hexpat-lens zum Antwort-Parsen
137
136
- Kalender-Plugin:
138
-
- Parser für ekvv-Kalender: 16 Punkte (Parser) oder 16 Punkte (div. Libraries)
139
-
- Implementation Erinnerungsfunktion: 8 Punkte (Core)
137
+
- Parser für ekvv-Kalender: 20 Punkte (Parser) oder 20 Punkte (div. Libraries)
138
+
- Implementation Erinnerungsfunktion: 12 Punkte (Core)
140
139
- Verteiltes Rechnen-Plugin:
141
-
- Bot baut eine Verbindung zum Projekt "Verteiltes Rechnen" auf und leitet Inzut/Output durch: 8 Punkte (Parser) + 8 Punkte (Core)
140
+
- Bot baut eine Verbindung zum Projekt "Verteiltes Rechnen" auf und leitet Input/Output durch: 10 Punkte (Parser) + 12 Punkte (Core)
142
141
- "Webprojekt"-Plugin:
143
-
- Notifications vom Forum per Jabber verstehen und an den angegeben User weiterleiten: 8 Punkte (Core)
142
+
- Notifications vom Forum per Jabber verstehen und an den angegeben User weiterleiten: 16 Punkte (Core)
144
143
145
144
146
-
### Webprojekt (Punktesumme: 50 + 66 (optional))
145
+
### Webprojekt (Punktesumme: 65 + 105 (optional))
147
146
148
147
Erstellen sie ein simples Forum. Die Registrierung kann entweder über Email/Passwort oder auch per Plugins, wie "OAuth" (ekvv, Google, Facebook, Github, Twitter, Twitch, ...) ermöglicht werden.
149
148
@@ -154,19 +153,20 @@ Das Admin-Panel soll umfassen:
154
153
155
154
#### Bepunktung
156
155
157
-
- Minimal-Forum: 40 Punkte (div. Libraries) + 7 Punkte (Core)
158
-
- Registrierung: 3 Punkte (div. Libraries)
156
+
- Minimal-Forum: 42 Punkte (div. Libraries) + 15 Punkte (Core)
157
+
- Registrierung: 8 Punkte (div. Libraries)
159
158
160
159
Optionale Zusätze:
161
160
162
-
- Gute responsive Visualisierung mittels Bootstrap (o.ä.): 30 Punkte (Visualisierung)
163
-
- Upload von Avataren und deren Darstellung: 5 Punkte (div. Libraries)
164
-
- Admin-Panel: 15 Punkte (Core)
165
-
- Notifications per E-Mail: 8 Punkte (Core)
166
-
- Notifications per Jabber: 8 Punkte (div. Libraries)
161
+
- Gute, responsive Visualisierung mittels Bootstrap (o.ä.): 45 Punkte (Visualisierung)
162
+
- Upload von Avataren und deren Darstellung: 12 Punkte (div. Libraries)
163
+
- Admin-Panel: 24 Punkte (Core)
164
+
- Notifications per E-Mail: 12 Punkte (Core)
165
+
- Notifications per Jabber: 12 Punkte (div. Libraries)
167
166
168
167
169
-
# Abgabedatum: ?????.2017
168
+
# Abgabedatum: 18.09.2017, 10 Uhr.
170
169
171
-
Projekte werden vorzugsweise als Projekt auf Github oder über euer __[Remote-Folder](https://techfak.net/dienste/remote/files#git)__ abgegeben. Wir helfen in den Tutorien auch bei der Benutzung von git bzw. bei der Rechtevergabe im Remote-Verzeichnis. Bitte vermeidet es temporäre Dateien (insb. das `.stack-work`-Verzeichnis) in euer git hinzuzufügen. Legt eine [`.gitignore`](https://git-scm.com/docs/gitignore) an, damit sowas nicht zufällig passiert.
170
+
Projekte werden vorzugsweise als Projekt auf Github oder über euer __[Remote-Folder](https://techfak.net/dienste/remote/files#git)__ abgegeben. Jede Abgabe umfasst eine Projektbeschreibung mit Bedienungsanleitung. Die Projekte sind in sinnvoller Weise in Modulen organisiert. Typsignaturen sind mit angegeben und wichtige/komplizierte Stellen sind dokumentiert.
171
+
Bitte vermeiden Sie es Ihrem git Repository temporäre Dateien (insb. das `.stack-work`-Verzeichnis) hinzuzufügen. Legen Sie eine [`.gitignore`](https://git-scm.com/docs/gitignore) an, damit sowas nicht zufällig passiert.
0 commit comments