The future of CS2
Jaime Nino
Computer Science
University of New Orleans
jaime@cs.uno.edu
To address the need to reconsider the content of CS2 on the face of the impact made by Object Orientation and the widely available robust libraries that support this paradigm, I will initially address the question of the reasons for use of the OO paradigm in introductory programming courses. Object Orientation does provide the teacher with a paradigm which allows us to properly address the way to build software systems which ought to be seen as temporary solutions to evolving problems ; this paradigm:
I am truly convinced that students will be better off being introduced to software development via OO; it places emphasis on abstraction and therefore class design and system design over algorithm design; moreover they will get a whole system view using appropriately composition, abstraction and libraries. This paradigm then brings up the issue of teaching the use and design of libraries; the use of existing libraries is clearly encouraged while the design of libraries cannot be avoided on the face of the use of inheritance and polymorphism as tools for system design. Thus, OO as the teaching paradigm and a continuation of CS1:
These do not mean that we must provide more complex programming assignments; only that reusability (and thus good design of systems) is encouraged, expected and supported. In the current treatment of these topics overall system design is de-emphasized over algorithm design, as functional decomposition and thus algorithm design is the pre-eminent method presented to implement systems. Haven't we seen the error of our ways yet? We should be analyzing system design (cohesion, and coupling) over algorithm design. Moreover, given a class, its methods consists for the most part of a few lines of code, leaving the analysis of algorithms play only a secondary role in the design of systems. In the long run, an efficient algorithm will not help much inside a poorly design system. The use of libraries encourages reusability and allows the teacher to place emphasis on the part of the system pertinent to the current topic in discussion; also the use of libraries by no means forbids or discourages the teacher to consider the design or implementation of classic libraries; on the contrary, the teacher is placed within a very important design topic, the design of container libraries.
As a closing note, I must admit that a shifting to this paradigm is expected to place newer demands on the teacher in terms of new lecture topics and materials as well as the development of objects in particular and libraries in general to be provided for lecture support.