Lessons Learned From Teaching CS 575

The writing assignments for CS 575 became more focussed after teaching the course the first time. Students needed to be taught how to put together a technical document as well as given hints on how to manage the large amounts of data that their computational experiments tended to produce. Giving students the specific list of items to cover in their reports (above) helped focus the writing.

Care had to be taken with the background that could be assumed for the students in the course. Although it would be beneficial to the instructor to have a Numerical Analysis prerequisite, it was felt that this would significantly reduce the number of enrolled students. Instead the attitude of the instructor is to cover in lecture the specific topics needed such as behavior of round-off error, sensitivity for solving linear systems of equation as revealed by the estimate of the condition number and the vector-oriented solution of Initial Value Problems using a simple Runge-Kutta-Fehlberg technique (with motivation from examining Euler's Method in a vector formulation). See the NOTE above from the first programming assignment in the 1991 course. Too many sources of errors along with being new to the behavior of floating point arithmetic was too much for the students.

Although the language of choice for the majority of current HPC users is still Fortran, undergraduate students have a strong preference for C. The Cray Training Report (TR-OPT 1.0(E)) CF77 and Cray Standard C Optimization for Parallel-Vector Systems) proved invaluable for examples in lecture since it presents all examples in both Fortran and C and students could then choose to focus on the example language they were most comfortable with.

The introductory programming projects were made available in Fortran as well as in C coded drivers that interface and call the Fortran subroutines. These codes are available on line along with the lecture notes from the course, as mentioned previously.

The programming requirement for CS 575 tended to encourage computer science students to enroll in the course, but discouraged students in other science disciplines to enroll. After speaking with faculty in the other departments, it was apparent that a course introducing programming with an orientation towards scientific problem solving was needed. This is a different point of view than the beginning programming language course for computer science majors which at SDSU uses Pascal and leads to the data structures course.