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

Re: examination of C hackers (was Conway's Game of Life (cellular automata))



> From: Matthias Felleisen <matthias@ccs.neu.edu>
> Cc: richter@math.northwestern.edu, anton@appsolutions.com,
> 	plt-scheme@fast.cs.utah.edu
> Reply-To: matthias@ccs.neu.edu
> Date: Wed, 26 Dec 2001 18:38:32 -0500 (EST)
> 
> 
> Michael, I was dead serious. I will use type annotations to mark those
> places where I am not in this message. 
> 
> Like you, I had many students at Rice who claimed that they knew how to
>  program, that they had been taught programming in the womb (okay that's an
>  exaggeration but their mothers would pad their bellies and say "C <their
>  name here> C, this is how things work" and boy it was over then :), and
>  that they were angry that they had to take my course.
> 
> Invariably, they either turned around within a week or by the 4th week the
>  assignment to write an interpreter exposed the limitations of their
>  approach and learning. Some admitted it openly, and became willing
>  learners; others admitted it grudgingly and became unwilling learners (to
>  pass the course). But all of them could demonstrate that they can follow a
>  design recipe and thus program to an interface. 
> 
> On exams, I hardly ever ask for just complete programs. I almost always ask
>  for specific steps in the design recipe, giving them enough information
>  about the results of the previous steps. When it comes to writing
>  templates (or deriving a higher-order function from them), they can't do
>  it. When they complain, I show them that this is the template-and-hook
>  pattern or the visitor pattern from OO design patterns and tell them to
>  study harder. (At the PL group at National Instrument, programmers
>  actually write templates down as comments -- and those who take over the
>  code must copy this template.) 
> 
> Try it. -- Matthias
> 
> 

Sounds good.  I will definitely look into it.

Just to be clear, though, we didn't just ask for the program.  We led them
through a series of steps e.g. build a message-passing implementation of a
cell that must respond to these messages, link the cells together,
etc. etc.  It's probably not as detailed as your design recipes but it
provided a lot of guidance.  What amazed me was when some of the hard core
I've-been-programming-since-20-years-before-I-was-born types just blanked
out and refused to do what we said, but then did the problem correctly in a
completely different style!  Sigh.

Mike