Position Paper for FYI 2000
Mike Clancy · 2000
courses.) Our lower-division courses are intended to provide students with programming skills (program analysis and synthesis; language, tool, and library use), knowledge of techniques and concepts to be reinforced and extended in subsequent courses, and an overview of computer science sufficient to allow a realistic decision about majoring in the field. The first-year courses address these goals as follows: y 61A gives students practice with a variety of programming paradigms (functional, objectoriented, and rule-based) in an attempt to broaden their programming repertoire. Our treatment here is based on the adage that everything looks like a nail when one's only tool is a hammer. The course also covers the techniques used to implement the primitive operations for those paradigms, thus preparing students for more intensive study of data structures, compilers and interpreters, and advanced techniques treated in depth in a variety of upper-division courses. y 61B introduces students to Java, building on their experience with object-oriented programming in 61A. It then covers the data structures topics of the traditional CS 2: arrays, linked lists and trees (previously covered in 61A), heaps, hash tables, and sorting methods. Though students do relatively little algorithm analysis in this course, they at least are exposed to the activity and its place in the broader context of computer science. 61B is also the first place in the curriculum where students design and develop relatively large programming projects (1000-1500 lines of code) from scratch, and includes coverage of tools and techniques that support productive programming. Techniques and concepts covered in 61B reappear throughout the upper-division courses. All the lower-division programming courses involve the use of closed labs. In 61AB, labs provide closely supervised practice with language constructs and low-level techniques, as well as opportunities to experiment with algorithm and data structuring alternatives and to display progress and get feedback from t.a.s on projects.