Übung „Algorithmieren und Programmieren“ des Wintersemesters 2007/08

Aktuelles

04.12.2007
In der Vorgabe vorgU6.6.hs wurde ein Fehler beseitigt.
30.11.2007
In der Heliumversion, die für die Installation unter Debian GNU/Linux benutzt wird, wurde ein Bug beseitigt.
30.11.2007
Dem Abschnitt über Software wurden Informationen über die Hugsinstallation unter Windows Vista hinzugefügt.
27.11.2007
Dem Abschnitt über Software wurden weitere Informationen über Helium hinzu gefügt.
19.11.2007
Ein Abschnitt über Software wurde der Übungsseite hinzu gefügt.
31.10.2007
Die Musterlösung zu Aufgabe 5 des ersten Aufgabenblattes stimmte nicht mit der Aufgabenstellung überein. Sie wurde jetzt korrigiert.
26.10.2007
Die Übungsgruppe von Jürgen Lösche trifft sich ab sofort donnerstags im 4. Block im Raum 110a des Lehrgebäudes 1A. Die Übungsgruppe von Jörg Krause, welche sich dienstags im 6. Block treffen sollte, wird wegen fehlender Teilnehmer ersatzlos gestrichen.
26.10.2007
Das dritte und vierte Aufgabenblatt werden noch einmal einer Prüfung auf Korrektheit unterzogen. Daher stehen beide Blätter momentan nicht zum Download zur Verfügung. Wenn Sie sich diese Blätter bereits herunter geladen haben, prüfen Sie nach der erneuten Veröffentlichung bitte, ob es Änderungen an den Aufgaben gegeben hat!
26.10.2007
Es wurden Fehler im zweiten Aufgabenblatt beseitigt. Studenten, die sich das zweite Aufgabenblatt bereits herunter geladen haben, prüfen bitte, ob ihre Version aktuell ist.
15.10.2007
Im Tutorium am 15. Oktober 2007 werden organisatorische Hinweise gegeben und Fragen beantwortet.
15.10.2007
Die Übungen beginnen entgegen früherer Informationen bereits in der ersten Vorlesungswoche.

Allgemeines

Bitte unbedingt das Merkblatt lesen!

Einschreibung

Die Einschreibung zur Lehrveranstaltung erfolgt über das LEHVIS-System. Für Fragen zu den Aufgabenblättern ist der Tutor der entsprechenden Übungsgruppe zuständig, dessen E-Mail-Adresse dem LEHVIS-System entnommen werden kann. (Dazu nach dem Einloggen auf „Übersicht“ klicken!)

Lesen von E-Mails

Bitte achten Sie darauf, dass Sie auch E-Mails lesen, die an Ihre zentrale BTU-Adresse (…@tu-cottbus.de) und Ihre Informatikadresse (…@informatik.tu-cottbus.de) gesendet werden. Sollten Sie bereits eine private E-Mail-Adresse haben, dann können Sie die E-Mails dahin weiterleiten lassen. Für die BTU-Adresse kann diese Weiterleitung über die Administrationswebsite für den zentralen BTU-Account aktiviert werden. Hinweise zur Weiterleitung von E-Mails, die an die Informatik-Adresse gesendet wurden, finden Sie auf den entsprechenden Serviceseiten des Instituts für Informatik. (Hilfe kann Ihnen Frau Ebert geben.)

Fragen und Probleme

Bei organisatorischen Fragen (zum Beispiel bei Problemen beim Finden einer geeigneten Übungsgruppe) wendet man sich an Wolfgang Jeltsch. Seine offiziellen Sprechzeiten sind dienstags von 11.00 Uhr bis 13.00 Uhr und freitags von 10.00 Uhr bis 12.00 Uhr. Während dieser Zeiträume kann man ihn auf jeden Fall in seinem Büro antreffen.

Tutorium

Das Tutorium ist eine Hörsaalübung, in der Vorlesungsstoff wiederholt und an Beispielen verdeutlicht wird. Es findet montags von 11.30 Uhr bis 13.00 Uhr im Audimax 1 statt und wird von Prof. Dr. Peter Bachmann geleitet.

Achtung! Das erste Tutorium findet bereits am 15. Oktober 2007 statt. Dort werden hauptsächlich organisatorische Fragen behandelt.

Foren

Begleitend zur Lehrveranstaltung gibt es zwei Webforen:

Algorithmieren und Programmieren
Hier kann man Fragen und Probleme rund um die Lehrveranstaltung diskutieren und Hilfe von anderen Studenten und von Lehrkräften bekommen.
Algorithmieren und Programmieren – Tutoriumsfragen
Hier können Fragen gestellt werden, auf welche Herr Bachmann im Tutorium eingehen sollte.

Übungsaufgaben

Das Lösen der Übungsaufgaben und das Einreichen der Lösungen beim Tutor ist freiwillig. Die Lösungen gehen in keiner Weise in die Prüfung ein, aber ohne Üben ist die Chance zum Bestehen der Lehrveranstaltung sehr gering. Gern können Übungsaufgaben mit anderen Studenten gemeinsam gelöst werden und gern können gemeinsame Lösungen abgegeben werden, aber selbst gelöst schafft Sicherheit.

Abgebene Lösungen werden auf Richtigkeit geprüft und mit Kommentaren versehen. Die Aufgabenblätter sind sehr umfangreich und es wird nicht erwartet, dass alle Aufgaben gelöst werden. Lösungen werden nicht bewertet, aber es wird eine formale Einschätzung vorgenommen, die helfen soll, den Arbeitseifer zu steuern. Diese Einschätzung besteht aus zwei Ziffern und ist folgendermaßen zu interpretieren:

linke Ziffer
1 bedeutet „macht sehr intensiv mit“, 2 bedeutet „macht mit“
rechte Ziffer
1 bedeutet „sehr gute Lösungen“, 2 bedeutet „gute Lösungen“, 3 bedeutet „Lösungen mangelhaft“

Insgesamt werden 12 Aufgabenblätter ausgegeben. Die Lösung der Aufgaben ist in schriftlicher Form beim jeweiligen Tutor abzugeben. Für manche Aufgaben sind Haskell-Programme, für manche C++-Programme zu schreiben. Die Quelltexte dieser Programme müssen über LEHVIS abgegeben werden. (Dazu nach dem Einloggen auf „Programmabgabe“ klicken!) Nur syntaktisch korrekte Quelltexte werden vom System akzeptiert und an den Tutor weitergeleitet.

Für die Programmabgabe sind Vorgaben zu benutzen:

Haskell

Eine Vorgabe besteht aus einer Datei mit der Bezeichnung vorgUm.n.hs bzw. vorgUm.n.xxx.hs. Dabei ist m die Nummber des Aufgabenblattes, n die Nummer der Aufgabe und xxx ein Identifikator, der bei Aufgaben verwendet wird, in denen mehrere Funktionen zu implementieren sind. Die Vorgabedatei ist jeweils herunter zu laden und zu einer Lösung zu ergänzen. Bei der Programmabgabe ist diese Datei dann wieder einzureichen. (Hierzu den Schalter „Quelltexte senden“ verwenden!)

In der Vorgabedatei ist als Kommentar ein Standardtestfall einschließlich Lösung angegeben. Es empfiehlt sich, auf dem lokalen Rechner diesen Testfall abzuarbeiten.

C++

Eine Vorgabe besteht aus drei Dateien:

vorgUm.n.h
enthält Vereinbarungen
vorgUm.n.c++
enthält Implementierungen von Hilfsfunktionen und die Implementierung der main-Funktion
aufgUm.n.c++
enthält Codefragmente, die zu einer Lösung zu ergänzen sind

Die Bedeutung von m und n ist analog zu den Haskell-Vorgaben. Alle drei Vorgaben sind in einer ZIP-Datei zusammen gefasst, die herunter zu laden und zu entpacken ist. Nur in der Datei aufgUm.n.c++ sind Ergänzungen vorzunehmen. Bei der Programmabgabe sind die drei Dateien separat einzureichen.

Im C++-Teil sind keine Standardtestfälle angegeben.

Wichtig: In den Vorgaben dürfen grundsätzlich keine vorhandenen Einträge verändert werden.

Achtung! Manche Programmieraufgaben sind auch im Programmierpraktikum gestellt. Die Studenten, die am Programmierpraktikum teilnehmen, reichen die entsprechenden Lösungen dort ein und nicht hier.

Die Aufgabenblätter inklusive Vorgaben sowie nach Abgabetermin veröffentlichte Musterlösungen finden sich in folgender Tabelle:

lfd. Nr. Aufgabenblatt Vorgaben Abgabe in der Woche Musterlösung
vom bis
1 Download   22.10.2007 26.10.2007 Download
2 Download   29.10.2007 02.11.2007 Download
3 Download   05.11.2007 09.11.2007 Download
4 Download   12.11.2007 16.11.2007 Download
5 Download 26.11.2007 30.11.2007 Download
6 Download 03.12.2007 07.12.2007 Download
7 Download 10.12.2007 14.12.2007 Download
8 Download 17.12.2007 21.12.2007 Download
9 Download   14.01.2008 18.01.2008 Download
10 Download 21.01.2008 25.01.2008 Download
11 Download 28.01.2008 01.02.2008 Download
12 Download 04.02.2008 08.02.2008 Download

Übungsgruppen

Es werden Übungsgruppen mit bis zu 20 Teilnehmern gebildet. Für jede Übungsgruppe ist wöchentlich ein Block als Präsenzzeit reserviert. Dieser soll zur Beantwortung von Fragen der Studenten sowie zum Besprechen von Lösungen genutzt werden.

Die vorhandenen Übungsgruppen können dem Stundenplan entnommen werden. Manche Übungsgruppen sind ausschließlich für Studenten bestimmter Studiengänge vorgesehen, andere sind unabhängig von einem bestimmten Studiengang.

Studenten, welche sowohl die Übung als auch das Programmierpraktikum absolvieren, schreiben sich bitte für Übung und Programmierpraktikum beim selben Tutor ein. Studenten, welche nur die Übung absolvieren, schreiben sich bitte bei einem Tutor ein, welcher keine Praktikumsgruppen betreut.

Wichtige Termine

erste Zwischenklausur
am 26. November 2007 anstelle des Tutoriums (gleicher Raum und gleiche Zeit)
zweite Zwischenklausur
am 7.  Januar 2008 anstelle des Tutoriums (gleicher Raum und gleiche Zeit)
Abschlussklausur
am 18. Februar 2008 von 9.00 Uhr bis 11.00 Uhr im Audimax 2 und im Großen Hörsaal

Software

Zur Lösung der Haskellaufgaben können z.B. die Haskellsysteme Hugs und Helium benutzt werden. Hugs ist das System, mit dem die Programmabgaben durch LEHVIS getestet werden. Es sollte also sicher gestellt werden, dass die geschriebenen Programme mit Hugs funktionieren. Helium dagegen kann während der Programmentwicklung von Vorteil sein. Helium unterstützt zwar nur eine eingeschränkte Variante von Haskell, liefert dafür aber sehr aussagekräftige Warnungen und Fehlermeldungen. Es wurde speziell für das Erlernen von Haskell entwickelt.

Die Einschränkungen von Helium sollten im Rahmen unserer Lehrveranstaltung kaum zum Tragen kommen und im Zweifelsfall kann ja immernoch auf Hugs ausgewichen werden. Eine wichtige Einschränkung ist, dass Helium keine (n + k)-Muster unterstützt. Die folgende Definition der Fakultätsfunktion wird daher von Helium nicht akzeptiert:

fac :: Int -> Int
fac 0       = 1
fac (n + 1) = (n + 1) * fac n

Das Problem ist das Muster (n + 1) in der letzten Zeile. Das ist nicht übermäßig tragisch, da man den Code wie folgt umschreiben kann:

fac :: Int -> Int
fac 0 = 1
fac n = n * fac (n - 1)

Analog können sämtliche Vorkommen von (n + k)-Mustern beseitigt werden.

Zum Entwickeln und Testen der C++-Programme kann z.B. der GNU-C++-Compiler (g++) benutzt werden. Da LEHVIS die Programme mit diesem Compiler testet, müssen sie mit diesem verträglich sein.

Die folgende Tabelle gibt Installationshinweise für die einzelnen Softwarepakete für unterschiedliche Betriebssysteme. Dabei gelten die Informationen zu Debian GNU/Linux vermutlich auch für die Betriebssysteme der Ubuntufamilie. Ich würde mich freuen, wenn jemand von Ihnen Informationen zur Installation auf anderen Betriebssytemen (z.B. Mac OS X oder Fedora) hat und diese mir mitteilt.

  Hugs Helium GNU-C++-Compiler
Debian GNU/Linux 4.0 das Paket hugs installieren die Pakete ghc6, libghc6-mtl-dev, sun-java5-jre (non-free) und wget installieren, das Script get-helium herunter laden, die in der Datei enthaltenen Lizenzbedingungen beachten und das Script mit dem Helium-Zielverzeichnis als Argument ausführen das Paket g++ installieren (sofern es nicht schon installiert ist)
Microsoft Windows XP MinHugs-Sep2006.exe herunter laden, starten und den Anweisungen folgen SetupHelium1.6.exe herunter laden, starten und den Anweisungen folgen MinGW-5.1.3.exe herunter laden, starten und den Anweisungen folgen
Microsoft Windows Vista MinHugs-Sep2006.exe herunter laden, starten, den Anweisungen folgen und im Falle von Fehlermeldung die unter [1] stehende Empfehlung beherzigen SetupHelium1.6.exe herunter laden, starten und den Anweisungen folgen MinGW-5.1.3.exe herunter laden, starten und den Anweisungen folgen
andere Betriebssysteme Hugs-Downloadseite konsultieren Helium-Downloadseite konsultieren (keine Information)

letzte Änderung am 14.02.2008 um 22.30 Uhr durch Wolfgang Jeltsch