Table of Contents


In order for you to learn the material, we expect you to work in groups of one to two (as specified on an individual basis for each assignment) and complete the assignments by your own efforts. We give you grades as a recognition you have completed the assignment in the way we asked.

It's fine to get certain types of advice from other people, but you should develop your own programs. We do not want you to get "help" by seeing or hearing another student's solution, and we do not want you to do the assignment in a large team and then receive from you several copies of the resulting program. Once you have seen someone's solution it is nearly impossible to come up with your own, unique version; and in most programming situations, many different solutions are possible.

So that students receive the maximum benefit of working on the assignments themselves, we also prohibit providing unauthorized aid to other students. While it may seem that showing someone your program(s) is helping them, we view this as actually harmful to them, and providing unauthorized assistance is a violation of Cornell's Code of Academic Integrity (see I.B.2 of the Code).

Given the above, here are the...

Assignment collaboration and acknowledgment rules

Below, "you" means you and, if there is one, your one CMS-registered group partner.

Until all students' submissions' grades for the assignment have been posted (in case there are people with extensions and makeups) ...

(1) You must never look at, access or possess any portion of another group's program(s) in any form. (This includes lines of code written on a whiteboard and lines of code described verbally.)

(2) You must never show or share any portion of your program(s) in any form to anyone except a member of the course staff. As a consequence, do not post any part of your programs to Ed Discussions.

(3) You must not ask for or use solutions from outside sources; for example, services like StackOverflow or code autogenerators are not allowed.

(4) You should specifically acknowledge by name all help you received, whether or not it was "legal" according to rules (1)-(3) above. This is also known as "citing your sources". Exception : you do not need to acknowledge the course staff (although we appreciate it if you do!).
Example: in an assignment file, the header could read

      # AWB93 and LJL2
      # Sources/people consulted: discussed strategy for process_strings() with Claire Cardie and Hakim Weatherspoon
      # Feb 12, 2021

Penalties: at minimum, claiming another's work as your own results in a lower score than turning nothing in

Minimum penalties upon a guilty finding, following the Academic Integrity hearing procedures:

  • If we find an academic integrity violation in which you have taken credit for work that is not yours, at a minimum we assign a negative score for the relevant parts of the affected work: it is thus better to not complete a piece of an assignment of work (meaning a 0 on that part) than to submit it under fraudulent circumstances (meaning a negative score). When in doubt, please ask beforehand!
  • If we find an academic integrity violation in which a student has given unauthorized help, at a minimum we send an official notification to the students college. Please do not put your friends in this position by asking them for unauthorized help.

The more general principles: Plagiarism as fraud

One of the key things to understand about programming, and computer science in general, is that it is a writing-heavy discipline. When you create a computer program, you are writing a document, just like you write documents in an English class (or any class that involves essays). Therefore, many of the same rules that apply to writing essays also apply to computer programs, particularly regarding plagiarism.

Plagiarism is essentially a form of fraud. Every time you hand in a program in this course, you are representing it as the work of the stated authors (i.e., the members of the CMS group who submitted it, which should be the same as the people listed as the authors in the header of the submitted code) subject to any exceptions that are clearly stated in the submission itself. To avoid committing plagiarism, simply be sure always to accurately credit your sources . To do otherwise is to commit fraud by claiming credit for the ideas and efforts of others.

Integrity is about being honest about the sources of the work you are handing in. Grades on course assignments, on the other hand, are about you showing us what you have learned.

If you turn in someone else's work for course credit, and forthrightly acknowledge you are doing so, you are not acting dishonestly and are not violating academic integrity, but that also does not show us you have learned anything. Thus, you may not receive grading credit, but you would not undergo academic integrity hearings.

If, on the other hand, you violate academic integrity by claiming someone else's work as yours or by giving unauthorized help, then the academic integrity hearing process will be triggered, which can incur both grade penalties and storage of records by your College.


  • The "group divorce" : If you and your partner stop collaborating and submit as individuals, you need to mention this in the comments at the top of your file . Example:
    "I was originally working with Mary. We worked together on the testing code. However, we stopped working together after the testing code, because I wanted to work with Joe instead. Joe and I worked on the widget class by ourselves."
  • External sources , such as like Stack Overflow , code autogenerators, or friends who have taken the class before: These are acceptable resources for basic Python questions. However, using such sources to aid you on specific parts of an assignment is not allowed. When in doubt, cite the source , just like you would cite a source in a paper.
    "I wrote this function after looking at the following page on Stack Overflow:"
  • (Don't do this:) Posting code on GitHub, Ed Discussions, etc. We do not use Git in this class, but if you want to use Git with your partner, you should use the Cornell GitHub , which allows you to create a private repository. Other versions of GitHub may make your private repository public without your knowledge. For Ed Discussions, we understand that you might be looking for staff help with specific portions of your program, but the staff have been instructed to not do so on Ed Discussions.
    We don't consider accidental public revelation of your code a violation of the Academic Integrity Code, but we don't want other students' experience of the assignment to be affected by seeing your code, even accidentally.


You are freely allowed to collaborate with, give help to, and get aid from any other student in this class if this is done as synchronous, small-group, joint work. We ask that during such sessions you do not just give or receive answers without also explaining them/getting an explanation of them; otherwise, the educational purpose of the labs is lost.

However, we want all students to get the educational value of working through lab exercises without having previously seen the answers. Therefore, you may not post answers to lab questions in broad forums , such as the course Ed Discussions site. But you can post to Ed Discussions any error messages you get from running your code, instead of the code itself. (And in fact, that's often enough debugging info for someone to help you out.)