The following policy on academic honesty will be rigidly and rigorously enforced.
The University of Chicago is a community of scholars. Students must understand and internalize the ethics of their academic community. 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, or to gain the knowledge it is intended to impart, 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. To be clear, do not expect us necessarily to investigate who "gave" and who "received"; it is essentially irrelevant, as both are equally guilty. If you have any questions about what is or is not proper academic conduct, please ask the instructor, in advance. (This description of Academic Honesty is derived from those of Stuart Kurtz and John Reppy, and comes by way of past CS 154 instructors).
Projects are big and complex. Therefore it is permissible to discuss with other students about the project in general terms, how different routines/system calls work, high-level strategies for successful implementation, and to help others debug their code and find problems.
However, you should not share your code directly with other students (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 sophisticated tool that can detect code duplication in many forms. Don't even try to challenge this tool. It is devastatingly effective. Discovery of any inappropriate code sharing will lead to harsh penalties for all involved parties.
Because there may be solutions online, please exercise extreme caution if you choose to perform web searches for material in the projects, for which the web search is likely to be very specific to one of our assignments and not a general inquiry; you do not want to inadvertently expose yourself to a solution. If this happens, please contact the instructor. It is critical that you document any inadvertent exposure to solutions with the instructor, by email, to avoid later allegations of plagiarism.
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: