DNA: A new CS1 language, for teaching systems

June 29, 2009 at 12:32 am 6 comments

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.

Advertisement

Entry filed under: Uncategorized. Tags: , , .

Future of Computing Education Summit: A New Computing Education Organization! An undergraduate degree in Computer Science Education

6 Comments Add your own

  • 1. Aaron Guerami  |  June 29, 2009 at 11:37 am

    I completely agree. I have described this in one of my posting.

    DNA is a computational system. DNA makes proteins. Proteins are long term storage systems for the DNA computational system.

    Although I have not explored the mechanisms involved in this process, I have explained how information changes as it passes through the DNA strand.

    The blog is generally about physics, but I am starting to describe this interesting process.

    Aaron Guerami

    Reply
  • 2. Ian Bogost  |  June 29, 2009 at 10:34 pm

    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.

    Wait, what is it we really want to be teaching?

    Reply
    • 3. Mark Guzdial  |  June 30, 2009 at 3:45 pm

      It’s a good question, Ian. For me, we would like to move beyond syntax and the idiosyncrasies of a particular language, and instead teach understanding about computation that would transfer between different languages and computational media. Can we get to that in a single semester? Don’t know. But I do think that we can more easily reach the transfer goal if we teach multiple languages, or in this case, multiple computational media.

      Reply
      • 4. Ian Bogost  |  June 30, 2009 at 5:55 pm

        The idea of moving from particular to general makes sense, but it also bears risks. Among those risks is the potential divestiture of the particular in favor of the general.

        I talked about this issue a bit in the section on procedural literacy in Persuasive Games. There the example was Latin, and my concern was for the ways that language is instrumentalized as a tool for teaching about logic, or language, or vocabulary, or critical thinking more generally. It offers all those features, to be sure. But Latin is also the native tongue of a major historical empire over a millennium, as well as the official language of a major world religion for almost two millennia hence. These specific uses should not be overlooked or forgotten in favor of the instrumental application of the language to improve SAT scores.

        There’s some risk of the same sort of instrumentality here. DNA is not just a convenient general logic that might get biology-minded interested in computation. It is also a valid knowledge domain of its own right.

        The same could be said of the “idiosyncrasies of a particular language” you mention. Programming languages are not merely flagstones that slowly construct the wall of computational progress; they are unique, individual expressions of human creativity and problem solving, ones mired in specific histories and moments. A language like BASIC, for example, is not merely a stepping stone for children; it was an influential platform for the early microcomputer.

        So, I agree with you about the benefits of teaching multiple languages and paradigms, but I also think such matters offer an historical context that is essential — and perhaps even interesting!

        Reply
  • 5. Mark Guzdial  |  June 30, 2009 at 6:39 pm

    Which is, in fact, the argument that you are making with your “Platform Studies” series with MIT Press — that the features and design decisions of particular platforms are important and influence what’s done with those platforms. It’s a great point, and one that computer scientists could usefully learn from.

    Reply
    • 6. Ian Bogost  |  June 30, 2009 at 7:45 pm

      Right, precisely. Still hoping for a BASIC book in fact!

      Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Recent Posts

Feeds

 

June 2009
M T W T F S S
    Jul »
1234567
891011121314
15161718192021
22232425262728
2930  

Follow

Get every new post delivered to your Inbox.

Join 1,329 other followers