Perhaps the most fundamental idea in modern computer science is that of interactive processes. Computation is embedded in a (physical or virtual) world; its role is to interact with that world to produce desired behavior. While von Neumann serial programming has it that computation-as-calculation uses inputs -- at the beginning -- to produce outputs -- at the end -- computation-as-interaction treats inputs as things that are monitored and outputs as actions that are taken over the lifetime of an ongoing process. By beginning with a decomposition in terms of interacting computational processes, we can teach our students a model of the world much closer to the one that underlies the thinking of most computer professionals.
Rethinking CS101 is a project to develop a curriculum for the first course in computer science based around the idea of computation as interaction.
Current highlights:
PLEASE CHANGE YOUR WEB PAGE TO REFER TO OUR NEW SITE AT http://www.cs101.org/. This project is in the process of moving from MIT to Olin College, following Professor Stein.
An early adopter, Debora Weber-Wulff, published a paper about her experiences -- "Combating the Code Warrior" -- in ITICSE '2000. (official ACM DL citation)
The textbook continues to be available in html from http://www.cs101.org/ipij/. Some of the chapters are also in pdf there. Morgan Kaufmann's pages are now out of date. Contact us for more information.
For a nice overview of the project, check out the inaugural column of JavaSoft site's Face To Face: Visits with Java Technology Heros, which features the Rethinking CS101 Project!
Rethinking CS101 is supported by