[plt-scheme] Computers considered harmful

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Wed May 6 17:34:51 EDT 2009

Your argument has been made before by Dijkstra. Of course, he wrote  
some 20 years ago and picked a different analogy, not robots but  
something else. Following Dijkstra lots of people have made similar  
arguments, time and again. The latest instantiation is to say we must  
teach 'computational thinking' and must stay away from programming as  
long as possible. Or at least for a semester. So use the computer and  
canned apps (say spreadsheets and possibly story boards) but don't  
make them program.

All of these proposals are water under the bridge. Our students wish  
to use computers. If we don't use computers and show them how to  
write tool 3D simulations that also plug into their emotional brains  
and issue smells at the same time, they'll go down the hallway to the  
EE guys who have no qualms teaching ASM, eh, C++ again.

Our only choice is to combine the world of "modeling" with  
programming. That's what the Universe and HtDP are about.

-- Matthias

On May 6, 2009, at 3:23 PM, John Clements wrote:

> Let me know if you've heard this one before.  Seriously, I'd like  
> to know if other people have expressed these thoughts more cogently  
> than I have (not counting SK/MF reading-riting-rithmetic- 
> rogramming, which (I claim) has partial but not complete overlap).
> Ignore if you like, thanks in advance,
> John Clements
> Computers considered harmful (in first-year courses)
> The argument here is surprisingly similar to Dijkstra's. In  
> particular, the
> problem with GOTO is that it confounds the use of the models  
> (mathematics) that
> we already understand.
> Likewise, the problem with computers is that they confound the use  
> of the
> models (mathematics, computation) that we already have.
> The clearest illustration I have of this problem is this: imagine  
> we start with
> robotic environments. A robot (real or virtual) has a number of state
> variables.  In most such environments, students attach behaviors to  
> these
> robots. There is often a hidden event-handler or loop that makes it  
> possible to
> specify these behaviors in a fairly functional way: that is, there  
> *is* state
> in these models, but it corresponds to physically observable  
> properties of the
> robot.
> Now, let's take this knowledge / understanding and extend it to an  
> imperative
> language. The natural conclusion is that the computer is equivalent  
> to the
> robot; it has a WHOLE LOT of state variables--essentially, the  
> computer's
> memory--and our job is to attach behaviors that manipulate this state.
> The problem here is that the task of programming becomes one of  
> "how do I use
> these tools to get this job done", rather than "how can I express  
> the solution
> to this problem?"  For this reason, I would argue that computers  
> themselves are
> currently far too central in the study of computer science.
> Okay, we knew all this already.  So what's the new part?  In my  
> mind (and this
> understanding may be new only to me) I think it has to do with the  
> nature of
> the student's interaction with the computer: is it a tool with a  
> bunch of knobs
> (external) to be manipulated to find the solution, or is it a means of
> translating our programs--concieved independently!--into meanings?
> _________________________________________________
>   For list-related administrative tasks:
>   http://list.cs.brown.edu/mailman/listinfo/plt-scheme

Posted on the users mailing list.