Professur Praktische Informatik






Lehre

Lehrveranstaltungen im Wintersemester 2011/2012

Veranstaltung Tag Zeit Raum Art Dozent
Höhere Programmiersprachen Mi 11:30–13:00 1/204 V Prof. Dr. G. Rünger
Mo 13:45–15:15 1/368 Ü Dr. J. Dümmler
Mo 15:30–17:00 1/208 Ü Dr. M. Schwind
Di 7:30–9:00 1/368 Ü Dr. J. Dümmler
Compilerbau Di 15:30–17:00 1/205 V Prof. Dr. G. Rünger
Übung Compilerbau (Deutsch) Do 19:00–20:30 1/208 Ü Dr. J. Dümmler
Übung Compilerbau (Englisch) Mi  7:30–9:00  1/367 Ü Dr. J. Dümmler
Multicore-Programmierung Di 13:45–15:15 1/368 V Prof. Dr. G. Rünger
Übung Multicore-Programmierung (Deutsch) Mi 17:30–19:00 1/208 Ü Dr. M. Schwind
Übung Multicore-Programmierung (Englisch) Di 19:00–20:30 1/208 Ü Dr. M. Schwind
Proseminar Parallele Programmierung Mi  9:15–10:45 1/368 S Prof. Dr. G. Rünger
Seminar Multicore-Programmierung Mi  9:15–10:45 1/368 S Prof. Dr. G. Rünger
Praktikum Parallele Programmierung P Dr. J. Dümmler
Dr. M. Schwind

(V: Vorlesung, Ü: Übung, S: Seminar, P: Praktikum)

Lehrangebot der Professur

Vorlesungen im Wintersemester

Höhere Programmiersprachen

Die Vorlesung behandelt Konzepte und Realisierung höherer Programmiersprachen, Syntaxbeschreibungen, Implementierungsaspekte sowie imperative, objektorientierte, funktionale und parallele Programmierkonzepte.

Compilerbau

Die Vorlesung stellt Konzepte und Techniken des Compilerbaus vor, die für die Entwicklung eines Compilers notwendig sind. Dabei werden alle konzeptionellen Phasen eines Compilers von der lexikalischen Analyse bis hin zur Codegenerierung angesprochen. Darüber hinaus sollen Techniken zur effizienten automatisierten Analyse und Bearbeitung hierarchisch strukturierter Dokumente erlernt werden.

Multicore-Programmierung

Die Vorlesung behandelt Programmiertechniken bzw. Programmiermodelle für Multicore-Prozessoren. Dies beinhaltet Techniken der Threadprogrammierung (z. B. Java-Threads, Intel Threading Building Blocks) und neuere Sprachansätze (z. B. OpenMP).

Vorlesungen im Sommersemester

Parallele Programmierung

Die Vorlesung stellt verschiedene Ansätze der parallelen Programmierung anhand der Programmierumgebungen Pthreads, Java-Threads, OpenMP, MPI, PVM und UPC vor. Es wird in die zugrunde liegenden Programmiermodelle, parallelen Entwurfsmuster sowie Konzepte der Programmierumgebungen eingeführt. Die praktische Umsetzung paralleler Programme wird auf Plattformen wie großen Parallelrechnern, Multicore-Systemen, GPUs etc. vermittelt.

Optimierung im Compilerbau

Die Vorlesung beschäftigt sich mit klassischen Optimierungsverfahren des Compilerbaus und mit Optimierungsverfahren für Speicherhierarchien oder Parallelrechner. Im Einzelnen werden die folgenden Themengebiete behandelt: Datenflussanalyse und optimierende Transformationen zur Verbesserung des Programmverhaltens; Datenabhängigkeitsanalysen zur Ausnutzung von mehreren Funktionseinheiten moderner Mikroprozessoren; Lokalitäts- und Parallelitätsanalyse von Programmen; Programmtransformationen zur Optimierung von Programmen für Rechner mit Speicherhierarchien.

Paralleles wissenschaftliches Rechnen

Die Vorlesung „Paralleles Wissenschaftliches Rechnen“ befasst sich mit Anwendungen und Algorithmen des wissenschaftlichen Rechnens und deren effizienter Realisierung auf modernen Parallelrechnern. Vorgestellt werden einzelne Algorithmen der Numerik und spezielle Applikationen. Ebenso werden grundlegende Techniken zur Unterstützung der parallelen Programmierung besprochen. Hier sind etwa Partitionierungen, Lastbalancierungs- und Schedulingalgorithmen zu nennen.

Weiteres Lehrangebot

Proseminar Parallele Programmierung

Das Proseminar Parallele Programmierung behandelt grundlegende Themen zu parallelen Algorithmen und deren effizienter Umsetzung auf verschiedenen Parallelrechnerarchitekturen. Es wird im Sommer- und im Wintersemester angeboten.

Haupt-/Forschungsseminar

Es findet in jedem Semester ein Haupt- und Forschungsseminar statt, im Wintersemester in der Regel zum Themenbereich Parallele und Multicore-Programmierung, im Sommersemester meist zum Themenkomplex Compilerbau.

Praktikum Parallele Programmierung

Im Praktikum Parallele Programmierung werden ausgewählte Algorithmen und Anwendungen aus dem Bereich des wissenschaftlichen Rechnens auf modernen parallelen Systemen realisiert. Die Aufgaben umfassen Programmierung für gemeinsamen Speicher (z. B. mit OpenMP) oder für verteilten Speicher (z. B. mit MPI) sowie Programmierung für Grafikprozessoren (z. B. mit CUDA). Das Praktikum wird in jedem Semester angeboten.

Studien- und Abschlussarbeiten

Bachelor-, Master-, Studien- oder Diplomarbeiten werden jederzeit angeboten. Diese bieten die Möglichkeit, ein Thema aus dem Forschungsumfeld der Professur näher zu vertiefen. Eine (nicht abschließende) Liste von Themen findet sich unter: „Offene Themenstellungen“.