The Three-Fold Introduction to Computer Science

Doug Baldwin

Department of Computer Science, SUNY Geneseo

Abstract

Computer scientists use three methods of inquiry in practicing their discipline:

- Design, the engineering of algorithms, programs, hardware, etc.

- Theory, the mathematical analysis of algorithms, programs, etc., and - Empirical Analysis, the experimental verification of theory. Undergraduate computer science curricula, on the other hand, have

traditionally concentrated on design, and particularly on the programming subset of design. Theory has been relegated to a few advanced courses, and rigorous experimentation has been practically non-existent. As a result, students come to see programming as computer science’s central concern, and so spend years mastering the minutiae of particular programming systems while ignoring the fundamental knowledge they will later find necessary for success in the profession.

This talk discusses a new introductory curriculum in computer science that the Computer Science Department at Geneseo is developing. Our curriculum’s central mission is to give students rudimentary but real ability in all three methods of inquiry. Compared to traditional curricula, ours contains an unusually large and rigorous amount mathematics and experimental science, made possible by an unusually strong willingness to defer or even eliminate instruction in many aspects of programming. The material we do teach is relatively abstract for introductory courses, and is often not what students expect. We use a number of active learning techniques to help students overcome these barriers. We have preliminary evidence of the new curriculum’s effectiveness: Students continue from it into the rest of the CS major at a rate as high as or higher than they did from our earlier, more traditional, introduction, and they seem to do slightly better in later courses than do students from the older introduction.