[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [OFFTOPIC, but possibly amusing] [was: peasant revoltagainst Dr Scheme!]




Mark asks: 

  Could you expand on this, Matthias?  What's wrong with having 
  students study and build GUIs in a first course?

Building good GUIs is an extremely difficult task. See 

    Why are Human-Computer Interfaces Difficult to Design and Implement? 
    http://reports-archive.adm.cs.cmu.edu/anon/1993/CMU-CS-93-183.ps

for a thorough explanation. So what can you do? Teach so-so GUI design. 
What happens then? In an hour when students could easily solve five
real problems, they spend an inordinate amount of time fiddeling with a GUI
editor or something like that to make it look pretty. Motivational?
Perhaps. Contents-free? Definitely. Instructive? Unless you believe that
memoizing Java's SWING interfaces or MrEd's GUI tool box functions is a
good use of time, no way. 

So what should we do instead? Teach them good program design habits based
on the idea that their programs/functions/closures/objects end up in GUI 
oriented programs. Supply the GUI component of the system so that they MUST
program to an interface from day ONE. Then, after a few weeks, let them
build their own GUI with some help, using a simplified GUI context. 

Use the second course to have them learn GUI stuff on their own. 

This is especially true if the first course is the ONLY course they
evertake. Do you think they will fondly remember that (send frame ...)
takes N arguments when they are a lawyer five years later? But do you think
that 

 1. learn to understand your data. 
 2. synthesize in concise statements
 3. illustrate with examples
 4. form an outline 
 5. fill the gaps
 6. check your results against your examples

will help them think at that point? I bet so. Teaching this would put our
discipline into the core of a solid education, and that should be our first
goal. We have so much to contribute to the Real Real World, why don't we
try?

-- Matthias