With respect to the content of Freshman courses:
I teach CPS 151 (CS 2), the second-term Freshman course, at the University
of Dayton. Until a couple of years ago, the language used was Ada. They
switched to C++ because of parent (paying) pressure. [The fact that I
deplore this trend toward teaching what's popular is for another forum.]
The major content of CS 2 is abstract data types (ADTs). I don't see how
one could do justice to ADTs without generics. (Years ago, teaching this
course in Pascal, it was difficult to produce what I call second-level ADTs:
e.g., container types in which the contained type is unspecified by the
original programmer.) That is, there is an urgent need for generics in CS
2. In Ada, I taught (and, believe me, the students used) generics. In C++,
I teach (and the students use) templates for the same purpose (even though
templates don't provide some of the functionality that's really needed).
Moreover, at this time, I don't see how one could justify not working with
inheritance and run-time dispatching. Generics, objects, classes,
inheritance, and run-time dispatching are fundamental tools for building
complex data structures. They should be provided at the Freshman level so
the later courses (especially Data Structures) can exploit them.
Are these topics too advanced for Freshmen? Not in my experience. Can we
give complete treatments of these topics at this level? Of course not.
(Does anyone believe that the Freshman Calculus sequence provides a complete
treatment of the mathematics of differentiable and integrable functions?)
We're introducing the development and use of basic tools.
Please excuse the lecture tone. I've been teaching at one level or another
since 1959 (I was 17, if you must know) and have a habit of lecturing.
Philip W. Brashear
EDS Conformance Testing Center
4646 Needmore Road, Bin 46
P.O. Box 24593
Dayton, OH 45424-0593
[log in to unmask]