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.