Subject: Re: Code Cheats in College
From: "Stephen J. Turnbull" <stephen@xemacs.org>
Date: 15 May 2002 16:43:55 +0900

>>>>> "Forrest" == Forrest J Cavalier, <Forrest> writes:

    Forrest> Look at what the students do and spend their time on!
    Forrest> I'm sure that they feel that the task of these
    Forrest> programming assignments is primarily to produce working
    Forrest> code.  That is what you must do first.

So what if the students have that mistaken impression?  I'm sure
they've been told time and again that mastery, not working code, is
the goal.  Getting the code to compile and run without error is by no
means monkey work, but it's not "mastery" by my definition.  But it's
hard to measure how much mastery is present in broken code.  Sorry,
kids.

    Forrest> Mastering the "particular pieces of subject matter" comes
    Forrest> second, and only to the brightest students who have the
    Forrest> time left over.

Much too pessimistic, I think.  True mastery, yes, but I think most
teachers would tell you that students do, by and large, leave their
courses with some _command_ of the concepts.  They would tell you that
the teachers of the prereqs could do a better job, but that the
students arrive with a reasonable approximation to the prereqs.

    Forrest> The quoted Tartan story indicated the problem was that
    Forrest> they did not perform the assigned task ("produce original
    Forrest> code") not that they plagiarized.

Well, yes.  Again, it's the yardstick problem.  How do you propose to
measure the "mastery content" of copied code and design?

    Forrest> It would be interesting to see what the assigments
    Forrest> actually are.  I do not see how starting from scratch is
    Forrest> necessary for the goals of 15-211.

    Forrest>    (At http://www.csd.cs.cmu.edu/bscs/ugcourses.html)

    15-211 Fundamental Data Structures and Algorithms
    Fall and Spring: 12 units

    Fundamental programming concepts are presented together with
    supporting theoretical bases and practical applications. This
    course emphasizes the practical application of techniques for
    writing and analyzing programs:

    data abstraction,

If there's a single Class definition in the program, you're already
getting too much of a head start, no?  Or do you reduce marks based on
her faulty choice of badly abstracted code to modify?  ;-)

    program verification,

200 loc/week may be a lot to write, but if "verification" means
"formal", verification of 200 loc/week is _huge_, no?

    and performance analysis.

Ditto, maybe.  I think from a practical standpoint it would be very
hard to teach this course based on "real-world" software.

    These techniques are applied in the design and analysis of
    fundamental algorithms and data structures. The course is
    currently taught in Java.
    Prerequisites: 21-127 and either 15-111 or 15-200.

    Forrest> How often does any programmer's real-world task start
    Forrest> with no code in place?

You could say the same thing about writers, but they all started with
A, B, C.  Should we issue copycards to first-graders for their
handwriting exercises?  If not, when should we start permitting them
to use cut-and-paste?  15-211 might be a reasonable dividing line, but
I doubt it.

But this is beside the point in practice.  You're missing the very
important issue of the burden on the professor.  It is much easier to
grade exercises than it is to grade term papers, including doing some
verification of references, etc.  The kind of assignment you are
recommending would turn every assignment into a term paper from the
prof's point of view (just separating the original work from the new
work would be hard---a diff is not enough to determine how much of the
new data structure is "newly abstract", you need to see how it works),
thus drastically decreasing the number that could be assigned in
practice.

I'm not a CS professor.  But I think a CS prof would tell you that it
would be quite hard to do a decent job of teaching the course
described above by having the students produce minor improvements to
free software.


-- 
Institute of Policy and Planning Sciences     http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba                    Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
 My nostalgia for Icon makes me forget about any of the bad things.  I don't
have much nostalgia for Perl, so its faults I remember.  Scott Gilbert c.l.py