next up previous
Next: Acknowledgments Up: A Computational Physics Course Previous: Examples

Assessment and Requirements

 

Our Computational Physics course was intended for upper-level undergraduates and graduate students. Our original prerequisites included junior-level physics, programming experience in a compiled or symbolic language, numerical methods, and mathematical methods of physics including statistics, data fitting, and linear algebra. Unfortunately, I have had to relax these prerequisites since so few of our students could meet them [a condition which is only getting worse as university administrations, in an effort to compete in the student-customer market, try to outdo each other in decreasing the number of credits needed to graduate].

Although not the original intention, and even though the students have taken the required quarter or two of Introductory Computer Science, I have found that our Computational Physics course often serves as the students' first introduction to scientific computing (specifics to follow). Even though the students feel this makes the course valuable to them, it is a problem since it leaves less time to do science on the computers and to experiment. We have tried to alleviate some of this shortcoming by collecting some of the needed background into a computing guide for scientists and engineers[4], and by developing web tutorials based on that guide[2]. I have also worked at introducing an Introduction to Scientific Computing course for students at the freshman or sophomore level designed to go beyond the basic computer literacy the students have now.

To be specific, some of the computing skills whose absence often cause problems for the students are:

compiling, linking, and libraries:
what are the steps in compiling; where do subroutine libraries enter into the process; the need for compiler options; the available compiler options; the importance of accurate source listings (and how to get them).
documentation:
the importance of knowing what you are doing; knowing where to look for on-line information; using man pages; finding system documentation; using book (hypertext) readers.
workstation clusters:
dealing with multi-user systems; dealing with multi-CPU systems; ported codes among machines; printing different file types (it hurts to see Post Script files printed as ascii); printing on a network; enough system awareness to be able to run in parallel with software such as PVM.
directories and files:
basic organization of programs, data, and subdirectories; moving about a file system; file types (source, binary, executable, .ps, .dvi, ...).
tools:
debuggers (essentially unknown to students); makefiles (rarely used); aliases.
libraries:
availability and importance of; documentation; linking; need to call Fortran from C to use libraries.
matrices:
especially with multiple dimensions; physical versus logical sizes; row and column-major orderings; using in subprograms.
complex numbers and functions:
especially for C programmers; we use them all the time in physics.
subprogram calls:
familiarity with; the difference between pointer arguments and value arguments in calls; arrays as arguments.
input and output files:
default and nondefault files; formatted and nonformatted.
variable storage:
decimal; binary; octal; 48 bit integer; and how to input and output these types.
visualization:
basic tools; number of bits needed to fill screen; binning of data; different formats.
effective running:
optimizing compilers; tuning; profiling.

The reviews for the course have been uniformly high even though working through the large number of projects and the requisite programming skills are a challenge for students. In some cases, these challenges have been overwhelming. I have been rewarded in this course by a level of discussion rarely encountered in other courses and with students actually asking for additional materials. The project approach proves to be flexible and to encourage students to take pride in their work and their creativity. Some students have gone on to study computational science at summer schools, some have made it a career option in graduate school, and others have found the projects useful in their jobs. In any case, it has been exciting to teach.


next up previous
Next: Acknowledgments Up: A Computational Physics Course Previous: Examples

Rubin Landau
Wed Mar 18 09:44:22 PST 1998