Content
The lecture deals with the parallelization on cluster computers. Distributed-memory programming concepts (MPI) are introduced and best-practice implementation is presented based on applications from scientific computing including the finite element method and machine learning.
Special attention is paid to scalable solvers for systems of equations on distributed-memory systems, focusing on iterative schemes such as simple splitting methods (Richardson, Jacobi, Gauß-Seidel, SOR), Krylov-methods (Gradient descent, CG, BiCGStab) and, in particular, the multigrid method. The mathematical foundations for iterative solvers are reviewed, suitable object-oriented interface structures are developed and an implementation of these solvers for modern parallel computer architectures is developed.
Numerical experiments and self-developed software implementations are used to discuss and illustrate the theoretical results.
Course info
Content
The lecture covers programming concepts such as
Furthermore, fundamental data structures as well as efficient algotihms are presented, relevant software libraries are surveyed, and the organization of software projects is discussed,
In hands-on sessions, programming exercises are used to discuss and illustrate the presented content, employing the Python programming language for selected scientific applications.
Course info
Content
The lecture provides an introduction to C++ programming. Basics programming concepts such as types, statements, functions, pointers, memory management and data structures are introduced. Best practices as well as the organization and development of C++ projects are discussed. An introduction to C++ compilers, debugging concepts and development tools is provided.
In hands-on sessions, programming exercises are used to discuss and illustrate the presend content.
Course info
Content
The lecture covers the theory and application of quantum computing from a computer science perspective with a focus on the usage of today's quantum hardware.
The relevant basics of quantum mechanics including superposition, measurement, interference, entanglement and mathematical notation are introduced. The characteristics of quantum bits and registers are discussed, and the construction and properties of quantum gates and quantum circuits presented. Prominent examples for quantum algorithms are surveyed including algorithms based on quantum Fourier transformation (e.g. Shor's factoring), quantum search (e.g. Grover), quantum solution of linear systems of equations (e.g. HHL) and quantum machine learning. Current quantum computer hardware as well as quantum error correction are discussed.
An introduction to quantum programming languages and environments will be provided. Hands-on programming exercises and self-implemented quantum circuits in study projects are used to discuss and illustrate the theoretical content. Implementations are tested on quantum simulators and cloud-based quantum hardware.
Course info
Content
The lecture addresses parallelization on multicore processors. Thread-based programming concepts and techniques, including pthreads, C++11 threads, OpenMP and SYCL, are introduced and best practices are highlighted using applications from scientific computing.
An overview of the relevant hardware aspects including multicore architectures and memory hierarchives is provided. An in-depth introduction to multi-threaded programming on multicore systems with special emphasis on shared-memory parallelization is given and parallelization patterms, thread managmenet and memory accedd strategies are discussed.
In hands-on sessions, programming exercises are used to discuss and illustrate the presented content.
Course info
Content
The lecture addresses advanced topics in C++ programming. Object-oriented programming concepts such as classes, inheritance and polymorphism as well as generic programming concepts such as templates are introduced. The standard template library (STL) and selected functionalities from C++14 and above are surveyed. Best practices as well as the organization and development of advanced C++ projects are discussed.
In hands-on sessions, programming exercises are used to discuss and illustrate the presented content.
Course info
Content
The lecture covers deep learning concepts and techniques, including:
In hands-on sessions, practical exercises are used to discuss and illustrate the presented content.
Course info
Content
The lecture covers advanced discretization techniques beyond the conventional finite element methods for the solution of partial differential equations, such as the finite cell method (FCM) and isogeometric analysis (IGA). In each case the mathematical formulation as well as the implementation aspecs of the method are discussed and contrasted with conventional methods. Gurthermore, the strenths and shortcomings of each method are highlighted such that their suitability for a given problem can be evaluated.
Course info