preface it is easy to use excellent ready-made software the wrong way insight in programming and the mathematics behind is fundamental for understanding complex softwareavoiding pitfallsand become safe user bugs (errors in computer codeare present in most larger computer programs (also in the ones from the shop!what do you do when your ready-made software gives unexpected resultsis it bugis it wrong useor is it the mathematically correct resultexperience with programming of mathematics gives you good background for answering these questions the one who can programcan also make tailored code for simplified problem setting and use that to verify the computations done with off-the-shelf software lots of skilled people around the world solve computational problems by writing their own code and offer their code for free on the internet to take advantage of this truly great source of software in reliable wayone must normally be able to understand and possibly modify computer code offered by others it is recognized world wide that students struggle with mathematics and physics too many find such subjects difficult and boring with programmingwe can execute the good old subjects in brand new wayaccording to the authorsown experiencestudents find it much more motivating and enlightening when programming is made an integrated part of mathematics and physical science courses in particularthe problem being solved can be much more realistic than when the mathematics is restricted to what you can do with pen and paper finallywe launch our most important argument for learning computer programmingthe algorithmic thinking that comes with the process of writing program for computational problem enforces thorough understanding of both the problem and solution method we can simply quote the famous norwegian computer scientist kristen nyggaard"programming is understandingin the authorsexperienceprogramming is an excellent pedagogical tool for understanding mathematics"you think you know when you can learnare more sure when you can writeeven more when you can teachbut certain when you can program(alan perliscomputer scientist - considerfor exampleintegration numerical method for integration has much stronger focus on what the integral actually is and means compared to analytical methodswhere much time and effort must be devoted to integration by partsintegration by substitutionetc moreoverwhen programming the numerical integration formulait becomes evident that it works for "allmathematical functions and that the implementation should be in terms of general function applicable to "allintegrals in this waystudents learn to recognize special problem as belonging to class of problems ( integrationdifferential equationsroot finding)for which we have general numerical methods implemented in widely applicable software when they write this softwareas we do in this bookthey learn how to generalize and increase the abstraction level of the mathematical problem when they use this softwarethey learn how special case should be attacked by general methods and software for the class of problems that comprises the special case at hand this is the power of mathematics in nutshelland it is paramount that students understand this way of thinking