Offered Courses

Current Semester (2022WS)

High Performance Computing

Overview of current HPC architectures and communication networks, problems, algorithms and solutions (with project/exercises); advanced MPI programming (with project/exercise), tools, performance models, libraries (with project/exercise).

Parallel Algorithmns

The course gives an introduction into the basics of scheduling theory, but will also highlight practical aspects when solving scheduling problems. The course introduces basic concepts and notation used in scheduling research. Then, selected topics are discussed in more detail, such as: shop scheduling, scheduling with parallel tasks, online scheduling, approximation algorithms in scheduling, divisible load scheduling, simulations and scheduling.

Scientific Programming with Python

  • Introduction to the Python programming language
  •  The SciPy and NumPy ecosystem
  •  Data processing and plotting (Matplotlib)
  •  Code testing
  •  Reproducible and interactive data processing with IPython/Jupyter
  •  Introduction to solving optimization problems with Python (e.g.,
  •  SciPy, PuLP)
  •  Parallel processing in Python
  •  Interfaces to other programming languages (e.g., Julia)

Scientific-Programming-With-Python in TISS, opens an external URL in a new window

Scientific Research and Writing

Introduction to science and the operation of the scientific community; based on a self-chosen or a given topic students practice developing a research question, performing a literature search, basic skills of scientific writing, and giving a scientific presentation

Other courses

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.

Advanced Multiprocessor Programming

Memory models, synchronization problems, operations and primitives, atomic operations, consensus, impossibility and universality results, locks, lock- and wait-free data structures (lists, stacks, queues,
hashtables, search structures, ...), work-stealing. Practical implementation project (C/C++ with pthreads, Java, ...)

Competitive Programming for Programming Contests

  • Programmierprobleme schnell und detailliert zu analysieren,
  • die notwendigen, effizienten Algorithmen zum Lösen von Programmieraufgaben zu kennen und 
  • effiziente Programmiertechniken selbstständig beim Erstellen einer korrekten Lösung anzuwenden.

Parallel Computing

Motivation, goals of parallel computing. Parallel algorithms, architectures, programming models, performance measurement and analysis. Problems in parallel algorithms. Introduction to MPI (Message-Passing interface), hreads and OpenMP. Task-parallel models and interfaces (Cilk). Other languages for multi-core processors.