Towards Efficient and High-Performance Computing for Engineers
This course is an introduction to various programming techniques and tools for the development of scientific simulations. It provides the practical and theoretical basis for high-performance computing (HPC) including data structure, testing, performance evaluation and parallelization. The course bridges the gap between introductory and advanced programming courses.
We provide an overview of programming techniques relevant for efficient and high-performance computing. It builds on introductory coding experience (e.g. matlab/python/java) and introduces the students to more advanced tools, specifically C++ with object-oriented programming, external libraries, and supercomputers. The objective of this course is to introduce various approaches of good practice in developing code for scientific computing (for your research or engineering project) or using/modifying existing open-source programs. This includes code versioning, testing, and documenting. The course targets engineering students and seeks to provide a practical introduction towards performance-based computational simulation.
This is a flipped-classroom course. The students study the course material as preparation for class. In lecture, students solve coding assignments in small groups and present (and discuss) the implemented solution to their peers. The assignments continuously build towards a scientific computing library for a specific engineering application. In addition, the students define a project relevant to their studies/research and develop a code for this application building on the techniques learnt during this course.
Lecturers: Prof. Dr. David Kammer & Dr. Mohit Pundir
Material: provided on Moodle