What is the Future of the Data Structures Course?

For a viewpoint similar to what I write about here, see A New CS1 Objective: Building Intuition for Computational Science by Charles Van Loan from Cornell. His work was published in the 9/95 and 10/95 issues of Siam News. In his paper he argues that students in the first year should develop intuition about the five computational senses, ask your students:

He also espouses the following system of equations

        Formalism First = Rigor Mortis
        Intuition First = Rigor's Mortise

My position for the second course(s) is similar, and calls for practical componenent that Charlie also mentions in his paper.

The courses that are CS2

We seem to be stuck with the appelation CS2. That's too bad, because many places spread the material that I'll talk about as essential to CS2 over two (and sometimes three courses). However, having a single name on which we can hang all these topics is convenient. In the rambling explanation that follows, there's no order to the topics I list as important. I'm sure I've left some important topics out and look forward to re-visiting this statement.

What's Hot, What's Not

There's a lot to do in a second course. I don't think we can expect our students to be competent programmers, understand idioms and patterns, have a feel for complexity, know about algorithmic and data structure trade-offs (and whatever else we want to put into this course) in a single semester. We must decide what the important topics and principles are, and how these can be discussed in as language-neutral a way as possible. We should think about an advanced course I call software design in which we do larger projects, but also address some of the low-level constructs that may have been missed in a software-component course. Fitting the new CS2 courses into existing curricula isn't simple, but it's an adventure and it can be challenging and rewarding.
Owen L. Astrachan
Last modified: Fri Mar 21 17:10:47 EST