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:

There are other more negative and aversive methods. The fear of their application can also deter dishonesty.

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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