CS 3723 Programming Languages
Dishonesty Policy, Spring 2000
Dishonesty in computer science courses has been a problem
world-wide for decades, since computer science has such an
emphasis on producing machine-readable assignments.
The most common form of dishonesty
is for a student to produce program source code with help from
others. He or she can get help from someone not in the class, from
someone in the class, or two students in a course can
collaborate, producing essentially the same program.
A student can simply copy another student's program, often
with reformatting, recommenting, and with changes to identifier
names and other changes. If listings with output are
handed in, a student can edit the output so that it is correct.
There are also all the normal ways to improve exam scores,
but they are not specific to computer science.
No completely satisfactory ways of coping with this dishonesty
have ever been devised. Here are possible strategies:
As always, the best approaches are positive ones:
- Convince students that they shouldn't copy, that it isn't
in their own long-term interest.
- De-emphasize the importance of producing source listings
and in other ways create an environment where dishonesty
doesn't help.
- Emphasize individual work, hand-tailored to each student.
In the best case one would mentor and tutor students
individually.
- Allow and encourage various kinds of collaborative work
by groups of students.
There are other more negative and aversive methods. The fear
of their application can also deter dishonesty.
- Count programs for a smaller part of the grade.
- Have students submit their source in machine-readable
form. Then
- Compile and execute individual source programs.
(This checks for source programs that
don't produce the claimed output.)
- Test all pairs of submitted source programs for
similarities using plagiarism-detection
software.
- Archive source programs for at least several years
to allow checks for similarities or non-functional
programs.
- Punish offending students.
Unfortunately, dishonesty remains a problem here at UTSA.
The trick is to institute measures to limit dishonesty
without producing undesirable side effects.
For a more complete discussion of these issues, refer
to my report Plagiarism by
Student Programmers and to references cited there.
Measures to be adopted to limit academic dishonesty,
CS 3723, Spring 2000:
- In the header comments of each program source (after
comments identifying the student, the course, and the
assignment), each student must
include a "Sources and Collaboration" section. Here the
student must identify any sources for program code that
he or she did not write individually and personally.
The student must also identify any help or collaboration
that partly produced the program.
It is important to note that there is no penalty for
the use of outside sources or for collaboration, except
that if major portions of the program are not the student's
own work, he or she may not receive full credit.
If someone helps you debug your own code, there is no
need to even mention this. (You can get similar help from
the instructor.)
Sample section:
Name: Joe R. Utsastudent
Course: CS 3723, Programming Languages
Assignment: Project, Part II. Initial Parser
Sources and Collaboration:
All the code is my own work except for:
1. I found the function "computePrimes" in
the algorithms textbook.
2. Mr. Otherstudent allowed me to use his
routine for handling the priority queue,
since I couldn't get my code to work.
Overview: ...
Program listings or electronic submissions without the
above section will be returned with a request that you
add the section.
- As a course requirement at the end of the semester,
all students must concatenate
the source programs used for assignments and mail the
concatenated file to the instructor.
The source files should come in the order
of the assignments, and each assignment should have a
header as above. (Just one header per assignment.
A given assignment may consist of many files.)
If a student has not mailed this file, I will turn in
an "Incomplete" grade until I receive the file.
I may compare individuals' source files pair wise for
similarities using sophisticated plagiarism-detection
programs. (Such programs are cleverer than you might
expect and are hard to beat.) It is important for
students to realize that there will never be any
accusation leveled on the basis of some obscure software.
This detection software only calls attention to possible
plagiarism. The standard is that a reasonable computer
scientist can be convinced by simple visual inspection
that the plagiarism definitely occurred.
Students should not worry about coincidental similarities.
Many programs, including those for this course, are
described in a fairly specific manner, and it is expected
that independent efforts will often result in similar
code. In order to produce a complaint, the similarities
must be unequivocal.
I may also extract program source for compilation and
execution.
The above steps can be carried out at any time in the
future. Students should beware of submitting copied
programs for an archive of this sort because checks and
comparisons could still be carried out after the course
is complete and grades are handed in.
- The programming for this course consists of a single
interesting (at least to me) extended project.
The skills gained in
completing the project should be useful later in a
student's career, and they are directly related to
understanding the course material. I hope that the interest
and usefulness will limit plagiarism. Also a single copied
program does not solve the need to extend it with more
functionality at the next step of the project.
- For this course I scaled back the scope of the
programming project. I also added written assignments.
Finally, I adjusted the percentages of credit so that
the programming counts for less.
- In case you could not get part of the project to work,
I encourage you to hand in your best effort for partial credit.
Then for later parts you may use someone else's earlier program
for the previous parts, with no penalty (but the borrowed
code must be identified, as mentioned above).
Revision Date: 12/23/99