Funktionale Programmierung
LVA 185.161, VL 2.0, 2003 W
Laborübung
Wichtiger Hinweis: Die Hinweise auf
dieser Seite, insbesondere zu Terminen und Veranstaltungsorten,
berücksichtigen den Informationsstand vom Datum der letzten
Änderung (siehe Seitenanfang). Aufgrund von anstehenden Bauarbeiten in
der Argentinierstr. 8 kann es auch noch kurzfristig zu aktuellen
Änderungen kommen, die dann auf dieser Seite bekannt gegeben
werden. Besuchen Sie diese Seite deshalb von Zeit zu Zeit
wieder. Vielen Dank.
Anmerkung zur email-Nachricht über die erreichte Punktzahl (Info vom 29.01.2004)
In der Benachrichtigung über die insgesamt erreichte Punktzahl
sind Punkte für die Aufgaben 0, 1, 2,...,10 ausgewiesen.
Dabei sind unter Aufgabe 0 die Punkte zur Abgabe "Aufgabe1.lhs" ausgewiesen,
unter Aufgabe 1 die zur Abgabe "Aufgabe1.hs". Bei den übrigen
Aufgaben stimmen Aufgabennummer und Übungsblattnummer überein.
Aus- und Abgabe Übungsaufgaben ab dem 12.11.2003
Die Aus- und Abgabe der Übungsaufgaben wird beginnend mit Blatt 3
von einem Dienstags- auf einen Mittwochsrhythmus umgestellt.
Gruppen
Sie werden die Laborübung in Gruppen zu je zwei Personen durchführen.
Durch die Gruppenarbeit sollen Diskussionen der Übungsbeispiele gefördert
werden. Sie können die Mitglieder Ihrer Gruppe selbst bestimmen.
Persönliche Anmeldung
Um an Funktionale Programmierung, insbesondere an der Laborübung
teilnehmen zu können, müssen Sie sich persönlich anmelden.
Gelegenheit zur Anmeldung besteht in dieser Woche
letztmalig an
den beiden
folgenden Terminen:
- Dienstag, 14.10.2003, 18:15 bis 21:15 Uhr
- Freitag, 17.10.2003, 11:00 bis 14:00 Uhr
Alle Anmeldungen werden in den Ausweich-Übungsräumen in der
Argentinierstraße 8,
2. Stock,
stattfinden. Erscheinen Sie am besten bereits in Gruppen zur
Anmeldung. Bei der Anmeldung erhält jede Gruppe eine Nummer, einen
Account auf dem Übungsgerät und ein Erläuterungsblatt zur Verwendung
des Accounts. Die Entgegennahme des Accounts und dazugehörigen
Passworts sowie die Bereitschaft zur Einhaltung der Benutzerregelung
muss von jedem Übungsteilnehmer durch seine Unterschrift bestätigt
werden. Zur Überprüfung Ihrer Daten wird Ihr Studentenausweis
benötigt. Unmittelbar nachdem Sie Ihren Account erhalten haben, können
Sie ihn bereits verwenden. Loggen Sie sich am besten gleich an einem
Terminal ein und machen Sie sich mit der Übungsumgebung vertraut.
Beim ersten Einloggen werden Sie gebeten, Ihre Namen, Matrikelnummern
und Studienkennzahlen einzugeben.
Übungsaufgaben
Übungsaufgaben werden (ausser in den Weihnachtsferien) wöchentlich am
Dienstag ausgegeben,
ab 12.11.2003 jeweils am Mittwoch. Die erste
Aufgabe gibt es voraussichtlich am 14. Oktober 2003, die letzte am
21. Jänner 2004. Die Angaben werden von der Home-Page
zur Lehrveranstaltung aus erreichbar ins World Wide Web
gestellt. Im Regelfall werden keine gedruckten Exemplare der
Aufgabenblätter zur Verfügung gestellt. Einige (wenige)
Kopien werden allerdings, so lange der Vorrat reicht, in den
Laborräumen zum Abholen aufliegen.
Hinweis zu Aufgabenblatt 7 (vom
10.12.2003)
Siehe unten bei Aufgabenblatt 7!
Hinweis zu Aufgabenblatt 1 (vom
13.11.2003)
Die Erstabgaben zu Aufgabenblatt 1
(Abgabetermin 04.11.2003) sind noch einmal neu bewertet
worden. Gelegenheit zu einer nachträglichen Abgabe besteht jetzt noch
bis spätestens Mittwoch, den 19.11.2003, 12:00
Uhr. Nachträgliche am 12.11.2003 bereits abgesammelte
Abgaben zu Blatt 1 werden nicht berücksichtigt. Für die
Nachabgabe am kommenden Mittwoch werden die Testmuster aus der
Erstbewertung verwendet, also schaltJahr, nicht zusätzlich auch
schaltjahr, ggt :: Integer -> Integer -> Integer, nicht
zusätzlich auch ggt :: (Integer,Integer) -> Integer, etc.
- 10. Aufgabenblatt vom 15.01.2004:
.ps,
.ps.gz
Abgabe spätestens am Mi, 21.01.2004,
12:00 Uhr (nachträgliche Abgabe spätestens am
Mi, 28.01.2004, 12:00 Uhr)
- 9. Aufgabenblatt vom 07.01.2004:
.ps,
.ps.gz
Abgabe spätestens am Mi, 14.01.2004,
12:00 Uhr (nachträgliche Abgabe spätestens am
Mi, 21.01.2004, 12:00 Uhr)
- 8. Aufgabenblatt vom 17.12.2003:
.ps,
.ps.gz
Abgabe spätestens am Mi, 07.01.2004,
12:00 Uhr (nachträgliche Abgabe spätestens am
Mi, 14.01.2004, 12:00 Uhr)
- 7. Aufgabenblatt vom 10.12.2003:
.ps,
.ps.gz
Abgabe spätestens am Mi, 07.01.2004 (war 17.12.2003),
12:00 Uhr (nachträgliche Abgabe spätestens am
Mi, 14.01.2003 (war 07.01.2004), 12:00 Uhr)
Hinweis...
- Graphen
- Für die Teilaufgaben arabisch 1.) bis 4.) sollen
die Graphen nicht als algebraischer Datentyp,
sondern wie im Aufgabenblatt beschrieben als Listen
von Paaren über numerischen Datentypen realisiert werden.
Die Funktionen in arabisch 1.) bis 4.) sollen
direkt auf diesen Listendarstellungen
operieren. Eine spezielle Deklaration eines Typs Graph
ist nicht erforderlich.
- Bei der Implementierung der Funktion insert
ist nicht darauf zu achten, dass sie nur auf wohlgeformte
Graphen angewendet wird (z.B. alle Nachfolger eines Knotens sind
tatsächlich im Graphen enthalten), noch dass das
Resultat wohlgeformt ist. Durch den Aufrufkontext
wird sichergestellt, dass die äußerste Anwendung
von insert einen wohlgeformten Graphen liefert
(bzw. liefern sollte bei sinnvoller Implementierung).
- Typklassen
- Es reicht, die letzte Teilaufgabe mit der Typklasse Sim
für die in der zweiten Teilaufgabe eingeführten
Bäume zu bearbeiten.
- Abgabetermin
- Der Abgabetermin für Serie 7 wird verlängert.
Neuer Termin für die Erstabgabe ist
Mi, 07.01.2004,
und für die Nachabgabe
Mi, 14.01.2004, jeweils
um 12:00 Uhr.
- 6. Aufgabenblatt vom 03.12.2003:
.ps,
.ps.gz
Abgabe spätestens am Mi, 10.12.2003,
12:00 Uhr (nachträgliche Abgabe spätestens am
Mi, 17.12.2003, 12:00 Uhr)
- 5. Aufgabenblatt vom 26.11.2003:
.ps,
.ps.gz
Abgabe spätestens am Mi, 03.12.2003,
12:00 Uhr (nachträgliche Abgabe spätestens am
Mi, 10.12.2003, 12:00 Uhr)
- 4. Aufgabenblatt vom 19.11.2003:
.ps,
.ps.gz
Abgabe spätestens am Mi, 26.11.2003,
12:00 Uhr (nachträgliche Abgabe spätestens am
Mi, 03.12.2003, 12:00 Uhr)
- 3. Aufgabenblatt vom 12.11.2003:
.ps,
.ps.gz
Neu: Abgabe spätestens am Mi, 19.11.2003,
12:00 Uhr (nachträgliche Abgabe spätestens am
Mi, 26.11.2003, 12:00 Uhr)
- 2. Aufgabenblatt vom 04.11.2003:
.ps,
.ps.gz
Abgabe spätestens am Di, 11.11.2003,
12:00 Uhr (nachträgliche Abgabe spätestens am Di, 18.11.2003, 12:00 Uhr)
- 1. Aufgabenblatt vom 16.10.2003:
.ps,
.ps.gz
Abgabe spätestens am Di, 04.11.2003,
12:00 Uhr (nachträgliche Abgabe spätestens am Di, 11.11.2003, 12:00 Uhr)
Ergänzende Bemerkungen...
- ...zu allen Aufgaben: Formulieren Sie die anzugebenden
Rechenvorschriften explizit aus. Es ist Ziel der Aufgaben,
sich in die Sprache Haskell einzuüben, nicht in die
in Bibliotheken möglicherweise zur Verfügung gestellten
Funktionen.
- ...zu Teilaufgabe B4: In dieser
Teilaufgabe soll
die positive Quadratwurzel von r so bestimmt werden, dass das Quadrat
der gefundenen Lösung in einer epsilon-Umgebung von r liegt. Die
Funktion sqrtApprox erwartet die Abweichung epsilon als erstes, die
Zahl r als zweites Argument.
Allgemeine Hinweise: Sie haben für jedes Aufgabenblatt (mit Ausnahme
des 1. Aufgabenblatts, für das Sie bis zum 04.11.2003 etwa 3
Wochen Zeit haben) im Regelfall eine Woche Zeit zur Lösung. Schreiben
Sie Ihre Lösungen in die jeweils am Angabezettel genannten
Unterverzeichnisse in Ihrem Home-Directory. Die Lösungen werden
jeweils dienstags um genau 12 Uhr (strikte Deadline) automatisch
abgesammelt. Rückmeldungen über die für die Abgabe erhaltenen Punkte
bekommen Sie so bald wie möglich per e-Mail, in der Regel nach 2 bis 3
Tagen, manchmal später.
Eine Woche nach dem Abgabetermin (also ca. zwei Wochen nach der Ausgabe der
Übungsaufgabe) werden Änderungen, die Sie mittlerweile gemacht haben, noch
einmal abgesammelt. Diese Änderungen stellen nachträgliche Abgaben dar.
Für nachträgliche Abgaben erhalten Sie aber nur die Hälfte der Punkte, die
Sie bei rechtzeitiger Abgabe erhalten hätten.
Terminals in den Übungsräumen
Sie können Ihre Aufgaben zur Gänze an den Terminals in den
Ausweich-Übungsräumen in der Argentinierstraße 8, 2. Stock,
machen. Loggen Sie sich dazu unter Ihrem Account auf der b1 (ein
Alpha-Server unter Linux) ein. Zum Einloggen wählen Sie im
"Application Launcher" als Server die b1 und geben nach Aufforderung
Ihren Login-Namen sowie Ihr Passwort ein. Vor Verlassen des Terminals
müssen Sie sich unbedingt ausloggen. Dazu machen Sie mit der linken
Maustaste einen Doppelklick auf das "Exit-Logo" (rotes X) in der
linken oberen Ecke des Bildschirms. Achtung: Laufende Anwendungen
werden dabei geschlossen! Veränderte Dateien vorher sichern!
Auf den Terminals in den Übungsräumen können Sie Netscape als Web-Browser
über das "Start-Menü" an der linken unteren Ecke des Bildschirms aufrufen
(auch ohne sich vorher einzuloggen). Da dieser Browser direkt am Terminal
und nicht am Server läuft, haben Sie damit keinen Zugriff auf Ihre eigenen
Daten und können auch nichts speichern. Als Text-Editor verwenden Sie am
besten Emacs. Dieser Editor wird beim Einloggen automatisch gestartet und
läuft normalerweise bis zum Ausloggen. Als Mail-Programme können Sie zum
Beispiel "elm" und "mail" verwenden. Informationen dazu erhalten Sie durch
"man elm" beziehungsweise "man mail". Den Haskell-Interpreter rufen Sie
einfach mit "hugs" auf. Zum Lesen von News können Sie "xrn" verwenden.
Arbeiten von zu Hause aus
Sie können sich auch jederzeit (rund um die Uhr) von jedem beliebigen
Terminal außerhalb der Übungsräume aus unter Ihrem Account auf
b1.complang.tuwien.ac.at einloggen. Eine sichere Verbindung können Sie
durch ssh herstellen, beispielsweise durch das Kommando
"ssh fp???@b1.complang.tuwien.ac.at" unter Unix oder Linux, wobei ???
durch Ihre Gruppennummer zu ersetzen ist.
Sie können die Übung auch zur Gänze auf einem anderen Rechner durchführen.
Dazu benötigen Sie einen Rechner mit dem Haskell-Interpreter Hugs 98.
Diese Software können Sie für unterschiedliche Rechner und Betriebssysteme
von http://www.haskell.org/hugs
herunterladen. Achtung: Abgaben werden nur von Ihrem Account auf
b1.complang.tuwien.ac.at abgesammelt. Wenn Sie auf einem anderen Rechner
arbeiten, vergessen Sie nicht, die abzugebenden Daten rechtzeitig an jedem
Dienstag vor 12 Uhr auf die b1 zu kopieren, beispielsweise mit
"scp -r directory fp???@b1.complang.tuwien.ac.at:~".
Beurteilung
Je nach Qualität Ihrer Lösungen der Aufgabenstellungen bekommen Sie Punkte.
Maximal 100 Punkte pro Aufgabe sind möglich, wenn Sie die Abgabe rechtzeitig
durchgeführt haben. Für Lösungen beziehungsweise Änderungen der Lösungen, die
nachträglich (also eine Woche nach dem Fälligkeitstermin) abgegeben wurden,
gibt es nur die halbe Anzahl der Punkte, die Sie bei rechtzeitiger Abgabe
erreicht hätten. Änderungen der Lösung können die Punkteanzahl nach der Abgabe
sowohl positiv als auch negativ beeinflussen. Das heißt, wenn die Lösung durch
die Änderung schlechter wird, können auch Punkte abgezogen werden. Ihre Punkte
ergeben sich aus folgender Formel: Gesamtpunktezahl = (Punkte für ursprüngliche
Lösung + Punkte für nachträgliche Lösung) / 2. Es sind nie weniger als 0 oder
mehr als 100 Punkte erreichbar.
Bei elf Abgaben sind maximal 1100 Punkte erreichbar. Für eine positive
Beurteilung des Laborübungsteils benötigen Sie 11 Abgaben unterstellt
mindestens 550 Punkte, also 50%, für "Befriedigend" mindestens 688,
für "Gut" mindestens 825 und für "Sehr Gut" mindestens 963 Punkte.
Die Note für den Laborübungsteil bestimmt zur Hälfte die Note der
Lehrveranstaltung. Die zweite Hälfte ergibt sich aus der mündlichen Prüfung
zum Vorlesungsteil. Eine Voraussetzung für eine insgesamt positive Beurteilung
ist aber eine positive Beurteilung beider Teile, des Laborübungsteils und des
Vorlesungsteils. Bei der Vorlesungsprüfung wird (neben dem theoretischen
Stoff des Vorlesungsteils) auch überprüft, ob Sie Ihre eigenen Lösungen der
Aufgabenstellungen auch im Detail verstehen. Die Beantwortung entsprechender
Fragen sollte Ihnen leicht fallen, wenn Sie die Aufgabenstellungen selbst
gelöst bzw. an deren Lösung mitgearbeitet haben.
Bei Fragen und Problemen
Lesen Sie regelmäßig die Newsgroup tuwien.lva.funktional, und posten Sie darin Fragen
zur Lehrveranstaltung, die von allgemeinem Interesse sein könnten. Da
die Newsgroup noch neu ist, kann sie derzeit vermutlich nur über den
Newsserver der TU-Wien (news.tuwien.ac.at) gelesen werden. Nicht für
die Öffentlichkeit bestimmte Fragen zur Lehrveranstaltung können Sie
per e-Mail an fp@b1.complang.tuwien.ac.at
oder direkt an einen Tutor in den Übungsräumen richten. Tutoren werden
während der Übung zu fixen
Zeiten anwesend sein.