Position Statement for the Workshop
on the Future Direction of Data Structures

Ursula Wolz
Department of Computer Science
The College of New Jersey (formally Trenton State College)
Hillwood Lakes, Box 4700
Trenton, NJ 08650
wolz@tcnj.edu
http://www.tcnj.edu/~wolz
+1 609 771 226

The data structures course should teach abstraction, de-emphasizing data. The overarching goal should be to show how complex computational problems are solved through abstraction and a modular viewpoint. The course too easily degenerates into a collection of "how to" skills, rather than presenting a unifying theme that stresses "why these things are important." Specifically, I am concerned with the following:

1. The course should be FUN
The course should inspire students. The rigor in the course should be the result of intellectual challenge that is stimulating and fun. Mundane detail should not overwhelm students as they master the big concepts. All too often the course gets bogged down in petty details of syntax, form and proof. Students are required to master the nuances of a particular programming language (pointers in C for example). They may be required to produce proofs of complexity, or memorize algorithms (heap sort, for example) which they do not fully understand. We must ask whether the level of detail is really necessary. Does it take away from coming to appreciate the big concepts?

2. The course should not be merely a collection of discrete concepts
Although there may once have been a rationale to the order of presentation of the topics, current texts, especially those that map the classic Pascal approach onto C or C++, don't express the connections well. The course easily degenerates into a set of small topics held together by the thinnest of threads. This may appeal to students who like to solve small problems in isolation. It frustrates students who look for consistent themes and their relevance. If Data Structures is a filter course for the major, perhaps we are selecting out the wrong students. Computer Science is not a field in which work is accomplished on small problems in isolation. More than ever, one must work collaboratively on large problems with complicated connections. An object-oriented approach in which large projects are assigned addresses this. However the paradigm should be taught with this goal in mind, not as an end onto itself. Similarly the large project should have purpose, it should not merely be an exercise in creating hundreds of lines of code.

3. Knowledge of modern communication concepts will be critical
Students should be exposed to the concepts of computer communication. This includes both interface issues (Graphical User Interfaces, the event model, multi-media programming, and hypertext) as well as network issues (distributed solutions and multi-processing). A danger in the current curriculum is focusing on single process solutions that develop a simplistic mind set. For example, a good text will teach students to make sure a file exists before opening it. But in a distributed environment there are two events that must be considered: the file indeed does not exist or the file is not yet ready (some other process is still building it). The "error" is no longer an error and both events must be handled gracefully. Teaching students to program from a communications standpoint requires changing the way we all think about what constitutes a "good" solution. It requires knowing when to take responsibility for events, and when to delegate responsibility to handlers that already exist.


More detailed discussion of these points appear in the following papers: these can be found as Macintosh Word 5.0 documents at:
http://www.tcnj.edu/~wolz/CS2Workshop/MacPapers


Wolz, U, Domen, D., McAuliffe, M. Multi-media integrated into CS 2: An interactive children's story as a unifying class project. To appear in SIGCSE Bulletin, Vol 29, no. 3, 1997.

Wolz, U. Language Considerations in a Goal-Centered Approach to CS 1 and CS 2, To appear in the Proceedings of the Consortium for Computing in Small Colleges, Secon Annual Northeastern Conference , April 25, 1997.

Wolz, U., Wesigarber, S., Domen, D., McAuliffe, M., Teaching Introductory Programming In The Multi-Media World, SIGCSE Bulletin , Vol 28, Special Issue, 1996. pp 57 - 59

Wolz, U. and E. Conjura, Integrating Mathematics And Programming Into A Three Tiered Model For Computer Science Education, SIGCSE Bulletin , Volume 26, no. 1, March 1994 (pp 223 -227

Wolz, U. and E. Conjura, Abstraction to Implementation: A Two Stage Introduction To Computer Science, Proceedings of the 1994 National Educational Computing Conference , Boston MA, June, 1994.