 |
Einführung in die Informatik III (WS 2005/06)
Dozentin: Dr. Barbara
König
Übungsleitung: Dipl.-Inform. Dietmar Lippold
E-Mail: Fragen zur Vorlesung oder Übung sollten an die Adresse
info3@honolulu.informatik.uni-stuttgart.de geschickt werden. Sie
gehen an Barbara König und Dietmar Lippold.
Organisatorisches
Die Prüfung (Klausur) vom 10. August 2006 ist korrigiert.
Die Ergebnisse hängen an der Tür von Zimmer 1.108 aus. Die (vorläufige)
Liste der bestandenen Teilnehmer gibt es
online.
Die Einsichtnahme findet am Freitag, dem 25. August von 10:00 Uhr bis
10:45 Uhr statt.
Hinweis zur schriftlichen Prüfung im August (Klausur):
Diese findet am Donnerstag, dem 10. August 2006 um 15:00 Uhr in Raum
V47.02 statt (für alle Teilnehmer, unabhängig vom Studiengang) und dauert
eine Stunde. In der Prüfung sind keine Hilfsmittel zugelassen.
Ab sofort können die Scheine zur Vorlesung (und auch die
Prüfungsscheine, die die Computerlinguisten benötigen) im
Sekretariat bei Frau Robicek (Raum 1.353) abgeholt werden. Das
Sekretariat ist vormittags zwischen 8:30 Uhr und 12:00 Uhr
geöffnet.
Die Ergebnisse der Prüfung werden im Laufe des
16. März 2006 (Donnerstag) am Raum 1.108 ausgehängt. Die
Klausureinsicht findet am Montag, den 20. März, von 14-15 Uhr im
Raum 1.168 statt. Hier befinden sich
die Fragen der Klausur, zusammen mit einem Lösungsvorschlag.
Die Scheine werden demnächst ausgestellt. Wir geben dann noch
bekannt, ab wann und wo sie abgeholt werden können.
Die geplante Terminverschiebung am Montag ist leider nicht
zustandegekommen. Damit sich möglichst wenig Überschneidungen für die
Automatisierungstechniker ergeben, wird daher die Vorlesung an
jedem Donnerstag im Semester stattfinden. Dafür
findet die Vorlesung nur an jedem zweiten Montag statt. Im einzelnen
sind die Montagstermine: 17.10., 24.10., 07.11., 21.11., 05.12.,
12.12., 19.12., 09.01., 23.01., 06.02.
Beginn der Vorlesung: 17. Oktober 2005
Beginn der Übungen: 25. Oktober 2005
Zeiten und Räume der Vorlesung:
- Montags 15:45 - 17:15 in Raum V38.04, wöchentlich
- Donnerstags 15:45 - 17:15 in Raum V38.04, 14-tägig
Die genauen Termine der Vorlesung werden noch bekanntgegeben. Die erste
Vorlesung am Donnerstag wird aber in der zweiten Vorlesungswoche, also am
27.10.05, stattfinden. Am Donnerstag dem 20.10.05 findet keine Vorlesung
statt.
Die Zeiten und Räume der Übungsgruppen sind:
- Di. 09:45 - 11:15 in Raum 0.108; Tutor Lukas Pinkowski
- Di. 09:45 - 11:15 in Raum 0.363; Tutor Wadim Schleicher
(wurde aufgelöst)
- Di. 09:45 - 11:15 in Raum 0.447; Tutor Samuel Walz
- Di. 17:30 - 19:00 in Raum 0.124; Tutor Lukas Pinkowski
- Mi. 11:30 - 13:00 in Raum 0.108; Tutor Tobias Dipper; Gruppe nur für Autips
- Mi. 11:30 - 13:00 in Raum 0.457; Tutor Dietmar Lippold
Diese Daten sind jetzt als endgültig anzusehen.
Die Anmeldung zu den Übungsgruppen erfolgt über ein WWW-Formular, das über
die entsprechende
Übersichtsseite über den
Link von Einführung in die Informatik III zu erreichen ist.
Eine Anmeldung ist jedoch nur von einem Rechner an der Uni
aus möglich. Der dafür erforderlicher Benutzername und das zugehörige
Passwort werden in der Vorlesung bekannt gegeben.
Inhalt
In dieser Vorlesung geht es um verschiedene Programmierparadigmen
(imperativ, funktional, objekt-orientiert) und deren Implementierung.
Da das imperative Programmierparadigma in den ersten beiden Semestern
am Beispiel von Ada bereits ausreichend behandelt wurde,
beschäftigt sich die Vorlesung vorrangig mit den anderen beiden
aufgeführten Paradigmen.
Dabei liegt der Schwerpunkt zunächst auf der Einführung in
die funktionale Programmierung. Behandelte Konzepte in diesem
Zusammenhang sind Rekursion, Funktionen höherer Ordnung,
Listenverarbeitung, sowie der Lambda-Kalkül und Typsysteme. Im
Zusammenhang mit objektorientierter Programmierung werden Begriffe wie
Objekte, Klassen und Vererbung eingeführt und
erläutert. Damit im Zusammenhang stehen auch Konzepte wie Namen,
Bindung und Bindungsbereiche, die in allen Programmierparadigmen
auftauchen. Als Programmiersprache wird OCaml verwendet (siehe auch
die Hinweise weiter unten).
Weitere Themen der Vorlesung sind die Vor- und Nachteile der
verschiedenen Programmierparadigmen und die konkreten Techniken, die
bei der Implementierung von Programmiersprachen eingesetzt werden.
Das heißt, es geht nicht nur darum, wie Programmiersprachen aus
der Sicht des Programmierers aussehen, sondern auch, wie sie konkret
im Rechner realisiert werden können.
Aufgrund des Dozentenwechsels wird sich der Inhalt der Vorlesung
gegenüber den vorhergehenden Jahren etwas verändern.
Zum Verständnis des Inhalts und zur Vorbereitung auf die Klausur
ist eine regelmäßige Bearbeitung der Übungsaufgaben
und der Besuch der Tutorgruppen unerläßlich.
Folien
Die Folien, die in der Vorlesung eingesetzt werden, werden zur
Verfügung gestellt. Stand vom 16.02.06 (Semesterende)
Hier sind die Folien, zerlegt in die einzelnen Kapitel der Vorlesung:
- Organisatorisches: normal,
2x2
- Einführung: normal,
2x2
- Funktionale Programmierung (Grundlagen):
normal,
2x2
- Funktionale Programmierung (Semantik und Implementierung):
normal,
2x2
- Imperative Programmierung (Sprachkonstrukte):
normal,
2x2
- Imperative Programmierung (Implementierung):
normal,
2x2
- Objekt-orientierte Programmierung (Grundlagen):
normal,
2x2
- Objekt-orientierte Programmierung (Implementierung):
normal,
2x2
- Modularität und Entwicklung großer Programme:
normal,
2x2
Hard- und Software für die Übungen
Die Übungen können auf den Rechnern im Grundstudiumspool Raum 0.037
erstellt werden. Wer auf diesen Rechnern noch keinen Account hat, was
insbesondere für die Teilnehmer aus anderen Fakultäten zutreffen wird,
kann einen Account nach Ausfüllen eines entsprechenden Antrags
bekommen. Die Anträge werden bei den ersten beiden Vorlesungsterminen
verteilt, sind aber auch davon unabhängig davon bei der Betreuung im
Rechnerpool zu erhalten.
Da die Übungen in der zweiten Vorlesungswoche beginnen und die ersten Aufgaben
bis dahin abzugeben sind, sollte der ausgefüllte Antrag so schnell wie möglich
unter Vorlage der Studienbescheinigung bei der Betreuung im Rechnerpool
abgegeben werden.
Die Übungen können jedoch auch auf dem eigenen Rechner zu Hause erstellt
werden. Zu der in der Veranstaltung eingesetzten Programmiersprache
Objective Caml ist eine
kostenfreie
Entwicklungsumgebung verfügbar.
Übungsblätter
Bisher wurden folgende Übungsblätter ausgegeben:
Überzählige Exemplare des jeweils letzten Übungsblatts liegen in einem
Kasten gegenüber den Post-Schränken im ersten Stockwerk.
Auf den Übungsblättern gibt es zwei Arten von Aufgaben. Die Aufgaben, die
den Vermerk schriftlich tragen, sind den Tutoren bis montags
10:00 Uhr per E-Mail zuzusenden. Alle anderen Aufgaben sind so
vorzubereiten, daß sie in der Übungsgruppe vorgerechnet werden können. Die
E-Mail Adressen der Tutoren lauten:
- Stammbaum der Programmiersprachen.
- Eine Notationsübersicht zu
UML 1.4
und
UML 2.0
- Ein OCaml-Programm für einen Taschenrechner, der
einer vereinfachten Version des Programms xcalc unter Linux
entspricht (s. Aufgabe 3 von Blatt 13).
Literatur zu OCaml
- Das
Objective
Caml manual, auch zum Download.
- Die Dokumentation der
Standard-Bibliothek zu Objective Caml.
-
A Concise Introduction to Objective Caml von David
Matuszek, 2000. Einzelne Details stimmen jedoch nicht mit der oben
genannten Version von OCaml überein.
-
Introduction to the Objective Caml Programming Language
(pdf Dokument) von Jason Hickey, 4. September 2002.
- Eine
Seminar-Ausarbeitung mit dem Titel Kombination von
funktionalen und objektorientierten Konzepten am Beispiel OCaml
von Sven Nowak, WS 2004/2005.
- Guy Cousineau and Michel Mauny.
The
Functional Approach to Programming with Caml (Caml Light).
Cambridge University Press, 1998, ISBN 0-521-57183-9 (hardcover),
0-521-57681-4 (paperback).
- Emmanuel Chailloux, Pascal Manoury and Bruno Pagano.
Developing
Applications With Objective Caml (vorläufige Übersetzung). Die
Übersetzung ist noch nicht ganz beendet und das Buch daher noch nicht
verfügbar. Die derzeitige Version steht aber zum Download bereit.
- Jürgen Wolff von Gudenberg. Algorithmen, Datenstrukturen,
Funktionale Programmierung - Eine praktische Einführung mit
Caml Light. Addison-Wesley, 1996. ISBN 3-8273-1056-3.
- Caml programming
guidelines von Pierre Weis.
- FAQ zu Caml
- FAQ der Newsgroup
de.comp.lang.funktional
-
Eintrag zu OCaml beim englischen Wikipedia
- Eintrag zu OCaml beim
deutschen Wikipedia
Weitere Verweise finden sich auf einer
Seite der
Entwickler der Sprache OCaml. Beachten Sie bitte außerdem, daß
sich das zweite und vierte Buch auf Caml Light beziehen, dabei gibt
es gegenüber OCaml einige kleine Unterschiede in der Programmsyntax.
Weitere Literatur
- Gerhard Goos. Vorlesungen über Informatik Band 1: Grundlagen
und funktionales Programmieren. Springer, 2000.
- Gerhard Goos. Vorlesungen über Informatik Band 2:
Objektorientiertes Programmieren und Algorithmen. Springer, 2001.
- Harold Abelson, Gerald Jay Sussman and Julie Sussman. Structure
and Interpretation of Computer Programs. MIT Press, 1996.
(auch in deutscher Übersetzung unter dem Titel Struktur
und Interpretation von Computerprogrammen erhältlich.)
- Michael L. Scott. Programming Language Pragmatics.
Morgan Kaufmann Publishers, 2000.
- Dick Grune, Henri E. Bal, Ceriel J.H. Jacobs, Koen G. Langendoen:
Modern Compiler Design. Wiley, 2000.
|
|