Numerical methods for differential equations : fundamental concepts for scientific and engineering applications