James Caristi, statement, CS2 workshop

I've been reflecting on how CS2 should be constituted for the last two years, since we changed to c++. In our department, I was elected "trailblazer" -- to teach the new courses for the first time. We have a slightly advantageous situation, in that we have a CS2 AND a sophomore level data structures course. In our CS2, the goals have been (and continue to be) the development of the students' abilities to handle substantially larger programming assignments and to learn to use elementary data structures. Then the data structures course goes on to do much more analysis and examination of more advanced data structures.

We all realized early on that object orientation would muddy the mix somewhat. This was evident in seeing that many data structures texts using c++ were not really using any OO.  But even though we wanted to develop polymorphism in a strong way and approach data structures from as much OO as possible, it seemed apparent to me that in this (for us) third course we really MUST expose students to other important ideas/paradigms, eg. generics. Naturally, that brings up even more the idea that we seem to be cramming too much into the beginning curriculum. Dan McCracken picked up on that in putting together his panel at SIGCSE last year.

At this moment, things are not very clear in my own mind concerning how things should be done in CS2 (or even in our second and third courses). Certain things make very strange bedfellows: OO design methodologies, classical software engineering, polymorphism, generics, data structures, object structures. I'm hoping that by participating in this workshop some of my thinking will crystallize into a reasonable structure for our curriculum.

Owen L. Astrachan
Last modified: Wed Sep 2 00:16:29 EDT 1998