The Structure and Interpretation of the Computer Science Curriculum
Encyclopedia
The Structure and Interpretation of the Computer Science Curriculum is a monograph published in 2004 by Matthias Felleisen
, Robert Bruce Findler
, Matthew Flatt
and Shriram Krishnamurthi
comparing and contrasting the pedagogical focus of How to Design Programs
(HtDP) with that of Structure and Interpretation of Computer Programs
(SICP).
The paper introduces the pedagogical landscape surrounding the publication of SICP. The paper starts with a history and critique of SICP, followed by a description of the goal of the computing
curriculum. It then describes the principles of teaching behind HtDP; in particular, the difference between implicit vs. explicit teaching of design principles. It then continues on to describe the role of Scheme and the importance of an ideal programming environment, and concludes with an extensive evaluation of content and student/faculty reaction to experience with SICP vs. HtDP.
One of the major focuses of the paper is the emphasis on the difference in required domain knowledge
between SICP and HtDP. A chart in the paper compares major exercises in SICP and HtDP, and the related text describes how the exercises in the former require considerably more sophisticated domain knowledge than those of HtDP. The paper continues on to explain why this difference in required domain knowledge has resulted in certain students having confused domain knowledge with program design knowledge.
The paper claims the following four major efforts that the authors of HtDP have made to address perceived issues with SICP:
1) HtDP addresses explicitly, rather than implicitly, how programs should be constructed.
2) To make programming easier, the book guides students through five different knowledge levels corresponding to data definition levels of complexity.
3) The book's exercises focus on program design guidelines, rather than domain knowledge.
4) The book assumes less domain knowledge than that of SICP.
The paper then distinguishes between structural recursion
, where the related data definition happens to be self-referential, requiring usually a straightforward design process, and generative recursion, where new problem data is generated in the middle of the problem-solving process and the problem solving method is re-used, often requiring ad hoc mathematical insight, and stresses how this distinction makes their approach scalable to the object-oriented (OO) world.
Finally, the paper concludes with a description of responses from various faculty and students after having used HtDP in the classroom.
Matthias Felleisen
Matthias Felleisen is a computer science professor and an author of German background.Felleisen is currently a Trustee Professor in the College of Computer and Information Science at Northeastern University in Boston, Massachusetts. In the past he has taught at Rice University after receiving his...
, Robert Bruce Findler
Robert Bruce Findler
Robert Bruce Findler, colloquially known as "Robby", is a computer scientist, currently teaching at the Northwestern University. He is also a member of the PLT group and, as such, responsible for the creation and maintenance of DrRacket. In addition to DrRacket, Findler has contributed numerous...
, Matthew Flatt
Matthew Flatt
Matthew Flatt is a computer scientist, currently teaching at the University of Utah . He is also a member of the PLT group and, as such, responsible for the creation and maintenance of Racket....
and Shriram Krishnamurthi
Shriram Krishnamurthi
Shriram Krishnamurthi is a computer scientist, currently teaching at Brown University . He is also a member of the PLT group and, as such, responsible for the creation of several software packages in Racket, including the Debugger, the FrTime package, and the networking library.Krishnamurthi...
comparing and contrasting the pedagogical focus of How to Design Programs
How to Design Programs
How to Design Programs is a textbook by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt and Shriram Krishnamurthi on the systematic design of computer programs published in 2001 by MIT Press. The book introduces the concept of a design recipe, a six-step process for creating programs from...
(HtDP) with that of Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs is a textbook published in 1984 about general computer programming concepts from MIT Press written by Massachusetts Institute of Technology professors Harold Abelson and Gerald Jay Sussman, with Julie Sussman...
(SICP).
The paper introduces the pedagogical landscape surrounding the publication of SICP. The paper starts with a history and critique of SICP, followed by a description of the goal of the computing
Computing
Computing is usually defined as the activity of using and improving computer hardware and software. It is the computer-specific part of information technology...
curriculum. It then describes the principles of teaching behind HtDP; in particular, the difference between implicit vs. explicit teaching of design principles. It then continues on to describe the role of Scheme and the importance of an ideal programming environment, and concludes with an extensive evaluation of content and student/faculty reaction to experience with SICP vs. HtDP.
One of the major focuses of the paper is the emphasis on the difference in required domain knowledge
Domain knowledge
Domain knowledge is that valid knowledge used to refer to an area of human endeavour, an autonomous computer activity, or other specialized discipline.Specialists and experts use and develop their own domain knowledge...
between SICP and HtDP. A chart in the paper compares major exercises in SICP and HtDP, and the related text describes how the exercises in the former require considerably more sophisticated domain knowledge than those of HtDP. The paper continues on to explain why this difference in required domain knowledge has resulted in certain students having confused domain knowledge with program design knowledge.
The paper claims the following four major efforts that the authors of HtDP have made to address perceived issues with SICP:
1) HtDP addresses explicitly, rather than implicitly, how programs should be constructed.
2) To make programming easier, the book guides students through five different knowledge levels corresponding to data definition levels of complexity.
3) The book's exercises focus on program design guidelines, rather than domain knowledge.
4) The book assumes less domain knowledge than that of SICP.
The paper then distinguishes between structural recursion
Recursion
Recursion is the process of repeating items in a self-similar way. For instance, when the surfaces of two mirrors are exactly parallel with each other the nested images that occur are a form of infinite recursion. The term has a variety of meanings specific to a variety of disciplines ranging from...
, where the related data definition happens to be self-referential, requiring usually a straightforward design process, and generative recursion, where new problem data is generated in the middle of the problem-solving process and the problem solving method is re-used, often requiring ad hoc mathematical insight, and stresses how this distinction makes their approach scalable to the object-oriented (OO) world.
Finally, the paper concludes with a description of responses from various faculty and students after having used HtDP in the classroom.