Bild mit Unilogo
homeicon uni sucheicon suche siteicon sitemap kontakticon kontakt impressicon impressum
unilogo Universität Stuttgart 
Institut für Formale Methoden der Informatik

Abteilung Sichere und Zuverlässige Softwaresysteme

 

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:

Literatur zur Lehrveranstaltung

  • 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

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.