M, W, F 12:20-1:10
in Upson 142

CS 1133: Short Course in Python

Spring 2020

Academic Integrity

There is a new policy for 2018. Do not take the word of any student that is not a course staff member regarding the academic integrity policy. Because of a desire to align the policy of CS 1133 with upper-level CS courses, the older policy is no longer valid. Please read this page to understand the current academic integrity policy.

In its simplest form, our policy is that we ask you not to cheat, in any way, shape, or form. In return, we will try our best to be fair about the amount of work we are giving you, in the grading of that work, and in giving you a course grade. You can always talk to us if you have any gripe or criticism about the course, and we will attempt to respond to it immediately.

Some forms of cheating are pretty straight-forward. Others, less so. Every year, we find several academic integrity violations. In many of these cases, the students were not necessarily intending to cheat. However, in order to manage a course this size, we need to create a very clear policy about what does and does not constitute cheating. This is why we require all students to read (and take a reading quiz about) this page before the semester starts.

Cornell Code of Academic Integrity

Cornell University has a Code of Academic Integrity, which explains clearly what is academic cheating and what is not. This website explains the academic integrity procedures from the standpoint of the student, the instructor, and the members of an Academic Integrity Hearing Board.

When you have time, we recommend that you spend some time to read this document. However, you will notice that some of the terms (such as unauthorized assistance) are a little vague. Therefore we have a much more detailed explanation below.

Academic Integrity Hearings

One thing that can be a little hard to glean from the Code of Academic Integrity is the actual penalty for violating the Code. A quick browse through the text makes it appear that the instructor just assigns a grade penalty. As a result, students who are doing poorly feel that they have nothing to lose and so take the risk. However, this is a bad idea, because the penalties are much more severe than a grade penalty.

If we believe that you have violated the code, you will be called in for a formal hearing. The formal hearing is our chance to present the evidence that we have uncovered, and you are given a chance to respond to the evidence. Guilt or innocence is not determined until you have had a chance to respond. If we determine you are innocent (which commonly happens when only one partner cheats), then all correspondence will be destroyed and there will be no evidence that a hearing was held.

If you are found guilty, we get to assign a grade penalty. We actually have the authority to give you a negative score on the assignment or exam, or even fail you for the course. But we rarely do that, because the real penalty is the letter. For any student found guilty of an academic integrity violation, a letter goes on file with the registrar of his or her school recording the violation.

Fortunately, the letter does not become part of your transcript. Cornell likes to give students a second chance after just one violation, and so will not advertise it to the world. However, any employer or graduate school can ask Cornell if a letter was ever submitted, and Cornell is required to answer if they ask. Historically, only medical schools ask this question. But this means that pre-med students can destroy their careers with just one violation.

For all other students, Cornell keeps the letter on file and only takes action if it receives a second letter (for an additional violation). In that case the student has to go before an official board, where they talk about suspension or permanent expulsion. At that point, grades are irrelevant.

This is why the letter is very bad. Do not get the letter.

The Innocent Bystander

Sometimes your assignment partner may have violated academic integrity without your knowing about it. If we can determine that this was the case, then you will be found innocent. However, since assignment violations are determined using code similarity, we will still need to include you in an academic integrity hearing. We will use this hearing to gather evidence from you and determine who did what in the assignment. If your partner vouches that you knew nothing about the violation, then the hearing will be short. Otherwise, we might need some more evidence from you.

AI Violations in CS 1133

There is no way to have an academic integrity violation in a lab. For all labs, you are freely allowed to collaborate with, give help to, and get aid from any other student in this class. These rules only apply to assignments. For assignments, the basic rule is as follows:

You may not get help from or give aid to (either knowingly or through gross negligence) anyone that is not a course staff member or your official partner.

There is a lot to unpack in this single sentence. We break it down into two parts.

Getting Unauthorized Help

When you work on an assignment, you have the option of working with a partner. Obviously that partner can help you work on the assignment with no limitations. In addition, you are free to come to the instructor or any course staff for help. This help can include questions about the assignment, help reading error messages, and hints about where to go if you are stuck. However, we will not debug your code or provide you with the answers.

Getting help from anyone else -- be it a current or former student of CS 1133 -- is not allowed. Some forms of help, such as asking for clarification on a specification, are innocuous and are not considered a violation. However, those types of questions should always be directed to the course staff, as only they know the official answers. On the other hand, showing your code to someone else, or receiving code from them, is a major violation and will be prosecuted as such. Even just talking about the code (without sharing files) is a problem, since your discussion will likely alter the code that you write.

It is also not okay to copy files from online sources. Some of the earlier (easier) assignments do not change too much, and you can find versions on GitHub if you look closely enough. But if you do that, we 100% guarantee that we will catch you. We know all of these files and will easily detect them.

Programming forums like Stack Overflow are a bit of a grey area. As long as you stick to basic Python questions, it is okay to use these forums. However, using Stack Overflow to aid you on specific parts of an assignment is not allowed. In particular, some old versions of class assignments may appear on Stack Overflow. You should be very careful when using Stack Overflow for an assignment.

Giving Unauthorized Aid

Intentionally sharing a code file with another student is an obvious violation. But you should also avoid talking about the assignment in anything other than the highest generalizations. You can talk about how long the assignment is taking you, or what parts were more difficult than others. But answering questions of the form "how did you do this?" is a very bad idea until grades have been posted. At that point you are free to talk about the assignment as much as you wish.

Every year, we have horror stories about students that just wanted to help a friend. They sent the friend their file "just for comparison", and then the friend 100% copied the file. In the past, we have been lenient on the giver but the administration has asked us to be much harsher on this. So the only way to protect yourself is to not give your file to anyone other than your partner.

Giving unauthorized aid also extends to gross negligence. Negligence means posting your code online so that another student can freely copy it. This means publicly posting to GitHub, PasteBin, BitBucket, or any other site like that. We do not support GitHub in this class, but we know that some savy students like to use it to collaborate with their partners. But the commercial version of GitHub is bad because they often make your code public after so many months.

If you want to use Git to work with your partner, our official policy is that you should use the Cornell GitHub. This gives you an unlimited number of private repositories, making it easier to hide your code from prying eyes.

As long as you take the proper precautions, we will not prosecute you if someone gets your code through illicit means outside of your control. For example, if a student sneaks into your dorm room, breaks into your laptop, and mails themself the code (it has happened) we will not prosecute you for failing to lock your door. However, this is an affirmative defense, which means that you have to have convincing evidence that you are not responsbile. Otherwise, we may find you guilty by default.

Code Similarity

Violations are determined using the program Moss, which was developed by a Cornell PhD. This is a program that detects code similarity, and this is what we use to determine whether to call an academic integrity hearing. This may seem a bit unfair. What if your code was similar by accident? Moss is smart enough to ignore code that is similar across a lot of assignments. It primarily detects similarities across a small number of students (the abnormalities). In our experience, these indicate violations 99.9% of the time. If it is an accident, a significant portion of the class will have the same accident (this is CS 1133 after all).

Fooling Moss is very hard. It can tell if you rename variables, if you change comments, reorder code or do anything short of a drastic rewrite. People who have managed to fool Moss will all tell you that, if you have the skill to fool Moss, then you did not need to cheat on the assignment (or even attend CS 1133) in the first place. So if your code is abnormally similar to another file (either in the class or available online) we will always catch you.

In our experience, Moss will catch you even if you just look at another file without meaning to copy it. Once you see a solution to a problem, it is very hard for your brain to think of another way to do it, and your code will start to look very similar. This is why tech companies always use clean room design when they try to reverse engineer a competitor. No matter their intentions, having anyone touch the code that might have worked at the competitor opens them up to a lawsuit that they will loose. This is why Uber was forced to settle the Google lawsuit.

Special Precautions

In our experience, there are two special cases that can cause your code to look like a violation when it is not: breaking up with an assignment partner, and using an programming forum like Stack Overflow. To keep us from calling an academic integrity hearing in these cases, there are steps that you can take to protect yourself.

The Partner Divorce

In this scenario, you had a partner for an assignment, but you decided it was not working out. Maybe you or your partner were not doing enough work. Or maybe your partner found someone else that they would rather work with instead. In this case, you decide to go your own separate ways and submit separate assignments.

However, if you did any work together at all, there is guaranteed to be some similarity between your code. Therefore, you need to be very explicit in your code how you collaborated and when you stopped collaborating. You need to tell us this in the comments at the top of your file. For example, you might write something like this:

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.

Group divorces will be handled on a case-by-case basis. As long as you explain what happened in the comments, a group divorce will never lead to an academic integrity hearing. In addition, if it only happens once, there will be no grade penalty either. But if you are involved in a group break-up more than once, we will have to talk to you about the circumstances and make sure that you were doing your fair share of the work.

Online Forums

As we have mentioned, Stack Overflow is a bit of grey area. It really comes down to how specific was the help to the assignment that you were working on. Questions of the form "How do I do X in Python" are okay. Questions of the form "How do I implement this specific function" are not. If you are unsure of whether you have used an online forum in a way that counts as unauthorized assistance, your best option is to cite the source, just like you would cite a source in a paper.

There is no formal style for citing in source code. Just provide a comment together with a link to a source. For example, it might look something like the following comment.

I wrote this function after looking at the following page on Stack Overflow: http://stackoverflow.com/questions/9189172/python-string-replace.

Citing a source is not immunity from prosecution. But if the help provided was minor, we will not consider it a violation and not hold a hearing. Even in cases where it is a violatiion, citing will significantly lessen the penalty that we assess. If you do not cite, and we catch you, you are guaranteed to get the infamous letter.

Course Material Authors: D. Gries, L. Lee, S. Marschner, & W. White (over the years)