CIS 110 is a challenging course that requires a substantial amount of time for most students. Many of you are learning a new kind of abstraction (algorithmic thinking), a new way to express procedures (programming), and a new level of discipline in thought (precision and rigour). Working through the assignments, encountering errors and bugs, and finding the solutions yourself are absolutely essential to learning these skills. To this end, CIS 110 institutes and enforces a strict collaboration policy to ensure that all students are learning effectively. Suspected violations of this policy are systematically referred to the Office of Student Conduct, and generally incur both a disciplinary sanction and a grade deduction.
This semester presents many additional challenges for students, so the course staff is taking steps to design a remote learning environment that offers students enough support and structure without exceeding a workload that would be expected during a more typical semester. We urge students to take advantage of the support available (Office Hours, Review Sessions, or reaching out for additional support if needed) so that the incentive to violate collaboration policies remains as low as possible.
On the homework assignments, we use automated “cheat-checking” software to help detect plagiarism and inappropriate collaboration. This software is very, very effective. We are able to reliably detect all sorts of violations beyond just direct copying from another student or source. According to the Annual Report of the Penn Office of Student Conduct, there were 127 referrals for undergraduate academic misconduct in 2013–2014. 55 of these cases, or nearly 45%, were referred from CIS 110. By taking the collaboration policy as seriously as the course staff does, you will not only help reduce this number, but you will also help yourself and your fellow students learn more effectively.
- You may not look at, access, or acquire a copy of anyone else’s work. There are certain exceptions described in the “Appropriate Collaboration” section below.
- You may not show your work to anyone except current CIS 110 Professors and course staff. You may not post any portion of your assignment online. This applies even after the course ends. There are certain exceptions described in the “Appropriate Collaboration” section.
- You may not consult or ask questions in websites or online fora except the CIS 110 Piazza board.
- Don’t be clever about this policy. Instead, if you’re unsure whether something is appropriate, come by instructor office hours and ask.
Penalties for Violation of Collaboration Policy
The role of the CIS 110 course staff is to educate students about Computer Science. The following penalties are designed to disincentivize plagiarism and improper collaboration. The basic principle is that you will not receive credit for work that you did not individually generate.
The staff is not invested in or responsible for investigations of the cases beyond the details that we first detect. Neither is the instructor interested in notions of punitive justice. To that end, CIS 110 leans heavily on the Office of Student Conduct for contested or repeated cases. You can learn more about their processes, and their emphasis on restorative practices on their website.
At the first detected case, the student will receive a 50% grade deduction on the assignment in question. If the student contests the case, then the case is automatically referred to the Office of Student Conduct for investigation and determination.
For every subsequent violation, the student will receieve a grade of 0% on the assignment in question. The instructors will automatically refer the case to the Office of Student Conduct as well.
Collaboration Policy (Annotated)
This annotated version of the policy includes many examples and elaborations to help you understand how to interpret the rules. It covers many situations that have come up in past semesters, but it is not exhaustive.
- You may not look at, access, or acquire a copy of anyone else’s work. There are certain exceptions as provided in the “Appropriate Collaboration” section.
- You should think closely about the assignment, and your work should be completely the product of your own understanding.
- You may not look at another student’s code “for reference,” then putting it aside and writing your program, even if the other student is not currently or never was in CIS 110.
- You may not look at code posted to online forums by people asking questions or providing (more on this below).
- You may not look at another person’s solution to the problem in the assignment, even if it is not based on the actual assignment or is in a different programming language (e.g. you may not look at a C++ or OCaml implementation of an assignment to help you with your own Java version for CIS 110).
- You may not let someone else (even someone who has never taken CIS 110) explain a solution to you in so much detail that they are effectively dictating the code to you line by line, whether or not that person is looking at his or her code while doing so. If the similarity of your code to the person’s who helped you is much higher than the similarity between random pairs of submissions, we must treat the case as on of inappropriate access to someone else’s work.
- You may not show your work to anyone except current CIS 110 Professors and course staff. You may not post any portion of your assignment online. This applies even after the course ends. There are certain exceptions as provided in the “Appropriate Collaboration” section.
- You may not allow anyone to look at your work, either on your computer screen or on printouts.
- You may not publicly post your work online anywhere.
- You may not store your work in any public location (a private, password-protected Dropbox account is fine, a shared Dropbox folder or public GitHub repository is not).
- You may not explain how you solved a problem in so much detail that you are effectively dictating the code, whether or not you are looking at your own code at the time
- You may not allow anyone else to access your files. It is your responsibility to properly password-protect your own computer when it is unattended. If you are working on any other computer, delete your files computer when you are done, then empty the Trash / Recycle Bin.
- You may not consult or ask questions in websites or online fora except the CIS 110 Piazza board.
- The CIS 110 Piazza board is a safe space for you to discuss the assignment with the course staff.
- You may not search for solutions to a programming issue (e.g. an implementation solution, a bug, or an error message) online.
- You may not post questions on websites such as Stack Overflow or Yahoo Answers. Answers you receive will likely be snarky, irrelevant to the assignment, or detrimental to the learning goals of the assignment.
- As always, the Penn Code of Academic Integrity applies.
These restrictions may seem artificial. After all, in the real world, computer scientists and programmers collaborate freely all the time, and so do CIS majors. In many upper-level CIS classes as well as in industry, looking up answers online, debugging code together, and sharing code are all permitted and encouraged. However, these behaviors are forbidden in CIS 110: CIS 110 is not an upper-level class, and it is not the real world. These restrictions help you learn.
The collaboration policy sounds scary because we take it very seriously. But it is not meant to prohibit all discussion and collaboration. It is intended to limit only the forms of collaboration that undermine the learning goals of the course. Here are some ways that we encourage you to work together and to get help:
- Come to office hours early and often! CIS 110 is designed for you to learn as much as possible with the benefit of help. We want you to get stuck, ask questions, and learn how to experiment and find solutions. We also want you to learn more by taking advantage of office hours than you would be able to learn on your own.
- Read through each assignment with one or two friends, and work out together what the different steps are; what you need to make sure you understand; and where to find the information you need in the assignment writeup, course web site, and textbook. Document in your readme who you discussed with, and what you concluded.
- Work through course notes and example code together. Work together on example programs that are not part of the assignment to understand different concepts. For example, when you are preparing for the NBody assignment, we encourage you to work through the Bouncing Ball examples together, and modify it together to help understand animation and nested loop structures.
- Discuss together how to test your code, and what different kinds of input might cause problems. We don’t always tell you everything that could go wrong in your program; figuring that out is part of your job, and doing this together will help you understand the assignment better prepare to start programming. Log your discussions before you forget the details.
- Search the CIS 110 Piazza board for answers. When you have a question, it is likely someone else has asked it already. Only post your question if you can’t find a discussion thread that helps you. Answer other students’ questions on Piazza, for instance by suggesting tests the other student can do to help detect and debug the issue in their code. You do not need to log the help you receive and provide on the CIS 110 Piazza in your readme.
- Compare output from your program and a friend’s. As long as you do not look at each other’s code, we strongly encourage comparing output as a way to test your program. If you do this, you must log exactly the help that you provide in the readme.