iii
Preface
In 1999, when we started teaching this course at the Department of Physics in Oslo, Compu-
tational Physics and Computational Science in general were still perceived by the majority of
physicists and scientists as topics dealing with just mere tools and number crunching, and not as
subjects of their own. The computational background of most students enlisting for the course
on computational physics could span from dedicated hackers and computer freaks to people who
basically had never used a PC. The majority of graduate students had a very rudimentary knowl-
edge of computational techniques and methods. Four years later most students have had a fairly
uniform introduction to computers, basic programming skills and use of numerical exercises in
undergraduate courses. Practically every undergraduate student in physics has now made a Mat-
lab or Maple simulation of e.g., the pendulum, with or without chaotic motion. These exercises
underscore the importance of simulations as a means to gain novel insights into physical sys-
tems, especially for those cases where no analytical solutions can be found or an experiment
is to complicated or expensive to carry out. Thus, computer simulations are nowadays an inte-
gral part of contemporary basic and applied research in the physical sciences. Computation is
becoming as important as theory and experiment. We could even strengthen this statement by
saying that computational physics, theoretical physics and experimental are all equally important
in our daily research and studies of physical systems. Physics is nowadays the unity of theory,
experiment and computation. The ability "to compute" is now part of the essential repertoire of
research scientists. Several new fields have emerged and strengthened their positions in the last
years, such as computational materials science, bioinformatics, computational mathematics and
mechanics, computational chemistry and physics and so forth, just to mention a few. To be able
to e.g., simulate quantal systems will be of great importance for future directions in fields like
materials science and nanotechonology.
This ability combines knowledge from many different subjects, in our case essentially from
the physical sciences, numerical analysis, computing languages and some knowledge of comput-
ers. These topics are, almost as a rule of thumb, taught in different, and we would like to add,
disconnected courses. Only at the levelofthesis work is the student confronted with the synthesis
of all these subjects, and then in a bewildering and disparate manner, trying to e.g., understand
old Fortran 77 codes inherited from his/her supervisor back in the good old ages, or even more
archaic, programs. Hours may have elapsed in front of a screen which just says ’Underflow’, or
’Bus error’, etc etc, without fully understanding what goes on. Porting the program to another
machine could even result in totally different results!
The first aim of this course is therefore to bridge the gap between undergraduate courses
in the physical sciences and the applications of the aquired knowledge to a given project, be it
either a thesis work or an industrial project. We expect you to have some basic knowledge in the
physical sciences, especially within mathematics and physics through e.g., sophomore courses
in basic calculus, linear algebraand general physics. Furthermore, having taken an introductory
course on programming is something we recommend. As such, an optimal timing for taking this
course, would be when you are close to embark on a thesis work, or if you’ve just started with a
thesis. But obviously, you should feel free to choose your own timing.
We have several other aims as well in addition to prepare you for a thesis work, namely