Archive for June 29, 2009

DNA: A new CS1 language, for teaching systems

Just got back from the five hour drive to drop off my daughters at their youth choral group summer camp.  I listened to a podcast of a Long Now Foundation debate between Drew Endy and Jim Thomas on synthetic biology.  If you’re not familiar with the Long Now Foundation seminar series, I highly recommend that you check it out.  Think of the TED talks, but now let the same speakers (in some cases) talk for two hours, instead of 20 minutes.  The discussion is deep and meaningful.  I particularly recommend the debates, and this one was just as thought-provoking as the others I’ve heard.

The particular Computing Education insight that I got from listening to Drew Endy was in thinking about DNA as a programming language.  Drew talks about DNA as “a replicating machine” that can be “programmed” “in garages, like the early homebrew computer hackers.” Take a look at this comic book treatment of how to build logic components out of DNA.  Those simple logic elements look like the same level as Yale Patt’s hardware-first take on CS1. There is even a “programming language” for designing DNA components.

Could you teach an introduction to computing using DNA as the context, medium, and “programming language”?  I don’t see why not.  It’s clearly relevant.  It would avoid a lot of the issues that are important to majors but aren’t really important to a basic understanding of computing.  There aren’t any issues about commenting in one’s DNA, though there are wonderful issues about re-use.  (Endy has a great quote in the debate, “Real intelligent design would include documentation!”)

Here’s the real advantage to talking about DNA as a CS1 language: no computing teacher would just do DNA.  You’d want to leave students with a “real” programming language that they could use in everyday tasks, maybe Python or Java.  Then, the class would no longer be about programming or even computers, and would instead be about systems and computation.  You’d want to spend as little time on syntax as possible, because there’s not much syntax in DNA and it’s not at all important for what the class would really be about.  What does it mean for DNA components vs. Python objects to interact?  How does a branch or selection get encoded in DNA or in a programming language?  What are all the ways in which a computational system might make choices?  How is computation similar or dissimilar in biology and in silicon?

I don’t know if synthetic biology has really reached the point where it could be used as a context for introductory computing — let alone whether it could be safely and ethically taught to first year undergraduate students.  But the thought of using a non-silicon context for teaching computing is a useful tool for thinking about what we really want to be teaching about computing.

June 29, 2009 at 12:32 am 6 comments

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

Join 9,005 other followers


Recent Posts

Blog Stats

  • 1,879,910 hits
June 2009

CS Teaching Tips