Project Collaboration Policy

Here is more concrete information on the collaboration policy, with specific examples. Please don't hesitate to ask if you find anything unclear.

"Your code is like your boyfriend or girlfriend. It's okay to talk about it on an abstract, high level. But you don't want to go into the specific details, and you certainly don't want to share."
- Pascal Van Hentenryck, Professor of CS, Brown University, 1997

Much of your course grade (and effectively all of your learning) comes from doing the assignments. I can talk about code for hours in lecture, but you will only truly master the material after writing code. The programming assignments can be challenging, illuminating, time-consuming, rewarding, and frustrating (all at the the same time!) but hopefully you will end up proud of your accomplishments and the new skills that you will gain.

It is important that you (or your team) do your own independent work on the assignments. However, that doesn't mean that you can't ask questions or get help when you get stuck. There are ways to get help that are acceptable and others that are not, and this document hopes to illuminate the difference.

By enrolling in this course, each student assumes the responsibilities of an active participant in UMBC's scholarly community in which everyone's academic work and behavior are held to the highest standards of honesty. Cheating, fabrication, plagiarism, and helping others to commit these acts are all forms of academic dishonesty, and they are wrong. Academic misconduct could result in disciplinary action that may include, but is not limited to, suspension or dismissal. To read the full Student Academic Conduct Policy, consult the UMBC Student Handbook, the Faculty Handbook, or the UMBC Policies section of the UMBC Directory. The UMBC Student Academic Conduct Policy is also online.

As applied to our assignments, your team's obligations are do your own thinking, your own design, your own coding, and your own debugging. You should never let yourself be led by another student not on your team, or receive an amount of help which makes an assignment significantly easier. Conversely, you should never assist another student not on your team in a matter that would overly lead them or make their job much easier.

On our part, we will treat all of you with trust and respect. When alerted to any possible infraction, we will protect the honorable students' interests by investigating and prosecuting dishonorable behavior.

Assistance that is allowed and requires no citation

These things are encouraged and allowed at all times for everyone:

Collaboration that is allowed if documented

Whereas the discussions listed above are allowable, some discussions require citation. The difference between the two comes in what is being discussed and in how much detail. General topics (course materials, tools, language) may be discussed in any depth without citation. Discussing the particulars of the assignment you are working on requires citation. The particulars include such as things as the program's design, data structures, choice of algorithms, implementation strategies, testing, and debugging. Your submission must include the name of any student(s) with whom you had detailed exchanges and properly credit them. Some examples:

As a general rule, any detailed assistance that contributed to the design, implementation, or debugging of your submission should be cited by submitting a README.txt file.

Collaboration that is NOT allowed

Whereas discussion as described above is acceptable if cited, these discussions should never become so detailed that they involve jointly writing with another team or sharing passages of code. Your team's code must represent your team's original, independent work and it should not be developed in conjunction with or copied from another team. Here are specific examples of collaboration that is never allowed:

Above all you should use your common sense. If you suspect that what you are about to do is a violation, play it safe and ask a staff member first. When we confront a student with a case of suspected violation, an answer of "I thought it was okay; I didn't learn the course policies" is not justification.

The Honor Code is taken very seriously in this course and we have no tolerance for behavior that falls outside our boundaries for acceptable conduct. Please do your part in maintaining a community where academic work is done with a high standard of integrity!

Some parts of this document based on a similar collaboration policy for Stanford's CS courses.