Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/3/84; site grkermi.UUCP
Path: utzoo!linus!philabs!cmcl2!harvard!talcott!panda!genrad!grkermi!andrew
From: andrew@grkermi.UUCP (Andrew W. Rogers)
Newsgroups: net.cse
Subject: Re: "Editing output, is it the only problem?"
Message-ID: <627@grkermi.UUCP>
Date: Mon, 23-Sep-85 14:04:35 EDT
Article-I.D.: grkermi.627
Posted: Mon Sep 23 14:04:35 1985
Date-Received: Wed, 25-Sep-85 12:32:41 EDT
References: <5560@fortune.UUCP>
Reply-To: andrew@grkermi.UUCP (Andrew W. Rogers)
Organization: GenRad, Inc., Concord, Mass.
Lines: 87

In article <5560@fortune.UUCP> dove@fortune.UUCP (Michael Dove) writes:
>Where I went to school, editing output was not as bad a problem as some
>others I have seen...

I graded intro FOOTRAN assignments in the early 70's.  Back in the Card
Age, editing output was obviously an impossibility... but one clever student
wrote a program to fake a compile/load/run job (even logging the spurious 
job on the operator's console)!  He scheduled the FOOTRAN compiler and loader
directly from his program (instead of via JCL), sent the listing and load map
to a scratch tape, wrote some dummy output to avert suspicion, faked the JCL
for a new job (both to the line printer and console), copied the tape back
to the printer (doctoring the date/time along the way), and appended the
"correct" results (part of his data).

>The big problem was more of code copying.  People would trace through
>the class directories for people who either accidentally or purposely
>left permissions to their directories and files so the world could
>read them.  So you have 20-30 people who would snag a copy of it, spend
>30 minutes doing global substitutions of variable names, etc, change
>the comments, and turn them in.  It is real hard for an instructor to
>notice this so most people got away with it...

I encountered the same thing back in the Card Age!  Occasionally some jerk
would be dumb enough to rip off someone else's deck and resubmit it under his
own name; more often, though, I saw the Card Age equivalent of what you
describe above: someone would steal/"borrow" someone else's deck (or listing)
and rip off the algorithm, change the variable names and line numbers 
(speaking of archaic concepts), repunch it, and submit it as his/her own.
The very earliest assignments could basically only be done one way with the
statements covered at that point, so this was hard to detect; as the
assignments became longer and more complex, it became more obvious.

There was a long series of articles (either in CACM or the SIGPLAN Notices)
about various automated mechanisms to detect programs that might possibly be
collusions or ripoffs; however, if an instructor can write such software,
there's probably a student who can write something to disguise a "borrowed"
program!  (Probably harder than writing the assignment in the first place,
but who can deny the hack value?)

>The only problem these people had to worry about was if the person they
>got this copy from had a good program originally.

I admit that two programs which generated the same erroneous output would
probably be scrutinized more closely than any two correct ones... but that
only means that the ripoff artist would have to test the stolen program
first, and try another if it was wrong!  (A clever instructor, of course,
could deliberately put a program with a *very* subtle bug in a publicly-
readable directory owned by a fictitious student, and then test all submitted
programs with data designed to trigger the bug!  Those that failed would
be subject to closer scrutiny, since not every program with the bug would
necessarily be a ripoff.)

>I have never known of anyone who has ever been caught, but there were oodles
>of people doing it.  It is also one of those things that is hard to
>stop.  The question arises, who has the original code?

On occasion, two suspiciously similar - sometimes identical - assignments
were handed in... but there was nothing I could do to distinguish the
original author from the plagiarist or to prove collusion.  (Exception:
when three members of the same frat turned in exactly the same assignment,
I split the credit between them.)  Usually I would write a polite note
on both assignments, saying "Person A: Person B has handed in an identical
assignment", and vice-versa, giving photocopies of the assignments to the
instructor, and leaving up to the plagiaree (?) to report the plagiarizer
to the discipline committee.


So far the discussion has centered on students editing output and stealing
programs from others *in the same class*.  What about recycling programs
from previous classes?  A lot of the assignments - particularly in the
intro level courses - didn't change for years at a time, and it wasn't
especially hard to find someone who still had listings or even (gag) decks.
While an instructor/TA/grader may be able to detect two identical programs
in the same batch, s/he certainly won't remember having seen a program the
previous semester!  (The obvious solution is to assign different programs
each time the course is offered, but some instructors are concerned that
the course might thus be easier one term than another.)


How long will it be before the term paper ghostwriting (excuse me, "academic
research") services turn into "custom software" houses?  When will some
enterprising soul publish the answers (including sources in listing and
floppy disk form) to all the questions in a widely-used intro CS text - as a
"study aid", of course, with some totally unconvincing disclaimer added? 


Andrew W. Rogers