Page - VIII - in Programming for Computations – Python - A Gentle Introduction to Numerical Simulations with Python 3.6, Volume Second Edition
Image of the Page - VIII -
Text of the Page - VIII -
viii Preface
3. It is easy to use excellent ready-made software the wrong way. The insight
in programming and the mathematics behind is fundamental for understanding
complexsoftware, avoidingpitfalls, andbecominga safeuser.
4. Bugs (errors in computer code) are present in most larger computer programs
(also in the ones from the shop!). What do you do when your ready-made
software gives unexpected results? Is it a bug, is it the wrong use, or is it the
mathematically correct result? Experience with programming of mathematics
gives you a good background for answering these questions. The one who can
program can also make tailored code for a simplified problem setting and use
that toverify thecomputationsdonewithoff-the-shelf software.
5. Lotsofskilledpeoplearoundtheworldsolvecomputationalproblemsbywriting
their own code and offering those for free on the Internet. To take advantage of
this truly great source of software in a reliable way, one must normally be able
tounderstandandpossiblymodifycomputercodeofferedbyothers.
6. It is recognizedworldwide that students struggle with mathematicsand physics.
Too many find such subjects difficult and boring. With programming, we can
execute the good old subjects in a brand new way! According to the authors’
own experience, students find it much more motivating and enlightening when
programming is made an integrated part of mathematics and physical science
courses. Inparticular, the problembeingsolvedcan be muchmore realistic than
when the mathematics is restricted towhatyoucandowith penandpaper.
7. Finally,we launchourmost importantargumentfor learningcomputerprogram-
ming: thealgorithmic thinking that comeswith theprocessofwritingaprogram
for a computational problem enforces a thorough understanding of both the
problem and the solution method. We can simply quote the famous Norwegian
computerscientist KristenNygaard:“Programmingisunderstanding.”
In the authors’ experience, programming is an excellent pedagogical tool for
understanding mathematics: “You think you know when you can learn, are more
sure when you can write, even more when you can teach, but certain when you
canprogram”(AlanPerlis, computer scientist, 1922–1990).Consider, for example,
integration.A numericalmethodfor integrationhasa muchstronger focuson what
the integral actually is and means compared to analytical methods, where much
time and effort must be devoted to integration by parts, integration by substitution,
etc. Moreover, when programming the numerical integration formula, it becomes
evident that it works for “all” mathematical functions and that the implementation
should be in terms of a general function applicable to “all” integrals. In this way,
students learn to recognize a special problem as belonging to a class of problems
(e.g., integration, differential equations, root finding), for which we have general
numerical methods implemented in a widely applicable software. When they write
this software, as we do in this book, they learn how to generalize and increase the
abstraction level of the mathematical problem. When they use this software, they
learn how a 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 a nutshell, and it is paramount that studentsunderstand this way of
thinking.
Programming for Computations – Python
A Gentle Introduction to Numerical Simulations with Python 3.6, Volume Second Edition
- Title
- Programming for Computations – Python
- Subtitle
- A Gentle Introduction to Numerical Simulations with Python 3.6
- Volume
- Second Edition
- Authors
- Svein Linge
- Hans Petter Langtangen
- Publisher
- Springer Open
- Date
- 2020
- Language
- English
- License
- CC BY 4.0
- ISBN
- 978-3-319-32428-9
- Size
- 17.8 x 25.4 cm
- Pages
- 356
- Keywords
- Programmiersprache, Informatik, programming language, functional, imperative, object-oriented, reflective
- Category
- Informatik