The 1999-2000 Ad Hoc Advisory Committee

Feedback Round 1: Goals for the Conclusion of CS1-CS2

This document represents a first round in what is expected to be an on-going process to develop directions for the Advanced Placement (AP) Computer Science (CS) course. See Directions for Advanced Placement Computer Science for more information on AP CS and the Ad Hoc Advisory Committee.

Some Questions

As the Ad Hoc Advisory Committee begins its discussions concerning possible directions, it will be helpful for committee members to receive feedback concerning desired outcomes for the introductory CS1-CS2 sequence at the college and university level. (At the high school level, the corresponding course typically is labeled CS AB.) The Ad Hoc Advisory Committee anticipates that colleges and universities may choose significantly different mechanisms to achieve the desired outcomes. Rather than initiate another round of language and pedagogy wars, the Committee has put aside (for awhile) any consideration of outcomes for CS1. Further, the Committee wants to focus on high-level goals -- independent of a specific language. Thus, comments are specifically solicited for the following.

All of the following questions refer to goals to be met at the end of the introductory CS1-CS2 sequence.

  1. To what extent should object-oriented design be a central part of CS1-CS2? For example, at the end of CS1-CS2, should students be comfortable working with the concepts of classes, objects, is-a and has-a relationships, aggregates, single inheritance, and encapsulation? (If object-oriented design should not be part of CS1-CS2, please outline an appropriate alternative.)
  2. At the end of CS1-CS2, should students be comfortable programming in some language, using concepts of conditional execution, iteration, and recursion?
  3. Within CS1-CS2, should problem solving emphasize high-level constructs (e.g., wrappers, iterators), low-level constructs (e.g., pointer manipulation), both, or neither?
  4. What example classes should be included in CS1-CS2 (e.g., stacks, queues, lists, trees, hash tables, priority queues)?
  5. Within CS1-CS2, to what extent should students understand abstract classes that need to be subclassed for instantiation?
  6. Within CS1-CS2, should students have extensive experience with dynamic memory allocation and/or memory deallocation?
  7. What techniques of program testing, program verification, and/or program documentation should be included in CS1-CS2?
  8. To what extent should exception handling be emphasized within CS1-CS2?
  9. What additional high-level topics which should be a central part of CS1-CS2?

In providing feedback, please make your comments language independent;
references to specific languages are especially discouraged at this stage.

Feedback Requested

Please send your comments either individually or collectively to the members of the Ad Hoc Advisory Committee:

Send mail to all Ad Hoc Committee Members

Suggestions concerning this World Wide Web page are welcome.

created November 23, 1999
last revised December 7, 1999

Henry M. Walker (