Preface
Computing, in the sense of doing mathematical calculations, is a skill that mankind
has developed over thousands of years. Programming, on the other hand, is in
its infancy, with a history that spans a few decades only. Both topics are vastly
comprehensive and usually taught as separate subjects in educational institutions
around the world, especially at the undergraduate level. This book is about the
combination of the two, because computing today becomes so much more powerful
when combined with programming.
Most universities and colleges implicitly require students to specialize in computer science if they want to learn the craft of programming, since other student
programs usually do not offer programming to an extent demanded for really
mastering this craft. Common arguments claim that it is sufficient with a brief
introduction, that there is not enough room for learning programming in addition
to all other must-have subjects, and that there is so much software available that
few really need to program themselves. A consequence is that engineering students
often graduate with shallow knowledge about programming, unless they happened
to choose the computer science direction.
We think this is an unfortunate situation. There is no doubt that practicing
engineers and scientists need to know their pen-and-paper mathematics. They must
also be able to run off-the-shelf software for important standard tasks and will
certainly do that a lot. Nevertheless, the benefits of mastering programming are
many.
Why Learn Programming?
1. Ready-made software is limited to handling certain standard problems. What do
you do when the problem at hand is not covered by the software you bought?
Fortunately, a lot of modern software systems are extensible via programming.
In fact, many systems demand parts of the problem specification (e.g., material
models) to be specified by computer code.
2. With programming skills, you may extend the flexibility of existing software
packages by combining them. For example, you may integrate packages that do
not speak to each other from the outset. This makes the work flow simpler, more
efficient, and more reliable, and it puts you in a position to attack new problems.
vii
Computing, in the sense of doing mathematical calculations, is a skill that mankind
has developed over thousands of years. Programming, on the other hand, is in
its infancy, with a history that spans a few decades only. Both topics are vastly
comprehensive and usually taught as separate subjects in educational institutions
around the world, especially at the undergraduate level. This book is about the
combination of the two, because computing today becomes so much more powerful
when combined with programming.
Most universities and colleges implicitly require students to specialize in computer science if they want to learn the craft of programming, since other student
programs usually do not offer programming to an extent demanded for really
mastering this craft. Common arguments claim that it is sufficient with a brief
introduction, that there is not enough room for learning programming in addition
to all other must-have subjects, and that there is so much software available that
few really need to program themselves. A consequence is that engineering students
often graduate with shallow knowledge about programming, unless they happened
to choose the computer science direction.
We think this is an unfortunate situation. There is no doubt that practicing
engineers and scientists need to know their pen-and-paper mathematics. They must
also be able to run off-the-shelf software for important standard tasks and will
certainly do that a lot. Nevertheless, the benefits of mastering programming are
many.
Why Learn Programming?
1. Ready-made software is limited to handling certain standard problems. What do
you do when the problem at hand is not covered by the software you bought?
Fortunately, a lot of modern software systems are extensible via programming.
In fact, many systems demand parts of the problem specification (e.g., material
models) to be specified by computer code.
2. With programming skills, you may extend the flexibility of existing software
packages by combining them. For example, you may integrate packages that do
not speak to each other from the outset. This makes the work flow simpler, more
efficient, and more reliable, and it puts you in a position to attack new problems.
vii
