by: Rubin H. Landau
Professor of Physics Oregon State University
Applying computer technology is simply finding
the right wrench to pound in the correct screw.
This is not the book I thought I’d be writing. When, about a decade ago, I initiated the discussions that led to our Computational Physics course, I thought we would teach mainly physics in it. The Computer Science Department, I
thought, would teach the students what they needed to know about computers, the Mathematics Department would teach them what they needed to know about numerical methods and statistics, and I would teach them what I knew
about applying that knowledge to solve physics problems using computers.
That’s how I thought it would be. But, by and large, I have found that the students taking our Computational Physics course do not carry the subject matter from these other disciplines with them, and so a lot of what I have put into this book is material that, in a more perfect world, would be taught and written by experts in other fields.
While that is why I feel this is not the book I thought I would be writing, I believe it’s probably for the better. On the one hand, having a basic research physicist tell students they need to know “this” in computer science and “that” in mathematics, gets the message across that “this stuff really matters.” On the other hand, it’s useful to have the physics, mathematics, and computer science concepts conveyed in the language of a natural scientist and within the context of solving a problem scientifically.
The official and detailed aims of this book are given in Chapter 1, and the subjects covered are listed in the Table of Contents. This book differs from a standard text in its underlying philosophy:
Hear and wonder,
see and follow,
do and understand,
a philosophy also followed in pioneering books such as Thompson, Koonin, and Gould and Tobochnik. As applied in our book, students learn by solving an exceptionally wide class of computational physics problems. When I teach from it, I continually emphasize that it is the student’s job to solve each problem, which includes understanding the results the computer gives. In the process, the students are excited by applying scientific, mathematical, and computational techniques that are often new to them (at least in combination).
As a consequence of having to interact with the materials from a number of
viewpoints, and often on their own, the materials become part of the personal
experiences of the students. For example, I have heard students comment
that “I never understood what was dynamic in thermodynamics until after
this simulation,” and “I would never have imagined that there could be such
a difference between upward and downward recursion,” as well as “Is that
what a random walk really looks like?” or “I don’t believe a pendulum can
really move like that!” In my experience, a teacher just doesn’t hear students
express such insight and interest in course material in lecture courses. The
students, in turn, are often stimulated to learn more about these subjects or to
understand them at greater depth when encountered elsewhere.
There is a price to pay for my unusually broad approach: the students
must work hard and cannot master material in great depth. The workload
is lightened somewhat by providing “bare bones” programs, and the level is
deepened somewhat by having references readily available. In addition, there
are appendixes listing the C and Fortran programs and the sections which
reference them, as well as source code on the diskette and the World Wide
Web (the “Web”). The names of the programs are also included in the titles
of the Implementation sections. By eliminating time-consuming theoretical
background (more properly taught in other places), and by deemphasizing
timidity-inducing discussions of error in every single procedure, the students
get many challenging projects “to work” for them and enjoy the stimulation
of experiencing the material. In the process, the students gain pride and
self-confidence immediately, and this makes for a fun course for everyone.