Termin: Mo 14:00 Uhr - 15: 15 Uhr
Ort: HS 6
Studiengänge:
B_Inf1, B_TInf1, B_MInf1, B_WInf1
Die einzelnen Teile werden rechtzeitig vor der jeweiligen Vorlesung hier ins Netz gestellt.
1. Einführung
2. Logik
2.1 Aussagenlogik
2.2 Prädikatenlogik
3. Grundlagen logischer Programmierung
4. Verifikationstechniken (Zusammenfassung)
4.1 Verifikation mit
Hoare-Tripeln
4.2 Verifikation von
Verzweigungen
4.3 Verifikation von
Schleifen
4.4 Modulare und
funktionale Programmierung
4.5 Rekursion (19.12.,
03.01.)
5. Einführung in die
Komplexitätstheorie (03.01., 09.01) (Beispieltabelle für
Komplexitätsgrößen)
Klausur-Checkliste (in rot: Änderung zum letzten
Semester)
Klausur (90 min) vom
01.02.2006 (107 Teilnehmer, 34 durchgefallen (32%), Notendurchschnitt
3,5)
Klausur (60 min) vom
01.02.2006 (6 Teilnehmer, 2 durchgefallen (33%), Notendurchschnitt 4,3)
Organisatorisches:
In jeder Woche werden von Maximilian Herold Übungsaufgaben
gestellt.
Diese stehen auf seiner Homepage
im
Netz.
Dort gibt es auch Informationen zu den studentischen Tutorien,
in denen Verständnisschwierigkeiten geklärt werden
können.
Die Übungen sollen selbständig bearbeitet und bei Herrn
Herold eine Woche
nach Ausgabetermin abgegeben werden (mit Angabe des
Übungstermins/Tutors).
Der Tutor / die Tutorin streicht die Fehler an und bespricht die
wichtigsten
Schwierigkeiten
im darauf folgenden Tutorium.
Außerdem werden Fragen zur Vorlesung beantwortet.
Herr Herold hält Do 17:00 Uhr -
18:15 Uhr in HS 2 eine große Übung
ab,
in der die Aufgaben vorgeführt
werden.
Spätestens zum Anfang dieser Übung sollen die bearbeiteten
Übungsaufgaben
der Vorwoche abgegeben werden.
Diese Vorlesung legt das theoretische Fundament zur Vorlesung
Programmieren 1 und darauf aufbauender Programmierveranstaltungen
und wendet sich an die Anfänger aller
Informatikstudiengänge.
Es gibt in den
Inhalten Überschneidungen nicht nur zu Programmieren 1, sondern
auch zur Vorlesung Diskrete Mathematik,
die aus Gründen
der inhaltlichen Geschlossenheit gewünscht sind.
Die Vorlesung wurde als Grundlagen
der Programmierung von mir erstmals im WS 2004/2005 gehalten.
Im SS 2005 folgte die Aufteilung der Logik zwischen Diskrete Mathematik
und dieser Vorlesung.
Die zugehörigen Folien können hier
eingesehen werden. Sie werden in großen Teilen unverändert
auch in dieser
Vorlesung zum Einsatz kommen.
Inhaltlich wird sich die Vorlesung in diesem Semester allerdings
darin
unterscheiden, dass sich der Akzent etwas von der fast
ausschließlichen
Relevanz für Programmieren 1 auf die Informatik allgemein
verschiebt (daher der geänderte Name der Vorlesung).
Es wurde aus diesem Grund das Kapitel 3 zur logischen Programmierung
eingefügt.
In Kapitel 4 werden die Verifikationstechniken für die
Sprachbestandteile imperativer Programmierung
(das ist das Konzept, das in Programmieren 1 und 2 gelehrt wird)
etwas gestrafft behandelt und abschließend ein Vergleich zu den
anderen Prinzipien angestellt.
In Kapitel 5 werden Entwurf und Analyse von Algorithmen behandelt (wie
beim letzten Mal).
Roland Backhouse: Programmkonstruktion
und Verifikation,
Hanser 1989 (vergriffen, Kopie
ist im Asta erhältlich),
ISBN 3-446-15056-0
Englische Neuauflage: Program Construction: Calculating
Implementations from Specifications, Wiley 2003, ISBN 0470848820
Helmut Balzert: Lehrbuch
Grundlagen der Informatik, Spektrum 2005 (2. Auflage),
ISBN 3-8274-1410-5
in unserer Bibliothek: Spektrum 1999 (1. Auflage),
ISBN 3-8274-0358-8
Heinz-Peter Gumm / Manfred Sommer: Einführung in die Informatik, Oldenbourg
2004 (6. Auflage), ISBN
3-486-27389-2
Gerhard Goos: Vorlesungen über Informatik, Band1: Grundlagen und funktionales Programmieren, Springer 2000 (3. Auflage), ISBN 3-540-67270-2
Michael Huth / Mark Ryan: Logic
in Computer Science, Cambridge University Press 2004 (2.
Auflage), ISBN
052154310X