Overview

The CS 1 collaboration policies determine if, and how much, you are allowed to collaborate with other students while working on your problem sets and exams.

Please read this document to the very end, because you are responsible for abiding by all the rules set forth here. Failure to abide by these rules may cause you to get sent to the Board of Control, and that is not pleasant for anyone concerned. Therefore, we want to be extra clear on what constitutes fair collaboration in this course.

In many places in this document, you will read that some kind of behavior is strictly forbidden. We are not trying to scare you or intimidate you, and we’re not trying to be jerks. We just want to make absolutely sure that you know what the rules are, and saying that something is strictly forbidden is pretty unambiguous. (We apologize in advance if you find this annoying.)

Basic policy

You are welcome to collaborate informally on your assignments (but not on exams!) with other individuals who are taking or have taken the class, but you must write all of your own code and you must not look at other students' code, except to help them as described below. Copying another student’s code verbatim or nearly verbatim (from a file, a whiteboard, a screen share or anywhere else) is not acceptable and is an Honor Code violation. Taking another student’s file and modifying it to make it look different is definitely not acceptable and is an Honor Code violation. Consulting a printed or electronically displayed version of another student’s code and referring to it while you write your own code is not acceptable either, and is also an Honor Code violation. Having someone dictate code while you type isn’t acceptable either. Basically, you have to do your own work.

Getting advice on algorithms or syntactic details of the language, or suggestions on how to debug a part of your program that isn’t working, is fine.

All of the above also applies if you are getting tutored for the course, officially or unofficially.

All of the above also applies to student work from previous years. We re-use some problems in assignments, and copying answers from an assignment that was submitted in previous years is an Honor Code violation just as much as copying from a student who is currently taking the course.

Helping others and the "50-foot rule"

It is common for students to want to help other students to write and debug their assignments. While we prefer that you go to one of the course teaching assistants when you need help on the assignments (it doesn’t matter which one), we don’t forbid you from seeking help from other students or offering your help to other students. However, we do insist on some guidelines to make the process fair for everyone.

When you are helping another student with their homework, you are acting as an unofficial teaching assistant, and thus you must behave like one. A teaching assistant will not just tell you the answer or dictate code to you; he/she will help you work through the problem so that you understand what you are doing wrong. If you don’t have the time or the inclination to do this, do not assist other students. If you just give them your code, you are violating the Honor Code and both you and the people you are giving the code to may be in for some serious consequences.

As a way of clarifying the way in which you can help other students (especially when it comes to debugging their code), we want you to obey the "50 foot rule". This rule states that if you help another student with their programming problems (including debugging), you must not consult your own code while doing so. Specifically, we ask that your own code be at least 50 feet away i.e. not visible to you or the person you are helping while you are helping them. (It doesn’t have to be exactly 50 feet; the point is that you can’t see your code while helping the other person and you shouldn’t run back and forth between your computer with your code and the computer of the person you’re helping.) The slogan of the 50-foot rule is: "Help them with your brain, not with your code." Please do not try to find a loophole kind of way around this e.g. projecting your code on a building 50 feet away; that is clearly not what we mean. Posting your code on a pastebin-like internet site, emailing your code to other people, sharing your screen with your code on it, printing it out, or even referring to it on your laptop while helping someone else, are all clear violations of the collaboration policy for this course. Also, we don’t want you to put your code up on a computer in a room 50 feet away from where you’re helping someone and run back and forth, dictating a line at a time. If you can’t help them without consulting your code, don’t help them. Refer them to a teaching assistant.

The 50-foot rule only applies when helping another student in person.

Helping another student using teleconferencing software like Zoom, Skype, Discord etc. is covered below, but one aspect of it is that screen sharing is not permitted.

Use and abuse of pseudocode

In the past, some students have been called in to the BoC because of very similar code that was ultimately traced to pseudocode written on a whiteboard which was almost exactly like the final code. Pseudocode is supposed to be an informal, non-executable description of an algorithm. If you write or consult pseudocode which is (say) 80% or more of the way to being actual runnable code as a way to do an end run around the collaboration policies, be advised that we and the BoC are well aware of this problem and you will not get away with it. On the other hand, if you (or a TA) write out or read pseudocode which is a human-readable description of an algorithm without any actual code in it, you are fine.

Teleconferencing software (e.g. Zoom)

If you use teleconferencing software (like Zoom) or software with teleconferencing capabilities (like Slack or Discord with VOIP), you may not share your screen with another student (unless they are a course teaching assistant), whether to help them or to get help from them. This also applies to non-students (again, with the exception of the course instructors).

Also, it is strictly forbidden to dictate code over teleconferencing software. This is consistent with the rules in the other sections of this document.

Discussion boards (e.g. Discord)

You are strictly forbidden from posting code which answers or even partially answers a problem to a discussion board (such as Discord) unless it’s a private message to El or a TA during OH. If this happens you may lose the ability to use the discussion board for any purpose.

Use of websites

It is strictly forbidden to post any of the problems from the assignments onto websites (for instance, Stack Overflow), and anyone caught doing this will be charged with an Honor Code violation. This includes problems that are similar to assignment problems even if not identical. If you find a discussion of course-related material on internet websites, you may read it as long as the discussion is not about a problem that is identical to or very similar to a problem on one of the course assignments. However, do not transcribe code from the internet into your homework submissions.

It is strictly forbidden to look at any solutions to any previous years' CS1 work posted on internet code repository sites (including but not limited to GitHub, GitLab, BitBucket, etc.). It is also strictly forbidden to put your own code on such a repository unless (a) it is a private repository, and (b) you do not allow anyone else access to this private repository. You may also not fork any such repositories that you might happen to find; we will consider this prima facie evidence of intent to plagiarize.

Labs

The Collaboration policies described are put in place to clearly lay out the Caltech Honor Code expectations and to provide a fair learning experience for all students. That said, collaboration is also a valuable part of your learning, and you will find that you and your peers will both share and differ in interests and skill sets.

CS 1 Labs will start with independent work, but will incorporate opportunities for collaboration and peer programming in later weeks. These are the only times where you can work through code with another student.

Summary tables

Here is a summary of what is and is not allowed while working on assignments and exams.

Resources

These are resources that you may or may not be allowed to consult while working on your CS 1 assignments and exams.

Table 1. Resources
Item Assignments Exams

Course readings

OK

OK

Course textbook

OK

OK

Official Python documentation

OK

OK

Other Python documentation

OK

Not allowed

Other Python books

OK

Not allowed

Your notes

OK

OK

Notes of other students

Not allowed

Not allowed

Your graded assignments

OK

OK

Other students' graded assignments

Not allowed

Not allowed

Other students' ungraded assignments

Not allowed

Not allowed

Other code written by anyone else (inside or outside Caltech) that answers an assigned problem, incuding ChatGPT or related programs

Not allowed

Not allowed

Solutions to assignment/exam problems from a previous year

Not allowed

Not allowed

Material posted on internet forums that answers specific problems

Not allowed

Not allowed

Material in non-course code repositories (Github, Bitbucket, Gitlab etc.)

Not allowed

Not allowed

Activities

These are activities which you may or may not be allowed to do while working on your CS 1 assignments and exams.

Table 2. Activities
Item Assignments Exams

Looking at code written by other people in the class

Not allowed

Not allowed

Looking at code written by anyone not in the class

Not allowed

Not allowed

Discussing problems informally with other students

OK

Not allowed

Discussing problems with a TA or instructor

OK

Not allowed

Asking clarifying questions to a TA or instructor

OK

OK

Showing your code to another student in the class to help them with a homework/exam problem

Not allowed

Not allowed

Sharing a screen on Zoom or other teleconferencing software with anyone who is not a CS 1 TA or a CS 1 instructor

Not allowed

Not allowed

Showing your code to a TA or instructor

Allowed

Not allowed

Asking someone (except a TA or instructor) how to write the code for a problem

Not allowed

Not allowed

Helping other students debug their code, as long as you follow the "50-foot rule" (see above)

OK

Not allowed

Asking a TA or instructor for help debugging your code

OK

Not allowed

Using an external library, as long as it does not provide a direct solution

Need to ask instructors for permission

Not allowed

Using/consulting pseudocode written by other students

See above section (if you are in doubt, assume it’s not allowed)

Not allowed

Posting course-related code to a code repository

Only if the repository is private and unshared

Only if the repository is private and unshared

Forking another person’s code repository for course-related purposes

Not allowed

Not allowed

Things you are required to do

These are things which you are required to do while working on your CS 1 assignments and exams.

Table 3. Required activities
Item Assignments Exams

Turn in only your own programs/code

Yes

Yes

Indicate your name/login on each submitted file

Yes

Yes

Indicate the names of any collaborators on a problem

Yes

Not applicable (collaboration is not allowed)

Consequences for violating these policies

Be aware that letting another student copy from you is just as bad as copying from another student, and can get you into just as much trouble.

Be aware that we use plagiarism detection software to check for copying, and students with assignments that are suspiciously similar will be referred to the Board of Control (BoC).

Finally…​

If you have any questions about the course collaboration policies, please send an email to El Hovik.

We realize that the vast majority of you (hopefully all of you) have no intention of cheating or over-collaboration in any way, and we hope that this collaboration policy won’t get in the way of your enjoyment of the course.

[End of document]