Model Collaboration Policy

From Coder Merlin
Within these castle walls be forged Mavens of Computer Science ...
— Merlin, The Coder


A good professional uses all the available help, so it is unrealistic for us to ask you to do everything in this course by yourself. We encourage you to use all the sources at your disposal to solve homework assigments--lecture notes, texts, the web, and other people including faculty, TA's, and fellow students. In this course, certain forms of collaboration are acceptable and beneficial to your learning process. Direct engagement with the material, in discussion or in doing programming projects is the best path to understanding. Therefore, activities such as discussing the projects to understand them better, helping locate conceptual bugs, and discussing lecture and textbook content are acceptable. But what you hand in must be your own work.

We also want you to acknowledge explicitly whatever help you receive--another professional practice. To do this, start each piece of work you turn in with a section labeled Acknowledgements that lists all the written and human resources you consulted in doing the work. It should also list any other students in the course that you helped. You should be clear about the nature of the assistance. For written material, a url or citation is appropriate. For personal assistance, here are some of the things that are appropriate:

  • Clarifying ambiguities or vague points in class handouts, textbooks, or lectures
  • Discussing or explaining the general class material
  • Providing assistance with language syntax, in using the system facilities, or with editing and debugging tools
  • Discussing the code that we give out on the assignment
  • Discussing the assignments to better understand them
  • Getting help from anyone concerning programming issues which are clearly more general than the specific project (e.g., what does a particular error message mean?)
  • Suggesting solution strategies

In general, oral collaboration is OK.

Here are some things that are inappropriate:

  • Copying files or parts of files (such as source code, written text, or unit tests) from another person or source
  • Copying (or retyping) files or parts of files with minor modifications such as style changes or minor logic modifications
  • Allowing someone else to copy your code or written assignment, either in draft or final form
  • Getting help that you do not fully understand, and from someone whom you do not acknowledge on your solution
  • Writing, using, or submitting a program that attempts to alter or erase grading information or otherwise compromise security
  • Copying someone else's files containing draft solutions, even if the file permissions are incorrectly set to allow it
  • Lying to course staff
  • Reading the current solution (handed out) if you will be handing in the current assignment late
  • Copying prose or programs directly
  • Giving copies of work to others
  • Coaching others step-by-step

If you do any of these, your should also acknowledge it in what you turn in; but expect to have a conversation with an instructor about it and, at least, suffer some penalty in the grade. If we discover you have done this and not acknowledeged it, the penalty will be much more severe. In other words, dishonesty is much worse than stupidity.

Here are some gray areas:

  • Reading someone's code for clarity or bugs, after you have completed your own
  • Helping with debugging
  • Looking at someone's prose or program but thinking about them and writing your own
  • Following someone's advice or instructions without understanding them
  • Many others

These, too, should be acknowledged. If you have any questions or concerns, or do not wish to abide by any of these policies, then please contact one of the course instructors to discuss the matter. When in doubt, ask an instructor.

You might find it helpful to keep this analogy in mind: Imagine that you are taking an English course on short stories. Imagine further that you have been given the assignment to write a short story. It is acceptable collaboration to discuss your story ideas with others. You may try out your ideas by telling your stories to others, discussing plot development, character development, and so on. You can even read a classmate's draft (if he/she asks you to do so) and provide a critique. But when it comes down to writing your story, you must write your own words and your own story. You might be able to read Edgar Allen Poe and even understand thoroughly why his stories are great; but this doesn't mean that you are able to write like Edgar Allen Poe. Copying his words accomplishes nothing.

Similarly, for your homework in this course, it accomplishes nothing if you use someone else's code. You must write your own original code! In our experience, looking at a classmate's code often leads to de facto copying of code segments and impairs your ability to write your own original code. We do acknowledge that students can provide specific, valuable help to each other during the course without copying code.

Note that we reserve the right to utilize advanced data-mining technology to detect unusual similarities between programs, from this semester and previous semesters. Developed and used by many of the top computer science programs in the world, experimentation has indicated that this technology is virtually impossible to defeat except with a great deal of effort. The course staff will inspect very carefully all similarities that are uncovered, and in some cases students will be asked to explain how such similarities came to be.

It is, of course, difficult at times to know if what you are doing will be considered cheating. If you are unsure whether an action you are contemplating would be considered cheating, then contact a member of the course staff first. When in doubt, ask an instructor.


To be fair to all students we must enforce a strict policy with respect to cheating. Programs that are identical or exhibit suspicious similarities will be flagged, and students will be asked to explain how such similarities came about and how their programs work. The penalty for cheating will depend on the severity of the offense and the student's past record in this regard.

Our reaction to your cheating will also vary according to the way you handle the situation.

  • Unsolicited Confession. If you seek us out and admit that you have cheated (or think that you may have inadvertently crossed the line but are unsure), we will be lenient and understanding.
  • Solicited Confession. If you have cheated and we come to you and ask if you have, and you then freely admit it, we will take that into consideration.
  • If you do not admit that you have cheated and have done so, the penalty will be severe.


To help prevent cheating, you must protect your own directory in which you develop your projects. For example, to protect a directory named "HelloWorld":

chmod -R og-rwx HelloWorld

Pedagogical Rationale and Advice[edit]

Collaboration not only helps you get the job done, it teaches you how to explain inchoate ideas to others. This is why we permit discussion of the problems between students. But it is also important that your collaborations be balanced and fair with respect to other students. If you misuse the opportunity for collaboration, you will do poorly in the course.

We do note that many of the course materials will be the similar to those from previous years. This is not because we are lazy. It takes years to develop good problems. In many cases the only reason to change them is to make cheating more difficult. It is far better for you to work on the most excellent problems that we could find.

Accepting the Policy[edit]

We understand that most of you would never consider cheating in any form. There is, however, a small minority of students for whom this may not be the case.

If you are feeling desperate enough to consider cheating, please talk to us about alternative strategies for addressing the challenges that are bringing you to this point. There are many ways to resolve issues without taking on personal and ethical risks with potential lifetime consequences!

It is important for you to understand the rules, the penalties, and the rationale for them. In the past, when students are caught cheating they often insisted that they did not understand the rules and penalties. For this reason you will be asked to read and agree to this policy before you start working on any of the projects.


This model policy is excerpted and adapted, with permission, from Collaboration Policy.