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:
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.