Scientific computing

Computers have become an important part of scientific research. They are essential both for collecting and analyzing experimental data and for solving complicated mathematical problems arising from theoretical considerations. It is hard to define exactly the field of scientific computing but two main features are clear.

It is hard to decide whether the result is right or wrong.
It is even difficult to say what do we mean by "wrong", it might be bug in the code or inaccuracy in the model or numerical instability, and it is much more difficult to prove that result is correct.
Scientific application should always be tuned to get peak performance.
The more computer power we have the more accurate results we can get, more complex problem can be solved.

These characteristics make standard programming and debugging techniques described in the most of programming books and courses useless. Scientific computing demands scientific knowledge, the proficiency in numerical analysis, computer architecture and programming languages. All attempts to screen the programmer from "gory details" are bound to failure, unless problem is very simple.