Skip to content

Commit d238802

Browse files
author
BergesJ
committed
update 2017
1 parent 8d43c85 commit d238802

File tree

2 files changed

+72
-72
lines changed

2 files changed

+72
-72
lines changed

Projekte2017.md

+72-72
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ Zum Bestehen der Veranstaltung müssen Sie insgesamt (Übung + Projekt) 220 Punk
66

77
Die Punkte sind unterteilt in Kategorien, aus denen nicht mehr als die angegebene Anzahl berücksichtigt wird:
88

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
1515

1616
Dies dient dazu, dass man sich nicht nur auf eine Sache konzentriert, sondern verschiedene Aspekte und deren Zusammenspiel verstanden haben muss.
1717

@@ -21,37 +21,36 @@ Für alle Projekte gilt: **Bitte schreiben Sie ordentlichen Code. Organisieren S
2121

2222
## Projekte
2323

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.
2525

26-
### Sokoban (Punkte: 80 + 80 (optional))
26+
### Sokoban (Punkte: 115 + 105 (optional))
2727

2828
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.
2929

3030
#### Bepunktung
3131

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.
3433

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)
3938

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.
4241

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)
4645
- 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.)
4948
- Undo/Redo: 10 Punkte (Core)
5049
- Speicherfunktion: 10 Punkte (Core)
51-
- Replayfunktion: 8 Punkte (Core) + 2 Punkte (Visual.)
50+
- Replayfunktion: 8 Punkte (Core) + 4 Punkte (Visual.)
5251
- ...
5352

54-
### Snake (Punkte: 50 + 50 (optional))
53+
### Snake (Punkte: 80 + 140 (optional))
5554

5655
[Snake](https://en.wikipedia.org/wiki/Snake) mit verschiedenen Level programmieren. Snake ist gut für eine Multiplayer-Implementation geeignet.
5756

@@ -61,60 +60,60 @@ Level-Variante: Wenn ein Level an der Außenseite keine Wand hat, dann kommt die
6160

6261
#### Bepunktung
6362

64-
Mindestanforderung:
6563
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.
6664

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)
7068

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.
7371

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)
7876
- Highscore-Screen (angezeigt beim Pausieren/nach Spielende): 8 (Core) + 4 (Visualisierung)
79-
- Items (beschleunigt, verbreitert o.ä. temporär... ): 4 (Core) + 2 (Visualisierung)
77+
- Items (beschleunigt, verbreitert o.ä. temporär... ): 6 (Core) + 4 (Visualisierung)
8078

81-
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.
8281

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)
8685

87-
### Datamining (Punktesumme: 35 + 45 (optional))
86+
### Datamining (Punktesumme: 55 + 82 (optional))
8887

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.
9089

9190
#### Bepunktung
9291

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)
9695

97-
Optionale Zusätze:
96+
Optional:
9897

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.
102101

103-
### Verteiltes Rechnen (Punktesumme: 25 + 78 (optional))
102+
### Verteiltes Rechnen (Punktesumme: 45 + 132 (optional))
104103

105104
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.
106105

107106
#### Bepunktung
108107

109-
- Minimal-Server: 25 Punkte (Parallelism/Concurrency)
108+
- Minimal-Server: 45 Punkte (Parallelism/Concurrency)
110109

111-
Optionale Zusätze:
110+
Optional:
112111

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
116115

117-
### Jabber-Bot (Punktesumme: 33 + 72 (optional))
116+
### Jabber-Bot (Punktesumme: 42 + 110 (optional))
118117

119118
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.
120119

@@ -128,22 +127,22 @@ Das XMPP-Protokoll (auch Jabber genannt) int eine offene Schnittstelle. Über di
128127

129128
#### Bepunktung
130129

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)
133132

134-
Optionale Zusätze:
133+
Optional:
135134

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
137136
- 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)
140139
- 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)
142141
- "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)
144143

145144

146-
### Webprojekt (Punktesumme: 50 + 66 (optional))
145+
### Webprojekt (Punktesumme: 65 + 105 (optional))
147146

148147
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.
149148

@@ -154,19 +153,20 @@ Das Admin-Panel soll umfassen:
154153

155154
#### Bepunktung
156155

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)
159158

160159
Optionale Zusätze:
161160

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)
167166

168167

169-
# Abgabedatum: ?????.2017
168+
# Abgabedatum: 18.09.2017, 10 Uhr.
170169

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.
172172

Projekte2017.pdf

74.2 KB
Binary file not shown.

0 commit comments

Comments
 (0)