Academic Honesty Policy
The University of Chicago is a community of scholars. Students must understand and internalize the ethics of their academic community. A good place to start is the Cadet Honor Code of the US Military Academy: "A Cadet will not lie, cheat, or steal, or tolerate those who do." The kind of property that matters most to academics is ideas, and to pass someone else's ideas off as your own is to lie, cheat, and steal. The University has a two-paragraph policy on Academic Honesty and Plagiarism, which you should read and understand. Do not expect to pass this class if you cannot comply with the Academic Honesty and Plagiarism policy.
Student interactions are an important and useful means to master course material. We recommend that you discuss the material in this class with other students, and that includes the homework and programming assignments. So what is the boundary between acceptable collaboration and academic misconduct? First, while it is acceptable to discuss homework, it is not acceptable to turn in someone else's work as your own. When the time comes to write down your answer, you should write it down yourself from your own understanding. Moreover, you should cite any material discussions, or written sources, e.g., "Note: I discussed this exercise with Jane Smith".
You may feel there is a slippery slope from sanctioned discussions to cheating, but a basic principle holds: present only your ideas as yours and attribute all others. The University's policy says less than it should regarding the culpability of those who know of misconduct by others, but do not report it. If one student "helps" another by giving them a copy of their assignment, only to have that other student copy it and turn it in, both students are culpable. If you have any questions about what is or is not proper academic conduct, please ask an instructor. (This description of Academic Honesty is derived from those of Stuart Kurtz and John Reppy).
More notes:
Projects are big and complex. Therefore it is permissible to discuss with other project groups about the project in general terms, how different routines/system calls work, high-level strategies for successful implementation, and help others debug their code and find problems.
However, you should not share your code directly or indirectly with other project groups (e.g., by showing your code or scratch of your pseudo-code). Do not attempt to find solutions online or from previous years. We maintain a repository of old codes, and we will run a very smart tool that can detect code duplication in many forms. Don't even try to challenge this tool. Discovery of any inappropriate code sharing will lead to harsh penalties for all involved parties.
If you have any further questions on the gray area between what is OK and what is NOT OK, please feel free to ask.
Take precautions so as to prevent someone from copying your code without your knowledge:
Make sure not to leave print outs on the printer.
Make sure your project directory is read-protected from public users (use ls -la and chmod to view and modify permissions). If you mount your CS account to your personal computer (e.g., mounting via SMB from a Mac Laptop), the permission flags shown in your personal computer might not represent the actual permissions. Please use the department-supported machines to check the permissions accurately.
Make sure your svn repository is read-protected (can be accessed only by using your groupname and password).
If you are in CSIL lab, make sure you run a screen saver or minimize your coding window when you leave the room for a while (there were cases where students take a quick snapshot of someone else' screen!)
To verify that the permissions are set correctly, you could always ask an external person (someone who is not your group partner) to access your project directory or svn repository.