Course Unit

Catalogue

Computer programming and parallel computing

  • Code: DT0641
  • Unit Coordinator: Dirk Praetorius, Claudia Blaas-Schenner
  • Programme: Erasmus Mundus
  • ECTS Credits: 8
  • Semester: 2
  • Year: 1
  • Campus: Vienna University of Technology
  • Language: English
  • Aims:
    • Scientific programming in mathematics:

        formulate (certain) mathematical problems in algorithmic form,

        implement these elementary algorithms in C and C++,

        explain the difference between imperative and object-oriented programming,

        present and explain own solutions, and

        constructively discuss and analyze own solutions as well as those of other students.

     

    • Programming with MATLAB:

        design, debug and test programs in the MATLAB language

        solve easy to moderately difficult problems in statistics and applied mathematics using MATLAB

     

    •  Basics of Parallel Computing:

        Understand and express asymptotic running time and work of parallel algorithms

        Understand parallel algorithm using the PRAM model with respect to running time and work

        Understand and appreciate characteristics of thread models for parallel computing

        Read and write programs in OpenMP

        Read and write programs in MPI

        Understand and appreciate task parallel models for parallel computing

  • Content:
    • Scientific programming in mathematics:

    Object oriented design and programming in C++: Representation of integer and floating point numbers. Conditioning of given problems. Computational cost of algorithms. Variables and standard data types. Pointers. Functions and recursion. Call by value vs. call by reference. Loops, Objects and classes (resp. structures), Operator overloading, Inheritance and virtual. 

    • Programming with MATLAB:

    MATLAB syntax (command- and object-oriented), graphical representations, problems in linear algebra, optimization and statistics, solution of ordinary differential equations by functions in the various toolboxes.

    • 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.

  • Pre-requisites:
    • Programming with MATLAB:

    Basic knowledge of higher mathematics (functions, linear algebra, ordinary differential equations)

    • Basics of Parallel Computing:

    Knowledge of programming languages, computer architectures, operating systems. Basic Algorithms and Datastructures (asymptotic worst-case analysis). Programming skills in C, C++, Fortran or Java.

  • 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 12 European Universities, coordinated by Department of Information Engineering, Computer Science and Mathematics (DISIM) at University of L'Aquila in Italy (UAQ)