Since the mid 1980's, we in the Department of Physics at Lawrence University have been developing curricular components that

- support efforts to acquaint students with
computational procedures and
resources early enough so that they
will be motivated and prepared to use these resources
*on their own initiative*when circumstances warrant and so that later work need not be interrupted to deal with computational issues as an aside to its main purposes, and - provide students with both the background and the confidence to support informed reading of vendor manuals, which usually do a splendid job of listing capabilities exhaustively but typically burden the beginner with initially irrelevant refinements and fail to illustrate adequately how even the rudimentary capabilities can be combined to perform useful tasks.

With these objectives in mind, this book consciously focuses on helping
students *get started*. It is not designed to be comprehensive or
exhaustive, either in laying out the capabilities of any particular
computational resource or in discussing numerical
algorithms. Students must understand throughout that
they must refer regularly to vendors' manuals and on-line help files
for details beyond those discussed in the book---details that may, in
fact, be necessary for successful completion of some of the exercises.
The need for that activity is noted *here*; repeated reminders will
*not* be included in the body of the book.

The book is also not a book about computational physics; it addresses uses of computational tools. Indeed, the course at Lawrence in which this book is used would not in any way replace a course in computational physics. Rather, the materials treated here should provide strong background for a subsequent, junior-senior level course in computational physics, which would---I believe---be substantially enhanced if students came to it already familiar with the resources on which this book concentrates.

One major difficulty in creating materials on computational topics is
that different potential users favor different
hardware platforms and software packages. Especially in the
computational arena, the variety of options and combinations is so great
that any single choice (or coordinated set of choices) is bound to limit
the usefulness of the product to a small subset of all potential
users. This book addresses that
difficulty by being assembled from a wide assortment of components,
some of which---the generic components---will be included in all
versions and others of which---those specific to particular software
packages---will be included only if the potential user requests them.
Thus, the specific software and hardware
discussed in the book can be tailored to the spectrum
of resources available at the instructor's site.
Two versions may well differ in numerous
respects. One may include the generic components and the components that
discuss[1]
IDL, MAPLE, C (with Numerical Recipes),
and LaTeX while another may include the
generic components and the components that focus on MATLAB, *Mathematica*,
and FORTRAN (including Numerical Recipes). The
index contains only entries from the included chapters
and sections. To facilitate communication
among users of different versions, however, chapter and section numbers
and the numbers identifying package-independent exercises
are preserved in all
versions. In a version that does not include FORTRAN, for example,
the FORTRAN sections will be omitted from Chapters 7, 9, 11 and 12,
Chapter 10---for which FORTRAN is prerequisite---will be omitted altogether,
and FORTRAN-specific exercises will be omitted from the end-of-chapter
exercises as well. Because of version-specific omissions such as those
just described, there will therefore be gaps in the
chapter, section and exercise numbers in any version that does not
include all options. In contrast, equation numbers,
figure numbers, table
numbers, and footnote numbers advance from one without gaps
within each chapter, and page
numbers run continuously from the beginning of the
book to the end. In consequence, the numbers assigned to identical equations,
figures, tables, footnotes, and pages may differ from version to
version,
but the numbers assigned to chapters and sections with identical
titles and the numbers assigned to identical exercises will be the same in
all versions (and will have gaps reflecting omitted chapters,
sections, and exercises). Such
flexibility would be impossible were we not able to exploit features of
LaTeX, including the particular capabilities of the
`ifthen` and `makeidx` packages and the auxiliary
program `makeindex`, to assemble the
PostScript files that subsequently can be printed to obtain each
version.

Even among sites that use the same spectrum of hardware and software,
however, some aspects of local environments remain unique to individual
sites. Local rules of citizenship, the features and elementary
resources of the local operating system, local practices and policies
governing structuring of public directories, assignment of
accounts and passwords, backup schedules, and
after-hours access, licensing restrictions on proprietary
software, means to launch particular application programs,
compile user-written FORTRAN and/or C programs, and access printers,
and numerous other aspects are
subject to considerable local variation. This book does not
constrain local options in these matters. Instead,
its users must draft a site-specific supplement, which we
will refer to as the *Local Guide*, to
which individuals should refer for site-specific particulars.
A LaTeX template for that guide, specifically the one used at
Lawrence, is available to users of this book,
but it will require editing to reflect local practices.
In particular, to give local sites flexibility in
configuring their environments, we have in the book used symbols like
`$HEAD`, `$IDLHEAD`, and `$NRHEAD` to stand for paths
to the specific directories that sit at the head of particular directory trees.
All such symbols must be expanded as described in the *Local
Guide* when commands or statements illustrated in the book
are submitted to the user's machine.

With the broadest brush,
Chapter 1 stands alone. The next several chapters introduce specific
array processors (Chapter 2 on IDL, Chapter 3 on MATLAB),
computer algebra systems (Chapter 4 on MACSYMA, Chapter 5 on MAPLE,
Chapter 6 on *Mathematica*), programming
languages (Chapter 7---with sections on FORTRAN and C),
and subroutine libraries (Chapter 8 on Numerical Recipes).
And the remaining chapters address
several important categories of computational processing
(Chapters 9 and 10 on solving ordinary differential equations,
Chapter 11 on evaluating integrals,
and Chapter 12 on finding roots). Each of Chapters 9, 11, and 12 begins
with a (generic) section in which
several problems drawn from subareas of physics and using
the computational technique on which the chapter focuses are
laid out. Each of those chapters then continues with one or
more (optional) sections
in which some of the identified problems are addressed with whatever
computer algebra systems are included in the version,
a (generic) section on
numerical approaches to the category of problem on which the chapter
focuses, and several (optional) sections in which some of the problems laid
out in the first section are addressed with whatever array processors, computer
algebra systems, and programming languages are included in the
version. Each chapter concludes with a collection of exercises using the
techniques---both symbolic and numerical---of the chapter.
The appendices introduce
a publishing system (Appendix A on LaTeX and a program for
producing drawings (Appendix B on TGIF). In time (and in subsequent
editions), other options than those available in the first edition may
be added.

The order of presentation *in the book* does not compel any
particular order of treatment *in a course or program of self-study*.
To be sure, some later sections depend on some earlier sections,
but the linkages are not particularly
tight. In the Lawrence context, for example, we start with the chapters
and appendices introducing IDL, MAPLE, and LaTeX; move to the IDL and
MAPLE portions of the chapter on ordinary differential equations
(ODEs), the FORTRAN portions of the chapter on programming, the FORTRAN
portions of the chapter on ODEs, and the chapter introducing LSODE; and
finally address the IDL, MAPLE, and FORTRAN portions of the chapters
on integration and root finding.

Despite the organization of the chapters by program or by computational technique involved, the focus throughout is on physical contexts. The materials are designed to be used in conjunction with intermediate level courses, not introductory courses. While the illustrations of computational procedures highlight significant physical contexts and most of the examples and suggested exercises emerge from interesting physical situations, the objective is for students to become both fluent and wary in using computational resources in application to these physical situations, not to dwell excessively on the microscopic details of numerical analysis or to teach them the underlying physics (except insofar as successful computer-based solution of problems underscores the power of the fundamental physical ideas). The students are assumed to have completed an introductory survey course and to be embarking on intermediate level studies as they undertake a study of this book. We focus not so much on the set up of the situations---that is assumed to be the province of other courses---as on computer-based techniques and strategies for determining the solution once the set up is complete. Examples are drawn from classical mechanics, classical electricity and magnetism, thermal physics, quantum mechanics, curve fitting, DC and AC circuit theory, optics, and several other areas.

[1] Many of the packages mentioned in this list are commercial and proprietary, and the names are registered trademarks of the respective vendors. Full contact information for all mentioned packages will be found in Appendix Z.