Archive for October 6, 2009

There will always be friction

I (finally) finished grading midterms and first round of grad student essays from my joint undergrad/grad “Educational Technology” class last night. The first phase of the class was an exploration of the proposition: “Computing creates an opportunity to program, and learning to program creates an opportunity to learn other things better.”

Many of my grad students referenced a wonderful essay by Michael Mateas, analyzing the Alan Perlis 1961 talk where he called for everyone at the university to learn to program: Procedural Literacy: Educating the New Media Practitioner.  An often quoted section from Michael’s essay focused on an interaction between Alan Perlis and Peter Elias, where Elias saw programming as a mere technician’s job:

“I have a feeling that if over the next ten years we train a third of our undergraduates at M.I.T. in programming, this will generate enough worthwhile languages for us to be able to stop, and that succeeding undergraduates will face the console with such a natural keyboard and such a natural language that there will be very little left, if anything, to the teaching of programming…”

Michael disagrees with Elias’ view:

The problem with this vision is that programming is really about describing processes, describing complex flows of cause and effect, and given that it takes work to describe processes, programming will always involve work, never achieving this frictionless ideal. Any tools that reduce the friction for a certain class of programs, will dramatically increase the friction for other classes of programs.

Can the programming language simply “disappear” from the task of programming?  I think Elias’ view represents that of most computer scientists, that the language is a mere detail in education or in actual programming. It’s something to get rid of or ignore. Or is Michael right, and there will always be some “friction” involved?  If there is friction, how do we teach it?  Michael wants us to teach the friction, wants us to teach the “worldview” that each language builds upon.  His view is like Ian Bogost’s “Platform Studies” which suggests that understanding this “friction” is important to understanding how the technology has developed and impacts us.

Michael goes on to describe what a curriculum focused on computer-as-medium might look like:

It is important not to view computation for new media students as a dumbed-down version of the traditional computer science courses. Teaching programming for artists and humanists shouldn’t merely be simplified computer science with lots of visually engaging examples, but rather an alternative CS curriculum.

I think Michael is right. It’s probably not surprising that Michael was on the committee that created our Computational Medium degree here at Georgia Tech.  What I worry about in Michael’s comment is the implication for the Computer Science curriculum program.  What does that say about computer science if our goal is to ignore the “friction,” when that “friction” is actually important, interesting, and is part of what is most challenging for our students to learn?  What does it say about computer science if wanting to teach programming for creative expression demands the creation of another curriculum?

October 6, 2009 at 12:12 pm 13 comments

Computing Surge in Georgia from Inside Higher Ed

Inside Higher Ed just did a really nice piece on Georgia Computes: Computing Surge in Georgia.  Do go on to read the Comments which reflects the need for more public policy work to build on the efforts to build up the classrooms.  Great teachers and great materials don’t go far if the policymakers don’t value computer science and create the incentives to get students into the classes.

October 6, 2009 at 10:45 am Leave a comment


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

Join 9,052 other followers

Feeds

Recent Posts

Blog Stats

  • 2,031,010 hits
October 2009
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031  

CS Teaching Tips