Aufgabenpool fuer die Veranstaltung: "Informatik B"

In den Unterverzeichnissen befinden sich einzelne Uebungsaufgaben, die
in einem Masterdokument zu einem Uebungsblatt zusammengefasst werden
koennen. Der Pool sollte jedes Jahr kopiert werden, damit der
"Snapshot" mit dem Stand der vorhergehenden Veranstaltung weiterhin
problemlos zugreifbar bleibt.

Die systematische Benennung der Unterverzeichnisse durch
vorangestellte Praefixe gibt Auskunft ueber den schwerpunktmaessigen
Inhalt den jeweiligen Aufgabe: z.B. bezeichnet der Praefix "net_" eine
Netzwerkaufgabe, "gui_" entsprechend eine Aufgabe zur Gestaltung
grafischer Oberflaechen. Dadurch wird sichergestellt, dass in den
Namen der Verzeichnisse die wesentlichen Informationen zu den
einzelnen Aufgaben kodiert sind. Die Benennung der Unterverzeichnisse
sollte durchgaengig nach dem folgenden Schema erfolgen:

<KATEGORIE>_<THEMA>_<AUFGABE>

Die folgenden Kategorien sind zu verwenden:

<KATEGORIE>:

oop_       allgemeines zur objektorientierten Programmierung (z.B.
           Vererbung, Polymorphie, etc.)
uml_       Modellierung mit UML
jcf_       Aufgaben zum Java Collection Framework
io_        Ein-/Ausgabestreams und Persistenz
thread_    Nebenlaeufigkeit mit Threads
gui_       grafische Oberflaechen (AWT, Swing)
net_       Netzwerkaufgaben
xml_       Aufgaben zum Thema XML
pattern_   Schwerpunkt auf Entwurfsmuster

Weiterhin sollen auschliesslich schriftlich zu bearbeitende Aufgaben
durch einen weiteren Praefix "text_" gekennzeichnet werden, also
z.B. "net_text_protokolle".

Das jeweilige Thema ergibt sich aus der Untergliederung der Vorlesung,
Beispiele sind die folgenden:

<THEMA>
grundlagen_
identitaet_
klasseneigenschaften_
copy_constructor_
constructor_chaining_
klassendiagramm_
abstract_
interface_
polymorphie_
...

Als letztes sollte benannt werden, um welche Aufgabe bzw. welches
Szenario es sich konkret handelt. Dies kann ein Teil der
Aufgabenstellung oder z.B. der konkrete Quellcode sein, um den es sich
bei der Aufgabe handelt:

<AUFGABE> z.B.:
person_tutor
bruch
chainme
pet
printer
bibliothek
...

Die Aufgabenverzeichnisse im [pool] enthalten jeweils die eigentliche
Uebungsaufgabe "aufg.tex" und zum Testen eine einheitliche Vorlage
"blatt_test.tex", die lediglich die im Verzeichnis einzeln vorhandene
Aufgabe einbindet. Innerhalb der Verzeichnisse der einzelnen Aufgaben
*muss* die folgende Verzeichnisstruktur und Namenskonvention
eingehalten werden:

aufg.tex ............ LaTeX-Datei, in der die Uebungsaufgabe und die
                      Musterloesung formuliert ist
blatt_test.tex ...... Masterdokument mit LaTeX-Header, welches zum
                      testweisen TeX'en der einzelnen Aufgabe dient

bewertung.txt ....... Bewertungsschema zu dieser Aufgabe; enthaelt
                      auch Hinweise/Anmerkungen zu der Aufgabe, die in
                      der Vorbesprechung an die Tutoren ausgegeben
                      werden
vorbesprechung.txt .. enthaelt Hinweise, wie die Aufgabe in den
                      Uebungen vorgestellt werden sollte
nachbesprechung.txt . enthaelt Hinweise, die in der Nachbesprechung
                      der Aufgabe in den Uebungen genannt werden
                      sollten

[ausgabe] ........... enthaelt Dateien, die zur Bearbeitung der
                      Aufgaben notwendig und mit dem Uebungsblatt
                      zusammen ausgegeben werden, diese Dateien sind
                      in der Regel auf dem Uebungsblatt verlinkt
                      (die Inhalte dieses Ordners und der Unterordner
                      werden *veroeffentlicht*)
[ausgabe/code] ...... enthaelt Quellcode, der mit dem Uebungsblatt
                      ausgegeben werden muss
                      (Redundanzen mit [uebung/code] vermeiden!)
[ausgabe/images] .... enthaelt Abbildungen und Diagramme, die mit dem
                      Uebungsblatt ausgegeben werden muessen
                      (Redundanzen mit [uebung/images] vermeiden!)

[uebung] ............ Ordner mit Material, Beispielen und Vorlagen,
                      die in den Uebungen ausgegeben werden (die
                      Inhalte dieses Ordners und der Unterordner
                      werden *veroeffentlicht*)
[uebung/code] ....... Ordner, der den Quellcode der Beispiele
                      enthaelt, die in den Uebungen ausgegeben werden
                      (Redundanzen mit [ausgabe/code] vermeiden!)
[uebung/images] ..... Ordner, der Abbildungen und Diagramme enthaelt,
                      die in den Uebungen ausgegeben werden
                      (Redundanzen mit [ausgabe/images] vermeiden!)

[mlsg] .............. Ordner mit den benoetigten Dateien der
                      Musterloesung zur Aufgabe (die Inhalte dieses
                      Ordners und der Unterordner werden
                      *veroeffentlicht*)
[mlsg/code] ......... Ordner mit Quellcode der Musterloesung
[mlsg/images] ....... Ordner mit Abbildungen und Diagrammen der
                      Musterloesung

[code] .............. Ordner mit Quellcode, auf den die Aufgabe
                      verweist bzw. der fuer die Ausarbeitung der
                      Aufgabe genutzt wurde, aber nicht bzw. dessen
                      Inhalte nicht separat veroeffentlich werden
                      sollen (z.B. Test-Programme u.ae.; die Inhalte
                      dieses Ordners werden *nicht* veroeffentlicht)
[images] ............ Ordner mit Abbildungen und Diagrammen, die auf
                      dem Uebungsblatt zu dieser Aufgabe verwendet
                      werden, aber nicht bzw. nicht separat
                      veroeffentlich werden sollen (die Inhalte dieses
                      Ordners werden *nicht* veroeffentlicht)
[material] .......... Ordner mit zusaetzlichem, externen Material,
                      welches zur Erstellung der Aufgabe herangezogen
                      wurde (die Inhalte dieses Ordners werden *nicht*
                      veroeffentlicht)

Nicht fuer alle Aufgaben sind alle Verzeichnisse erforderlich (*keine*
leeren Verzeichnisse anlegen). Die LaTeX- und die Text-Dateien sollten
fuer jede Aufgabe vorhanden sein.

Redundanzen, d.h. doppelt abgelegte Dateien, sollten nach Moeglichkeit
vermieden werden, weil dies schnell zu Inkonsistenzen fuehrt. Zwischen
[ausgabe] und [uebungen] soll es keine Redundanzen, d.h. doppelt
abgelegte Dateien geben (die Inhalte dieser Ordner werden spaeter
zusammenkopiert). In [mlsg] soll allerdings die vollstaendige und
kompilierbare Musterloesung abgelegt werden, auch wenn dadurch
potentielle Redundanzen zu [ausgabe] oder [uebung] entstehen.

Abbildungen und Diagramme sollten moeglichst als .eps oder
.pdf-Dateien vorliegen. Waehrend des Uebersetzungsvorgangs von LaTeX
werden .pdf-Dateien automatisch aus vorhandenen .eps-Dateien
erzeugt. Abbildungen, die in die Aufgabe eingebunden werden (in
'aufg.tex'), muessen in [uebung/images] liegen, sofern sie in den
Uebungen genutzt und entsprechend veroeffentlicht werden
sollen. Anderenfalls koennen sie im Ordner [images] abgelegt und von
dort aus auf dem Uebungsblatt eingebunden werden. Alles im Ordner
[images] wird *nicht* veroeffentlicht, ausser es wird direkt in
'aufg.tex' eingebunden und dadurch auf dem Uebungsblatt
dargestellt. Abbildungen, die Teil der Musterloesung sind, muessen
unter [mlsg/images] abgelegt werden.

Aehnlich ist zu verfahren, wenn Quellcode fuer die Bearbeitung einer
Aufgabe ausgegeben werden muss: Der auszugebene Quellcode von Dateien,
die auf dem Uebungsblatt verlinkt sind, muessen in [ausgabe/code]
liegen. Zusaetzliche Beispiele fuer die Uebungen muessen unter
[uebung/code] abgelegt werden. Zur Aufgabe gehoeriger Quellcode, der
*nicht* veroeffentlicht werden soll, muss im Verzeichnis [code]
liegen. Der Quellcode zu den Musterloesungen ist unter [mlsg/code]
abzulegen.

Quelldateien fuer Abbildungen und Diagramme (z.B. *.dia, *.odt,
*.zargo, ... etc.) koennen unmittelbar im Aufgabenverzeichnis oder
(wenn es sich um mehrere Dateien handelt) im Verzeichnis [images]
abgelegt werden. In beiden Faellen waere sichergestellt, dass diese
Quelldateien nicht veroeffentlicht werden.

Nochmal ausfuehrlicher zu den Dateien im Aufgabenverzeichnis:

- Die eigentliche Aufgabe und die Musterloesung befindet sich jeweils
  in einer Datei mit dem Namen "aufg.tex".

- Mit der Datei "blatt_test.tex" kann eine einzelne Aufgabe testweise
  erstellt werden. Alle Einstellungen und die geladenen Pakete stimmen
  mit der Fassung im echten Aufgabenpool ueberein, so dass das Layout
  so aussehen sollte, wie es spaeter auf einem Uebungsblatt aussehen
  wird. Wenn zusaetzliche LaTeX-Pakete benoetigt werden ist dies
  moeglich. Es sollte aber zusaetzlich kenntlich gemacht werden
  (z.B. als Kommentar in der Aufgabe, welches Paket benoetigt wird),
  dass die Vorlage veraendert worden ist, weil dies spaeter beim
  Einbinden in ein Uebungsblatt ebenfalls beruecksichtigt werden muss.

- In der Datei mit dem Namen "vorbesprechung.txt" sollten einige
  hilfreiche Notizen zur Vorstellung der Aufgabe in den Uebungen
  stehen: Was muss an Hilfestellung gegeben werden, worauf ist
  explizit hinzuweisen, welche API-Klassen sind zu verwenden, ... usw.

- In der Datei "nachbesprechung.txt" steht dasselbe fuer eine
  moegliche Nachbesprechung in den Uebungen: Was sind die Kernteile
  der Aufgaben oder welche Methode z.B. sollte in einer
  Nachbesprechung nochmal explizit durchgegangen werden? Wo sind
  moegliche Fehlerquellen?

- In der Datei "bewertung.txt" soll das Bewertungsschema enthalten
  sein, in der Art, wie sie woechentlich ausgegeben werden.

Im Verzeichnis [pool] befindet sich ausserdem das folgende
Verzeichnis:

0kategorie_thema_aufgabe_MUSTERORDNER/

Dieser Ordner ist quasi eine "Schablone", der die Namenskonvention und
die Ordnerstruktur zu entnehmen ist. Die darin enthaltenen Dateien
sind als Ruempfe fuer die Erstellung eigener Aufgaben geeignet). Es
ist wichtig diese Namenskonvention penibel einzuhalten, damit die
automatische Uebungsblatterstellung funktioniert! Leere Verzeichnisse
allerdings sollten nicht erstellt werden. Das Makefile ist in dieser
Hinsicht robust genug und prueft vor dem Zugriff, ob die
entsprechenden Verzeichnisse vorhanden sind oder nicht.

Stand: 05.10.2012 (woru)

