Einführung in die Systemprogrammierung

Moderne Programmiersprachen wie Java, Haskell, Python, oder Scala machen es Programmierern einfach, mächtige Algorithmen und Systeme in kürzester Zeit in Programmen zu implementieren. Allerdings ist es nicht immer einfach, diese Programme effizient zu gestalten: kleinste Detailänderungen an einer Implementierung können dramatische Auswirkungen auf die Laufzeit oder den Speicherverbrauch haben.

In dieser Veranstaltung betrachten wir daher die Ursprünge, aus denen diese Sprachen erwachsen sind, um zu verstehen, warum die Fundamente dieser Sprachen (die sogenannten Laufzeitsysteme) ihre heutige Form angenommen haben. Dabei untersuchen wir zunächst die Abläufe im Inneren des Prozessors und wenden uns dann den Abstraktionsschichten zu, die sich im Laufe der Zeit als Substrate von Forschung und Systemdesign in Computersystemen angesammelt haben.

Ziel der Veranstaltungen ist es, den Teilnehmern ein Verständnis für die inneren Abläufe im Rechner zu geben und eine Intuition dafür zu vermitteln, was alles passiert oder passieren kann, wenn ein Programm eine bestimmte Aktion ausführt.

Administrativa

Dozent:Prof. Dr. Christoph Reichenbach (reichenbach at cs.uni-frankfurt.de)
Büro:210a, Robert-Mayer-Str. 10
Sprechstunden:Mittwochs, 14:00–16:00 oder nach Vereinbarung
Vorlesung:Hörsaal III, Dienstags 14:00–16:00
Klausur:Hörsaal V am 23.07, 10:00-12:00

Klausur

Übungen

GruppeTagUhrzeitRaum
1Mo16:00–18:00Neue Mensa - NM 130
2Mo18:00–20:00Neue Mensa - NM 126
3Fr12:00–14:00Jügelhaus -- Hörsaal III
4Fr14:00–16:00Neue Mensa - NM 118

Struktur der Übungen

Die Übungen werden gemischt mit Übungszetteln und Programmieraufgaben durchgeführt. Für die Programmieraufgaben benötigen Sie Internet- und RBI-Zugang. Bitte bringen Sie ab der 2. Übung (27.04.) Laptops mit in die Übung, soweit möglich.

Alle Übungen, die sie innerhalb von 12 Tagen nach Freigabe des Übungsblattes abgeben (bis zum Freitag, 16:00, in der folgenden Woche), werden korrigiert, so daß Sie Gelegenheit haben, Ihr Verständnis des Materials zu testen.

C-Übersetzer

Linux

OS X

Windows

Bonuspunkte für Klausur

Für alle Übungen ab der 2. Übung (Arbeitsblatt 01), die sie mit Namen markiert abgeben, erhalten Sie bis zu 10 Punkte. Die Punkte Ihrer zehn besten Übungen werden Ihnen als Bonuspunkte (bis 20%) auf die Klausur angerechnet. Teilaufgaben, die per Rechner erledigt werden müssen, können Sie dabei mit einem Partner bearbeiten.

Literatur

Die Veranstaltung baut auf folgenden Büchern auf: