Bina Ramamurthy, statement, CS2 workshop

Introduction
CS2 in its current state comprises concepts from three major areas in Computer Science: (i) Data Structures (ii) Algorithms and (iii) Programming language. In order to address the changing needs of the Computer Science curriculum it is necessary to draw a balanced list of topics from the three areas. This may mean moving some of the traditional topics from CS2 into other higher level courses to accommodate newer programming language-related concepts.

Current State

CS2 was a concept-intensive course with heavy emphasis on programming even before the introduction of Object-Oriented(OO) paradigm and C++-like languages. Understanding, designing and programming in OO have added to the complexity of the course. For example, programming in C++ requires students to understand concept of classes, constructors, mutators, accessors, overloading, inheritance, virtual functions, const and reference types, and so on. On the design side, they need to deal with OO design from problem statement and with such ideas as Application Programming Interfaces (API's). From the development point of view they have to master multi-file development and use of an OO debugger, for example. Packages such as Standard Template Libraries (STL) are becoming really standard components of many environments. Also the trend in applications is towards component programming [1] and distributed object environments [2] which raises software design and development to a whole new level. Textbooks written for CS2 are struggling in vain to address these varied issues and at the same time keep up their coverage "ACM" curriculum. The result of all these is a overloaded course. The purpose of CS2 as a foundation course is lost by this overcrowding of topics.

Possible Solution

A solution to overcrowding of topics is to move some of the topics such as implementation issues, analysis of algorithms, Big-O notation, to the next level course on algorithms and data structure which already exists in many CS programs. This allows for more time to develop the OO design paradigm and programming with added features such as STL and component programming. CS2 also needs address the use of design and modeling tools (UML, Rational Rose) for large scale problem solving. In summary, CS2 needs to evolve to accommodate the recent advances in the design paradigm and the recent programming language concepts without overloading the course.

References

[1] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, "Design Patterns: Elements of Reusable Object-Oriented Software", Addison-Wesley Inc., Reading, MA, 1995.

[2] R. Khanna, "Distributed Computing: Implementation and Management", Prentice-Hall Inc., Englewood-Cliffs, NJ, 1994.


Owen L. Astrachan
Last modified: Wed Sep 2 00:35:32 EDT 1998