Scientific Programming
- formulate (certain) mathematical problems in algorithmic form,
- explain the difference between imperative and object-oriented programming,
- implement mathematical algorithms in Matlab, C, and C++,
- present and explain own solutions, and
- constructively discuss and analyze own solutions as well as those of other students.
Parallel Programming
- understand and apply the main concepts of parallel programming
- master the basic skills to write parallel programs using MPI and OpenMP
- parallelize serial programs using basic features of MPI and OpenMP
- be familiar with the components of an high-performance computing cluster
- know the principles to take advantage of shared and distributed memory systems as well as accelerators and how to exploit the capabilities of modern high-performance computing systems
Scientific Programming:
- Introduction to Matlab, C, and C++.
- Representation of integer and floating point numbers.
- Conditioning of given problems.
- Computational cost of algorithms.
- Variables and standard data types.
- Pointers.
- Loops and if-else.
- Functions and recursion.
- Call by value vs. call by reference.
- Objects and classes (resp. structures),
- Operator overloading, Inheritance.
- Templates.
- Visualization in MATLAB.
- Programming exercises.
Parallel Programming:
- Basic features of parallel programming with MPI (Message Passing Interface) and OpenMP (Open Multi-Processing) using C
- A look at CUDA to offload parts of the computation to GPUs
- Students will do the hands-on labs directly on the Vienna Scientific Cluster, the high-performance computing facility of Austrian universities, and hence will learn about and get some experience in high-performance computing.
Basic skills in programming in C (e.g., as learnt during the lecture "Scientific Programming for Interdisciplinary Mathematics") as well as Linux command line and usage of an editor (vi or nano).
lecture notes
Otto and Denier, An Introduction to Programming and Numerical Methods in MATLAB
Brian Hahn, Essential MATLAB for Engineers and Scientists
Stormy Attaway, Matlab: A Practical Introduction to Programming and Problem Solving
Rauber, Rünger: Parallel programming. Second Edition, Springer 2013.
Schmidt, Gonzalez-Dominguez, Hundt, Schlarb: Parallel Programming. Concepts and Practice. Morgan Kaufmann 2018.