Labs

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.)

Assignments

In order 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 course rules, where "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, online services like StackOverflow.

(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

   # thisfile.py
   # KDF4 and LJL2
   # Sources/people consulted: discussed strategy for process_strings() with Walker White
   # Feb 12, 2021

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

The more general principles

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.

Scenarios

../