Unfortunately, most traditional undergraduate curricula do not formally instruct non-computer scientists in the techniques necessary to exploit parallel computers efficiently. As with other aspects of CSE, these skills can only be mastered by a hands-on experience. Students in the course are therefore required to work on a sufficiently complex problem that interests them and implement the solution on a parallel machine. The computational skills necessary are provided just in time for their utility to be evident. Since it is unrealistic to expect undergraduate students to choose a problem of sufficient complexity early in the semester, the students are encouraged to work with mentors from diverse science and engineering disciplines.
Mentors provide the initial problem, and information about the problem during the semester.
In addition to the term project, learning in the course takes place in the form of lectures on the fundamental issues of parallel computing, group discussions in class, discussions on the class newsgroup, and external readings. In Fall 1995, undergraduate students were grouped together with graduate students to form teams that could work together on large projects. Thus, the undergraduate students were mentored by the graduate students as well as the project mentors.