The Structure and Interpretation of the Computer Science Curriculum

Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi

Functional and Declarative Programming in Education, 2002


Nearly twenty years ago, Structure and Interpretation of Computer Programs (SICP) changed the intellectual landscape of introductory computing courses. Unfortunately, three problems---its lack of an explicit program design methodology, its reliance on domain knowledge, and the whimsies of Scheme---have made it integrate poorly with the rest of the curriculum and fail to maintain its position in several departments.

In this paper we analyze the structural constraints of the typical computer science curriculum and interpret SICP and Scheme from this perspective. We then discuss how our new book, How to Design Programs, overcomes SICP’s problems. We hope that this discussion helps instructors understand the structure and interpretation of introductory courses on computer science.


Please refer to the corresponding journal paper instead.



These papers may differ in formatting from the versions that appear in print. They are made available only to support the rapid dissemination of results; the printed versions, not these, should be considered definitive. The copyrights belong to their respective owners.