Computer programming and parallel computing
- Code: DT0641
- Unit Coordinator: Markus Faustmann, Claudia Blaas-Schenner
- Programme: InterMaths
- ECTS Credits: 8
- Semester: 2
- Year: 1
- Campus: Vienna University of Technology
- Language: English
- Aims:
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 - Content:
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. - Pre-requisites:
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).
- Reading list:
- Scientific programming in mathematics:
lecture notes
- Programming with MATLAB:
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
- Basics of Parallel Computing:
Rauber, Rünger: Parallel programming. Second Edition, Springer 2013.
Schmidt, Gonzalez-Dominguez, Hundt, Schlarb: Parallel Programming. Concepts and Practice. Morgan Kaufmann 2018.