Archive for August 12, 2009

Chemistry is to Biology as X is to Computing

Alan Kay asked in a comment thread on a previous post:

What is the equivalent of molecular basis of life, how and why chemistry works, and why evolution should be plausible — that cannot be omitted from a first course?

I haven’t taken biology since 1978, so I admit at the start that I don’t really know what goes into Modern Biology classes.  I have been thinking some (mostly in my role on the APCS Commission to design the “Computer Science: Principles” class) about what the big/key/supporting (different adjectives get used at different times) ideas of Computer Science are.  Here’s a shot at the computing equivalent of the “molecular basis of life.”

  1. We know of several equivalent models for what is computable, for what is possible to have a machine to calculate, for what mathematics is capable of describing.  One of these is particularly useful because it can be implemented in terms of electronics, i.e., lots and lots of transistors.
  2. This model requires the use of a finite memory store that contains numbers — just integer numbers in a fixed range.  Everything that we would want to compute with, from real numbers to digital video, can be turned into these small, fixed integers.
  3. We have a calculating unit that is capable of taking instructions from this store.  These instructions tell the calculating unit to read numbers, to do simple mathematics on these numbers, to store numbers into different parts of memory, to change which instruction is being used next (so that instructions might repeat), and to choose which instruction to use next based on a decision about two numbers (e.g., whether they’re equal, whether one is greater than another).
  4. Everything that the computer is capable of, from Twitter and Facebook to making shiny bumpers in Pixar’s “Cars,” from describing how proteins might fold to predicting the weather or economy, is built up from this simple model of a calculating unit with a memory store, implemented on millions of transistors that get cheaper and cheaper.

That’s a strawman.  It did occur to me to suggest an object model, or a functional model, or even a rule-based model as the “molecular basis of computing.”  But as Yale Patt suggests, there is something compelling about the connection to the physical circuitry, to explaining all of computing in terms of light switches.

While I am making a pass at Alan’s challenge of a “molecular basis of computing,” I’m not at all addressing the other part of the challenge, “that cannot be omitted from a first course.”  In fact, very few intro computing approaches (other than the Patt and Patel book) start from the hardware first.  In Computer Science (and our Computational Media) classes, this is a Sophomore-level class that introduces this bottom-up view of computing.  Even Computer Engineering programs that use the Patt and Patel book use it at the Sophomore level.  The argument is that first year students want to do something meaningful with the computer, and then we can explain how the computer works.  I find that a compelling argument.

Perhaps the “molecular basis of computing” is something we sneak up on, in a spiral fashion (as we do in mathematics and as Ben Shneiderman suggested years ago for computing education).  In our Media Computation CS1, we do spend a lot of time on item #2 on this list — we talk about how each medium is digitized into bytes.  At the end of the class, we spend time on items #1 and #4 — how there are multiple models of computation (e.g., objects and functional), and that everything is built up from these fundamental units.  The molecular basis of computing may be something that we introduce where it makes sense to the student, we revisit often, and eventually focus on explaining it when the student understands the role of the model.

August 12, 2009 at 9:15 am 7 comments

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 9,057 other followers


Recent Posts

Blog Stats

  • 2,038,047 hits
August 2009

CS Teaching Tips