Aktuelles Semester (2024S)

Parallel Computing

Motivation, Hintergründe, (Geschichte) des parallelen Rechnens. Parallele Algorithmen, Rechnerarchitekturen, Programmiermodelle, Leistungsanalyse und Beurteilung, parallele Algorithmen (Fragestellungen), Einführung in MPI (Message-Passing Interface), Einführung in pthreads und OpenMP, task-basierte Ansätze wie Cilk. Sprachen und Schnittstellen für Mehrkernrechner.

Basics of Parallel Computing

Motivation and goals of parallel computing, parallel computer architectures, programming models, performance measurement and analysis, introduction to programming paradigms such as MPI (Message Passing Interface), Pthreads, and OpenMP. Other aspects and languages for programming multi-core processors.

High Performance Computing (Hochleistungsrechnen)

Überblick HPC-Architekturen und Kommunikationsnetzwerken, Probleme, Algorithmen u. Lösungen (mit Projekt/Übung); Fortgeschrittene MPI Programmierung (mit Projekt/Übung), Werkzeuge, Leistungsmodelle, Bibliotheken (mit Projekt/Übung).

Competitive Programming for Programming Contests

  • analyze programming problems efficiently and in depth,
  • find and extract the required algorithmic patterns in the problems, and
  • apply efficient programming techniques to create correct and well performing solutions.

Weitere Lehrveranstaltungen

Kurse die in anderen Semestern angeboten werden

Weiterführende Multiprocessor Programmierung

Speichermodelle, Synchronisationsprobleme, -operationen, und -primitive, atomare Operationen, Konsensus, Universalität und Unmöglichkeit, "Locks", "Lock- and Wait-free" Datenstrukturen und Algorithmen (Warteschlangen, Listen, Hash-Tabellen, Suchstrukturen, ua.), "Work-stealing". Programmierprojekt (C/C++ mit Pthreads, oder Java, oder...)

Wissenschaftliches Arbeiten

Einführung in den Wissenschaftsbegriff, in die Grundlagen wissenschaftlichen Arbeitens sowie den Wissenschaftsbetrieb; anhand eines selbst gewählten oder vorgegebenen Themas üben die Studierenden die Entwicklung einer wissenschaftlichen Fragestellung, Recherche, Grundfertigkeiten wissenschaftlichen Schreibens und mündliche Präsentation.

Scientific Programming with Python

  • Einführung in die Programmiersprache Python
  • Die SciPy- and NumPy-Umgebung
  • Datenverarbeitung und -darstellung (Matplotlib)
  • Code testen
  • Reproduzierbare und interaktive Datenverarbeitung mit Jupyter
  • Einführung zur Lösung von Optimierungsproblemen mit Python (z.B. SciPy, PuLP)
  • Paralleles Arbeiten mit Python
  • Schnittstellen zu anderen Programmiersprachen (z.B. Julia)

Informationen zu Scientific Programming with Python in TISS, öffnet eine externe URL in einem neuen Fenster

Parallele Algorithmen

Die Lehrveranstaltung vermittelt die Grundlagen der Scheduling-Theorie und es werden einzelne praktische Aspekte beim Lösen von Scheduling-Problemen betrachtet. Es werden zuerst Konzepte und Notationen eingeführt, welche in der Scheduling-Forschung Anwendung finden. Danach werden einzelne Themen detailliert beleuchtet:

Shop-Scheduling, Scheduling mit parallelen Tasks, Online-Scheduling, Approximationsalgorithmen für Scheduling-Probleme, Divisible-Load-Scheduling, Simulationen und Scheduling.