CIS 1100 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 rigor). Working through the assignments, encountering errors and bugs, and finding the solutions yourself are absolutely essential to learning these skills. To this end, CIS 1100 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, we will be providing dozens of hours of support per week. We urge students to take advantage of all of the tools 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 1100. 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.


Collaboration Policy

  • 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 1100 Professors and TAs. 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 web resources or ask questions online except for on the CIS 1100 Ed Discussion course.
  • You may not use AI assistants when completing course assignments. This includes ChatGPT, Claude.ai, Copilot, and all other similar tools.
  • Don’t be clever about this policy. Instead, if you’re unsure whether something is appropriate, come by the instructor’s office hours and ask.

Penalties for Violation of Collaboration Policy

The role of the CIS 1100 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 are the instructors interested in notions of punitive justice. To that end, CIS 1100 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.

As instructors, we make no guarantees about the timeline for discovering and notifying the student about violations. As a result, we may notify students of a first and a second violation at the same time. Additionally, we reserve the right to apply harsher penalties for first violations in egregious cases (direct letter-for-letter plagiarism, stealing another student’s laptop, etc.).


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 1100.
    • You may not look at code posted to online forums by people asking questions or providing answers (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 1100).
    • You may not let someone else (even someone who has never taken CIS 1100) 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 one of inappropriate access to someone else’s work.
  • You may not show your work to anyone except current CIS 1100 Professors and TAs. 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 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 online except for on the CIS 1100 Ed Discussion course.
    • The CIS 1100 Ed 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 1100: CIS 1100 is not an upper-level class, and it is not the real world. These restrictions help you learn.


Appropriate collaboration

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 1100 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 1100 Ed 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 Ed, 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 1100 Ed 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.