🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sw.components
Article #300

Re: Maintenance

#300
From: mjl
Date: Wed, 15 Nov 1989 14:41
75 lines
4857 bytes
perry@apollo.HP.COM (Jim Perry) writes:
>
>Students can't learn to make a good product if they don't know what one is.

Excellent point!  And, of course, most introductory textbooks do not
give particularly good examples.  Not because the authors are necessarily
bad designers, but because the constraints of teaching a 1st year student
Pascal/Modula/whatever mean that the programs emphasize micro-concepts
(this is an IF, this is a WHILE, etc.).  The commenting strategies also
reflect these realities -- anyone who really wrote comments the way
textbooks show them should be shot.  for an excellent discussion of
these issues, see Henry Ledgards "Professional Software" books (Vol. I
on Software Engineering and Vol. 2 on Programming Practice.  Vol. 2
has a chapter titled "Comments: The Reader's Bridge," and while I disagree
with some of Ledgard's specific examples, I do like his overall philosophy
of appropriate internal documentation.

So perhaps in 2nd level courses the professors should make available
programs they consider well-written.  In fact, I'm teaching a sophomore
course on design and implementation, and students have asked to see *my*
solution to some of the assignments I've given (and yes, I *do* solve
most of the problems, something that I find all too rare).  The problem
for me is that it is difficult to come up with assignments
at this level, and I know that my solution would immediately find its
way into every fraternity's archives (1/2 :-)), rendering it useless
in the future.

>One possibility that seems somewhat promising: in a class which has a longterm
>ongoing project (a compiler, perhaps), have students swap off source code at
>each iteration, so each increment of change is to someone else's code.

I've tried this one, and I've been disappointed.  Roughly speaking there
are two types of students: those who have good designs (class G) and
those who have bad designs (class B).  Let's look at the possibilities
at iteration 2:

For students in class G, no further motivation to do a good job is necessary.
No matter what they get, their predisposition to doing a good job will
be reinforced.  However, if given a bad product from stage one, they
feel they are penalized (and given the short time spans for projects in
a quarter or semester, they are right).  The general reaction is "I did
a good job, why do I have to work with this crap!"  Those who can recover
often end up doing two iterations: a rewrite of iteration 1 and whatever
is required for iteration 2.

Now consider students in class B.  If given a good design from iteration
one, they have a better shot at completing iteration 2, but the question
remains whether they learned anything about their own substandard performance.
In effect, this subidizes their poor work (we call it "hiding in the high
grass" around here).  On the other hand, if they are given a poor design,
their demonstrably modest skills means they have a small chance of completing
interation 2 on time.

If I truly believed that all students in class B were inherently incapable
of becoming productive, competent professionals, then the scenario above
wouldn't bother me -- the good would pass, and the poor would fail.  And
no doubt many of those in class B shouldn't enter our profession, either
because they lack the discipline or particular talents needed to succeed.
But in my experience, there is a substantial subset of class B who just
haven't caught on yet, and I don't want to flush them out.

One approach I haven't tried is a "bidding" approach, where everyone's
product from stage one is made available to the class. A small portion
of the grade for iteration 2 would be tied to the number of people
in the class who chose *your* solution as the basis for the next step.
In this way, everyone sees a variety of designs, they get to choose
the one they'll use next time, and the "recoverable" B students would
choose someone else's G work simply to save their own necks.

Has anyone tried something like this?

Mike Lutz
Mike Lutz	Rochester Institute of Technology, Rochester NY
UUCP:		{rutgers,cornell}!rochester!rit!mjl
INTERNET:	mjlics@ultb.isc.rit.edu
Technical Details
Message-ID: <1403@cs.rit.edu>
Path: arc1-ca.pugleaf.net!utzoo!attcan!sobmips!uunet!samsung!gem.mps.ohio-state.edu!tut.cis.ohio-state.edu!pt.cs.cmu.edu!rochester!rit!mjl
References: <1337@accuvax.nwu.edu> <11064@cbnews.ATT.COM> <78584@linus.UUCP> <376@cherry5.UUCP> <46d165bf.20b6d@apollo.HP.COM>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!attcan!sobmips!uunet!samsung!gem.mps.ohio-state.edu!tut.cis.ohio-state.edu!pt.cs.cmu.edu!rochester!rit!mjl
From: mjl@cs.rit.edu
Newsgroups: comp.sw.components,comp.software-eng
Subject: Re: Maintenance
Keywords: knowledge, expectations, fairness
Message-ID: <1403@cs.rit.edu>
Date: 15 Nov 89 14:41:38 GMT
References: <1337@accuvax.nwu.edu> <11064@cbnews.ATT.COM> <78584@linus.UUCP> <376@cherry5.UUCP> <46d165bf.20b6d@apollo.HP.COM>
Sender: news@cs.rit.edu
Reply-To: mjl@prague.UUCP (Michael Lutz)
Followup-To: comp.sw.components
Organization: Rochester Institute of Technology, Rochester, NY
Lines: 75