Principles of Parallel Scientific Computing : A First Guide to Numerical Concepts and Programming Methods