[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