Wintersemester 2023/2024
Nach einem allgemeinen Überblick zur Informatik konzentriert sich die Veranstaltung auf das Erlernen des Programmierens am Beispiel der Sprache Java. Sie vermittelt sowohl praktische Fertigkeiten bei der Erstellung eigener kleiner Java-Programme als auch grundlegende, sprachunabhängige Konzepte der Programmstrukturierung und -implementierung. Dazu gehören beispielsweise Ausdrücke vs. Anweisungen, Datentypen, Methoden mit Parameterübergabemechanismen, Compiler vs. Interpreter, Speicherbereiche und Rekursion. Außerdem erhalten die Studierenden einen ersten Einblick in die Java-Klassenbibliothek; in objektorientierte, funktionale und parallele Programmierung sowie in Python als weitere Programmiersprache.
Beispielprogramme setzen unter anderem bekannte Such- und Sortierverfahren um. Hintergrundinformationen dazu umfassen das Entwurfprinzip des Divide-and-Conquer und die asymptotische Laufzeitbewertung mit Hilfe der O-Notation. Des Weiteren werden Ansätze zur Sicherstellung der Korrektheit von Programmen wie Assertions und Debugging diskutiert. In den praktischen Übungen wird großer Wert auf die Entwicklung eines guten Programmierstils gelegt.
Studiengang
Bachelor Informatik, Mathematik, Physik und Technomathematik
Umfang
6 SWS (9 Credits)
Weitere Informationen zur Vorlesung und zu den Übungen finden Sie im HIS und im Moodlekurs. Sollten Sie noch Fragen haben, geben Ihnen Frau Prof. Dr. Claudia Fohry und Herr M.Sc. Rüdiger Nather gern Auskunft.
Die Veranstaltung beginnt mit einer Einführung zu Gegenstand, Anwendungsgebieten und Grundbegriffen des parallelen Rechnens. Wir behandeln Entwurfstechniken für parallele Algorithmen (z.B. paralles Divide-and-Conquer) sowie allgemeine Anforderungen an den Entwurf effizienter Programme (z.B. Cacheoptimierung).
Anhand von drei exemplarischen Programmiersystemen werden dann im Hauptteil Grundkenntnisse zur parallelen Programmierung vermittelt:
- OpenMP für Rechner mit gemeinsamem Speicher,
- "APGAS für Java" für Rechner mit verteiltem bzw. hybridem Speicher und
- CUDA für GPUs.
In die Veranstaltung sind zwei Praktikumsabschnitte integriert, in denen die Teilnehmer in Zweierteams Programmieraufgaben lösen. Die Ergebnisse werden anschließend in Prüfungsgesprächen vorgestellt und bilden die Basis für die Bewertung der Veranstaltung.
Studiengang
Bachelor Informatik
Umfang
4 SWS (6 Credits)
Weitere Informationen, einschließlich der Vorlesungstermine, finden Sie im Vorlesungsverzeichnis und im Moodlekurs. Sollten Sie noch Fragen haben, gibt Ihnen Herr Dr. Jonas Posner gern Auskunft.
Die Veranstaltung behandelt zunächst die etablierten Programmiersysteme OpenMP und MPI in größerer Tiefe als im Bachelorstudium. Der Schwerpunkt wird auf fortgeschrittene Sprachkonstrukte wie OpenMP-Tasks, MPI-Kommunikatoren und hybride MPI/OpenMP-Programmierung gelegt. Wir diskutieren den Einsatz der Konstrukte anhand von Beispielanwendungen. Dabei stehen die Entwurfsziele Performance und Skalierbarkeit im Vordergrund. Außerdem werden einige komplexere Synchronisationsprobleme besprochen.
Im zweiten Teil der Veranstaltung werden aktuelle parallele Programmiersysteme vorgestellt und mit den etablierten Systemen verglichen. Typische Herangehensweisen dieser Systeme sind der Partitioned Global Address Space (PGAS) und die Asynchronous Many-Task Programmierung AMT. Einzelne Sprachen werden erlernt und erprobt, z.B. Cilk, Chapel, HPX und Charm++. Daneben diskutieren wir Querschnittsthemen wie Entwurfsmuster, Fehlertoleranz und Elastizität.
Für den Besuch der Veranstaltung sind Vorkenntnisse aus Einführung in die Parallelverarbeitung von Vorteil, aber nicht zwingend erforderlich. Die Veranstaltung gliedert sich in einen Vorlesungs- und einen Praktikumsteil. Der Praktikumsteil umfasst die Entwicklung von Programmen mit den behandelten Programmiersystemen. Im Praktikum arbeiten Sie typischerweise in Zweierteams. Das Praktikum bildet zusammen mit einem Abschlussgespräch die Basis für die Bewertung der Veranstaltung.
Studiengang
Master Informatik
Umfang
4 SWS (6 Credits)
Weitere Informationen, einschließlich der Vorlesungstermine, finden Sie im Vorlesungsverzeichnis und im Moodlekurs. Sollten Sie noch Fragen haben, geben Ihnen Frau Prof. Dr. Claudia Fohry und Herr M.Sc. Rüdiger Nather gern Auskunft.