Sommersemester 2024

Die gesamte Organisation der Lehrveranstaltungen erfolgt über die Lernplattform Moodle. Wenn Sie an einer der u.a. Veranstaltungen teilnehmen möchten, melden Sie sich bitte in dem entsprechenden Moodlekurs an.

Die Studierenden lernen grundlegende abstrakte Datentypen der Informatik, effiziente Datenstrukturen für ihre Implementierung sowie effiziente Graph- und Optimierungsalgorithmen kennen. Sie machen sich mit algorithmischen Entwurfstechniken (z.B. Divide-and-Conquer, Branch-and-Bound) vertraut, vertiefen ihre Fertigkeiten in der Laufzeitanalyse und erwerben weitere Fertigkeiten zur Bewertung von Algorithmen. Außerdem bauen sie ihre Programmiererfahrungen mit Java aus und setzen nun auch fortgeschrittene Sprachaspekte wie generisches Programmieren ein.

In den begleitenden Übungen wenden die Teilnehmer das Gelernte unter anderem auf den Entwurf und die Implementierung eigener Algorithmen und Datenstrukturen an.
 

Dozentin
Prof. Dr. Claudia Fohry

 

Weitere Informationen, einschließlich der Vorlesungs- und Übungstermine, finden Sie im Moodlekurs sowie im HIS für die Vorlesung und für die Übungen.

Sollten Sie Fragen haben, geben Ihnen Frau Prof. Dr. Claudia Fohry und Herr M.Sc. Rüdiger Nather gern Auskunft.

Die Veranstaltung behandelt eine Auswahl paralleler Algorithmen für verschiedene Probleme und Architekturklassen. Dabei werden Techniken für den Entwurf und die Analyse paralleler Algorithmen vermittelt und geübt. Zunächst lernen wir zwei Modelle für Rechner mit gemeinsamem Speicher kennen und diskutieren ihre Vor- und Nachteile: die Parallel Random Access Machine (PRAM) und das Binary Forking Modell (BF). Danach werden anhand einfacher Problemstellungen (z.B. konvexe Hülle, Maximumberechnung) grundlegende Entwurfstechniken vermittelt.

Der zweite Teil konzentriert sich auf Cluster und Algorithmen, die sich mittels MPI, bzw. knotenintern OpenMP, umsetzen lassen.  Je nach Vorkenntnissen und Interesse der Teilnehmer ist neben der Analyse auch die Umsetzung Bestandteil der Veranstaltung. Die behandelten Algorithmen reichen von regulären Algorithmen für Matrixberechnungen über parallele Optimierungsverfahren bis zu parallelen Graphalgorithmen. Abschließend werden eventuell noch Algorithmen für spezielle Szenarien angesprochen: fehlertolerante parallele Algorithmen sowie effiziente Algorithmen für Speicherhierarchien.

Die Stoffvermittlung erfolgt in Vorlesungen mit integrierten Übungen und Diskussionen. Eine aktive Beteiligung wird erwartet.  Die Notenvergabe erfolgt auf Basis einer Projektarbeit mit abschließendem Prüfungsgespräch. Schwerpunkt des Projekts ist die eigene Entwicklung effizienter Algorithmen. Diese sollen außerdem bezüglich ihrer Laufzeit analysiert sowie, bei entsprechenden Vorkenntnissen der Teilnehmer, implementiert und experimentell bewertet werden.  Die Veranstaltung ergänzt die Veranstaltungen "Einführung in die Parallelverarbeitung" (Bachelor) und "Parallele Programmierung" (Master), kann aber auch ohne Vorkenntnisse in paralleler Programmierung belegt werden.
 

Dozent:in
Prof. Dr. Claudia Fohry
M.Sc. Rüdiger Nather

 

Weitere Informationen, einschließlich der Vorlesungstermine, finden Sie im Moodlekurs und im HIS.

Sollten Sie Fragen haben, geben Ihnen Frau Prof. Dr. Claudia Fohry und Herr M.Sc. Rüdiger Nather gern Auskunft.

In der Veranstaltung erlernen die Studierenden die funktionale Programmierung am Beispiel der Sprache Haskell. Die behandelten Sprachkonstrukte reichen von Basics wie Funktionen und Listen über Datentypen und Auswertungsstrategien bis zu fortgeschrittenen Aspekten wie Monaden und Parallelisierung. Die Konstrukte werden jeweils erklärt und ihr Einsatz diskutiert. Neben Haskell wird ein kurzer Einblick in weitere funktionale Sprachen gegeben.

Die Veranstaltung wird in Form einer Vorlesung mit integrierten Übungen durchgeführt. In den ersten Wochen sind zusätzlich Hausaufgaben verpflichtend zu bearbeiten. Die Notenvergabe erfolgt auf Basis einer Projektarbeit, welche in Zweierteams in den letzten Wochen durchgeführt wird. Die Projektarbeit wird durch eine Verteidigung abgeschlossen, bei der die entwickelten Programme vorgestellt und weitere Themen der Vorlesung angesprochen werden.
 

Dozent:in
Prof. Dr. Claudia Fohry
M.Sc. Rüdiger Nather

 

Weitere Informationen, einschließlich der Vorlesungstermine, finden Sie im Moodlekurs und im HIS.

Sollten Sie Fragen haben, geben Ihnen Frau Prof. Dr. Claudia Fohry und Herr M.Sc. Rüdiger Nather gern Auskunft.

Das Laborpraktikum "Aufbau eines Miniatur-Supercomputers" ist eine praktische Einführung in die Welt des Supercomputings und soll den Studierenden ein Verständnis fur die Konzepte und Technologien des High-Performance Computing (HPC) vermitteln.

Zu Beginn des Laborpraktikums werden den Studierenden die Grundlagen vermittelt, wie z.B. die Funktionsweise eines Supercomputers, Benchmarking, Job Scheduling, verteilte Dateisysteme, Ressourcenverwaltung, Benutzerverwaltung, Fehlertoleranz und Elastizitat. Ziel ist es, den Studierenden die Konzepte und Fähigkeiten zu vermitteln, die für den Bau eines Supercomputers erforderlich sind.

Im Hauptteil des Laborpraktikums arbeiten die Studierenden in Gruppen und bauen mit Hilfe von Virtualisierungstechnologien ihren eigenen Miniatur-Supercomputer. Die Studierenden wenden ihre erworbenen Fähigkeiten und Kenntnisse in der Praxis an, indem sie die Leistung ihres Miniatur-Supercomputers in verschiedenen praktischen Szenarien evaluieren.

Die Ergebnisse der Gruppenarbeit werden in Prüfungsgesprachen vorgestellt und bilden die Grundlage für die Bewertung der Veranstaltung.

 

Dozent
Dr. Jonas Posner

 

Weitere Informationen, einschließlich der Veranstaltungs-termine, finden Sie im Moodlekurs und  Vorlesungsverzeichnis.

Sollten Sie noch Fragen haben, gibt Ihnen Dr. Jonas Posner gern Auskunft.

Seit mehr als einem halben Jahrhundert treiben High Performance Computing (HPC) Systeme, besser bekannt als Supercomputer, bahnbrechende Fortschritte in Wissenschaft, Forschung und Industrie voran. Dieses Seminar widmet sich der Erforschung der Geschichte und Entwicklung des Supercomputings und beleuchtet wichtige Meilensteine in der Hardware- und Softwareentwicklung, die diesen Bereich maßgeblich geprägt haben. Vom Aufkommen der ersten Supercomputer über die Revolution durch parallele Architekturen bis hin zu den aktuellen Exascale-Systemen zeichnen wir den Weg nach, der nicht nur die Rechenleistung exponentiell gesteigert, sondern auch Wissenschaft, Forschung und Industrie nachhaltig verändert hat. Durch die Analyse bedeutender Supercomputer, wegweisender Programmiersysteme wie MPI und OpenMP sowie moderner Technologien wie GPUs und FPGAs bietet dieses Seminar einen umfassenden Überblick über Vergangenheit, Gegenwart und Zukunft des Supercomputings.


Die Teilnehmenden präsentieren jeweils ein Thema, das selbstständig aus der Fachliteratur erarbeitet werden muss. Die Themen decken die verschiedenen Epochen der Supercomputing-Entwicklung ab - von Vektorprozessoren über Multiprozessorsysteme und Mikroprozessoren bis hin zu Clustern und Beschleunigern. Eigene Themenvorschläge können nach Absprache eingebracht werden.

 

Dozent
Dr. Jonas Posner

 

Weitere Informationen, einschließlich der Veranstaltungs-termine, finden Sie im Moodlekurs sowie im HIS für Bachelor und Master.

Sollten Sie noch Fragen haben, gibt Ihnen Dr. Jonas Posner gern Auskunft.