COMA and/or good knowledge of at least one programming language,
ADM I helpful but not necessary.
This course is intended for master and (advanced) bachelor students.
Particpants need a computer running Linux/Mac OS-X (you can try Windows,
but you will be on your own).
Lecture will be in German or English depending on the
Everyone knows that debugging is twice as hard as writing
a program in the first place.
So if you're as clever as you
can be when you write it, how will you ever debug it?
-- Brian Kernighan
The main focus will be on how to design and develop
correct, maintainable, and well performing scientific
software. Given that typically quite some time is used
for debugging it is unfortunately still the case that
many programs are not correct. If a scientific program
produces the wrong result, it does not matter how fast
this is done. By using good design and programming styles
it is possible to reduce the time for debugging considerably,
while still maintaining higher hopes for correctness.
The lecture, will also give an introduction to the
kind of tools that should be used in software development
today. While very popular, writing correct programs was
never one of the design goals of C/C++. We will investigate
languages that aim to provide more help in this regard and
allow even to some degree proofs of correctness.