Course Unit

Catalogue

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.

Tags

Related Articles

InterMaths Network
A network of +20 European and non-European Universities, coordinated by Department of Information Engineering, Computer Science and Mathematics (DISIM) at University of L'Aquila in Italy (UAQ)