Ancestor worship in CS1: on the primacy of arrays

History has given us the array as the fundamental data structure to present to students within the CS1 curriculum. However, with the recent growth in popularity of object-oriented languages for CS1 (C++, Java, C#), and with that, the acceptance of the objects-first or objects-early approach to teaching CS1, it becomes imperative that we re-evaluate our long-held beliefs about what is appropriate to teach. It is our position that the first data structure that students are exposed to should not be arrays, but rather some other form of collection. We will give some examples of how to use <i>java.util.HashMap</i> and some of the other Java Collections classes in substitution of arrays. We also present data concerning the academic performance of students using arrays versus those using Java Collections for CS1 lab exercises.

[1]  John C. Mitchell,et al.  Concepts in programming languages , 2002 .

[2]  Edward J. McCluskey,et al.  Curriculum 68: Recommendations for academic programs in computer science: a report of the ACM curriculum committee on computer science , 1968, CACM.

[3]  Bruce W. Weide,et al.  Components-first approaches to CS1/CS2: principles and practice , 2004, SIGCSE '04.

[4]  Richard H. Austing,et al.  Curriculum '78: recommendations for the undergraduate program in computer science— a report of the ACM curriculum committee on computer science , 1979, CACM.

[5]  Ravi Sethi Programming languages (2nd ed.): concepts and constructs , 1996 .

[6]  John W. Backus,et al.  The history of FORTRAN I, II, and III , 1978, SIGP.

[7]  Marvin V. Zelkowitz,et al.  Programming Languages: Design and Implementation , 1975 .

[8]  Ravi Sethi,et al.  Programming languages - concepts and constructs , 1988 .

[9]  David Gries Where is programming methodology these days? , 2002, SGCS.

[10]  John W. McCormick Teaching Ada by the book (panel): the pedagogy of Ada in CS1 , 1993, TRI-Ada '93.

[11]  David A. Watt,et al.  Programming language concepts and paradigms , 1990, Prentice Hall International Series in Computer Science.

[12]  Carl Alphonce,et al.  Object orientation in CS1-CS2 by design , 2002, ITiCSE '02.

[13]  Allen B. Tucker,et al.  Computing curricula 1991: Report of the ACM/IEEE-CS Joint Curriculum Task Force , 1991 .

[14]  Wolfgang K. Giloi Konrad Zuse's Plankalkül: The First High-Level, "non von Neumann" Programming Language , 1997, IEEE Ann. Hist. Comput..

[15]  Michael B. Feldman,et al.  Teaching Ada by the book: the pedagogy of Ada in CS1 , 1994, SIGCSE '94.

[16]  Carl Alphonce,et al.  Using graphics to support the teaching of fundamental object-oriented principles in CS1 , 2003, OOPSLA '03.

[17]  Friedrich L. Bauer,et al.  The “Plankalkül” of Konrad Zuse: a forerunner of today's programming languages , 1972, CACM.