WI4260TU Scientific Programming for Engineers


Course description

The course tries to bring students to a level where they are able to change algorithms from e.g. numerical analysis into efficient and robust programs that run on a simple computer.

It comprises: 1. Introduction to programming in general; 2. Floating point number rounding-off errors and numerical stability; 3. (Numerical) Software design; 4. Data Structures; 5. Testing, debugging and profiling; 6. Efficiency issues in computing time and memory usage; 7. Optimization and dynamic memory allocation; 8. Scientific software sources and libraries.

P.S. This course concentrates mainly on sequential programming and only briefly introduces parallel programming (MPI and OpenMP). More advanced topics like threads or parallel (MPI/GPU) programming on supercomputers are not covered by this course (they are covered by other courses ).



Learning Objectives

1. Learn how to program in a high level programming language;
2. Can make the transition from scientific model to a structured program;
3. Obtain basic knowledge about Optimization, Debugging and Profiling of these programs.



Assessment

The grade is determined through a 3-hours exam that consists of two parts: 1. theory questions; 2. lab questions.



Book

Textbook: Writing Scientific Software - A guide to good style, by Suely Oliveira and David Stewart, Cambridge University Press, ISBN-13 978-0-521-67595-6