Scientific Programming

by Bernd Freytag & Nikolai Piskunov


During the last years, one subject not covered by the PhD course curriculum popped up many times in the discussion with students: programming ... and I do not mean computer sciences or numerical methods. I mean basic skills in how to implement a given task (physical model, data analysis, text file sorting, whatever) on a computer. This will not be a course in Python, Java or C++ although we would need to use some language(s) for the homework.


The goal of the course is to understand the interaction between you program and your computer and to answer the question why apparently identical algorithms may show different performance and even different results


With this introduction the course will cover the following topics:

  1. Computer and software interaction:
  2. Programming language components:
  3. Programming
  4. Debugging ("every code has at least one bug")
  5. Optimization


I am planning to use practical examples in various programming languages that I am familiar with (FORTRAN 77 and 90, IDL, bash) and the students will get lots of home work in a form of small programs aimed at understanding computer behavior, and train various programming muscles.


The course will be 10 hp. In order to pass you will need to turn in all homework some of which you will present in the class.


We will complete the course itself in November/December with the following schedule:


The schedule looks like this:


Good luck!

Bernd Freytag & Prof. Nikolai Piskunov