The course discusses programming techniques required to efficiently utilise parallel computing in a computational research project in science or engineering. The course will discuss shared memory and distributed memory parallelisation in a C, C++ and Fortran context. Widely utilised parts of the application interfaces of OpenMP and MPI will be introduced during the course. The course will discuss commonly encountered issues in parallel programming, such as data-races and dead-lock and show techniques required to avoid these issues.


This course is intended for students with basic knowledge of programming in any language who would like to learn the techniques of scientific programming. The course covers scientific programming in Python, including writing numerical codes with NumPy, data handling, visualisation with Matplotlib and ParaViews, writing user interfaces with Qt, and creating Python environments for scientific applications. It also covers using the compiled language Fortran, stand-alone or via mixed-language programming with Python.

For students without basic programming knowledge in C, C++ or Fortran this course will equip you with the required prerequisites for the course Parallel programming of HPC systems, which is scheduled to be given in spring term 2020.


The course discusses programming techniques required to efficiently utilise high performance computing in a PhD-project in computational science and engineering. The course content includes developing modularised software in Fortran 95 and the scripting language Python. You will be taught how to conduct an object-oriented analysis of common problems in science and engineering. Parallel programming will be another focus point of the course. We will discuss shared memory and distributed memory programming. The course will introduce the application interfaces of OpenMP and MPI as well as the concepts behind these.