Dale Skrien, statement, CS2 workshop
I have taught CS2 using Pascal and lately using Java and so I have had
experience teaching the course with a non-OO language and an OO language.
In the Pascal version of the course, the traditional topics and their
implementations were covered. In the Java version, I have covered some
traditional topics, some OO design, and some use of existing classes and
class libraries.
Based on my experience teaching the both versions of CS2, I have come to
the following position regarding teaching CS2 using an OO language. I am
assuming that the student will have used an OO language in CS1 before
entering the CS2 class.
- Through the use of an OO language in their CS1 course, students will
already feel comfortable with using existing classes and class libraries by
the time they enter the CS2 course. Therefore the idea of using a List or
Stack or Tree class that already exists will be easy for the students to
adjust to.
- As a result of this, larger projects can be built by the students than
was possible when they implemented every detail of the data structures they
used.
- Furthermore, in these larger projects, students can learn not only what
the basic data structures can do, but how to design appropriate new
classes/data structures for solving these larger problems in a robust way.
Therefore I propose that part of the time of the course be spent in OO
Design, including such topics as CRC cards and simple UML diagrams.
- However, for a variety of reasons I also feel that part of the course
needs to focus on implementation details of basic data structures. In my
opinion, students will feel more comfortable with various data structures
if they have tried to implement them themselves. Furthermore, they will
appreciate better questions concerning worst-case complexity of the use of
various implementations of the structures if they have seen or constructed
one or more implementation themselves.
Of course, the main problem with covering all this material in a
one-semester course is how to do it without rushing through the material or
leaving out lots of details. My proposal is to deal with this problem is
to make the course project-based in the following way:
- Motivated by a large project that is to be completed by the students by
the end of the semester, gradually introduce existing data
structures/libraries and discuss design decisions regarding combining them
to solve large problems.
- In the midst of the work on this large project, add a few small
projects dealing with implementation of a few of the structures.
Owen L. Astrachan
Last modified: Wed Sep 2 00:21:03 EDT 1998