[plt-scheme] Perplexed Programmers
On Aug 30, 2007, at 12:23 PM, Marco Morazan wrote:
> On 8/29/07, Brent Fulgham <bfulg at pacbell.net> wrote:
>
>> 2. Engineering firms have a strong system of apprenticeship.
>> 3. Engineering firms have a strong culture of review, in which
>> senior
>> engineers review the designs largely created by teams of lower-level
>> engineers.
>
> I have tried my hand at this in the setting of undergraduate
> education. I have my senior undergraduate RAs critique the work of
> less senior students. Once they are satisfied the work makes it to my
> desk where I get a chance to critique it. Students writing programs
> become extremely frustrated, but those that buy into the model benefit
> greatly from it.
After some 10 lectures or so, the "how to design systems" course is
almost entirely based on code reviews plus some ad hoc lectures in
the middle of code walks. We (my tas and i) act as masters; the
students are apprentices.
I started this in 1998 at Rice during PL and refined this tradition
over the past 10 years for HtDS.
For the past two iterations, I have conducted the code walks in the
spirit of IBM's Fagan articles:
-- all programming happens in pairs, not teams
-- we have some 30 pairs
-- the projects range from 5Kloc in a decent scripting languages to
12Kloc in a mainstream language (aka Java)
-- maintenance of your own code and other people's code over the
semester is required
-- pairs are switched
a pair presents its design, code, and tests
3 students are the panel
The panel inspects the code of the pair. Nobody else is allowed to
intervene. The class can ask if the panel fails. We step in if both
fail to see problems.
All pairs have a 45 min review at the end of the semester with course
staff.
I believe that the course is highly effective in improving their
programming skills.
-- Matthias