Die nichtsahnenden Zuhörer erfuhren, daß sie im Folgenden einen ersten Einblick in die imperative Programmierung bekommen sollten, die stark am von-Neumann-Rechner orientiert ist und somit verschieden vom Lambda-Kalkül, das sie ja im letzten Semester hatten.
Die Vorlesung begann mit einer Literaturübersicht, insbesondere verwies Herr Rahman auf Knuths Bände Numerical, Seminumerical and Sesquinumerical(!) Algorithms. Zum letzteren erzählte er: dieser Band ist ganz selten, den gibt es nur auf französisch.
Danach folgte eine Übersicht über die Grundkonzepte der imperativen Programmierung, insbesondere die Sprungbefehle. Wichtige Beispiele waren Funktionen (Sprung mit Rücksprung), GoDelayed (wenn der Befehl nicht sofort ausgeführt werden soll) und ComeFrom. Erläuterung: Gotos machen Programme kompliziert, darum ist es sinnvoll, sie zu benutzen. Häufig sehen komplizierte Programme einfach aus - so sehen sie auch wirklich kompliziert aus.
Dann folgten beispielhafte Algorithmen: Bucket Sort (und sie sehen, wenn die Zahlen hier nicht in Radix-Form wären, könnte das nicht funktionieren) und Travelling-Salesman (dieser Algorithmus funktioniert zwar nicht, läuft dafür aber in O(n)).
Schließlich gab es noch eine Einführung in Datenstrukturen: Das Datum wird in vielen Rechnern als Sekunden seit einem bestimmten Zeitpunkt gespeichert. Manche Daten kann man sich allerdings auch einfacher speichern, z.B. das Geburtsdatum, das kennt eh jeder auswendig. Oder auch den ersten April, den merkt man ja schon daran, daß jeder einen in den April schickt!
Herr Rahman heißt in Wirklichkeit Bahman Engheta und studiert Mathematik. Er sagte über die Vorlesung: Die Studenten waren erstaunlich! Sie haben alles mitgeschrieben, es kamen keine Zwischenfragen und wenn ich fragte, ob sie etwas schon kennen (z.B. Radix-Form), gab es immer irgendjemanden, der nickte. Ich fragte mich: Ist das etwa richtig, was ich hier erzähle?
Wer sich die Folien ansehen will, findet sie hier als Powerpoint-Datei und kann sie zumindest am PC ansehen.
Fabian