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.

Table of Contents


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 somewhat 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. This includes giving you a negative score on the assignment or exam, or even failing you for the course. Such a penalty is intended to discourage you from cheating when you feel you have “nothing left to lose”.

In our opinion, the most significant outcome of a guilty verdict 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 potential employer or school can ask you to authorize Cornell to disclose whether you have a letter on file. That most commonly happens when applying to law school, medical school, or for security clearance from the government.

When a letter is sent, Cornell keeps this 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 you 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.

Accepting Responsibility

While Academic Integrity hearing can be scary, they are a necessary part of making sure that our courses are fair to everyone. With that said, many of you are new to college, and have never been in a situation where cheating is taken so seriously. It is for that reason that Cornell has been piloting a program for first-time offenders called Accepting Responsibility.

This program is intended for small, first-time offenses (which is the vast majority of Academic Integrity Hearings in CS 1110). While we still need to investigate the violation to determine who exactly is at fault (and eliminate any innocent bystanders), we may elect to forgo the the formal hearing described above. Instead of a formal hearing, the investigation will take place by email or informal conversations, solely to gather evidence.

Once this investigation is finished, we will identify the students that we believe are guilty. Those students are expected to admit their guilt and attend an education workshop on academic integrity. In addition, we will assign a reasonable grade penalty. In exchange for all this, no letter will go on file recording this incident. Think of this as a plea deal to prevent the really bad outcomes of a hearing.

If we ask you to accept responsibility, it is possible for you to refuse and not admit guilt. However, if you do, we will revert to the regular, formal Academic Integrity hearing. Furthermore, if this your second offense, we cannot offer you this option. See the official page on Accepting Responsibility for more information.

Finally, we have seen cases where an innocent student is made to appear guilty of an academic integrity violation because of another’s actions. This can happen if one student steals code from another and hands it in as their own without their knowledge. If this is the case, we will not use the accepting responsibility process. Instead will hold a regular hearing with the full range of possible penalties.


AI Violations in CS 1110

First of all, none of these rules apply to labs. 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 apply to exams, assignments, and in-class polling.

Exams

Exams are the easiest type of academic integrity to understand, as it closely follows what you have been taught before coming to Cornell. You should not have outside materials accessible while you work on an exam. You should not copy from the exam of another person. You should not show your exam to another person currently taking the exam or waiting to take the exam. You should not discuss exam questions with another person while students are still taking the exam.

In-Class Polling

Answering polls with your iClicker is a small, but significant portion of your grade in this class. Therefore, you must not submit answers for anyone else, particularly since it requires access to the other student’s netid. This is a form of impersonation and also an Academic Integrity Violation.

Assignments

Assignments are where the policy is more involved. 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 1110 – 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, old versions of Assignment 7 used to appear on Stack Overflow (because Stanford used the same assignment). You should be very careful when using Stack Overflow for an assignment.

Using Automated or AI Help

While Stack Overflow can be considered a gray area, AI tools like ChatGPT or GitHub CoPilot are not. While we recognize that AI is a valuable tool that will lead to many changes in how software is developed, this is a course about the basics of programming. Hence it is forbidden to use them to create code for assignments and labs (though see below for a more nuanced take). Just like you would not use Google Translate to complete your foreign language homework for you, you should not be using these tools to complete your CS 1110 homework.

These tools are still enough in their infancy that it is still possible to detect heavy usage using code similarity. But we will also be closely monitoring performance on exams versus homework performance. If the class performance is significantly different from previous years, this may force us to re-evaluate how grades are calculated in the future.

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 includes publicly posting to GitHub, PasteBin, BitBucket, or any other code sharing site. 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 the code to themselves (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 1110 after all).

Another important thing to understand about academic integrity is the burden of proof is not beyond a reasonable doubt. Instead, it is the much lower bar of clear and convincing evidence. That is why code similarity is often sufficient evidence all by itself to determine a violation. When the amount of similar code is large enough, it has held up in civil court cases. Code similarity was used in the lawsuit that Epic Games filed against Silicon Knights, accusing them of copying code from the Unreal Engine.

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 say that, if you have the skill to fool Moss, then you did not need to cheat on the assignment (or even attend CS 1110) 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 are likely to 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 this 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 violation, citing will significantly lessen the penalty that we assess. If you do not cite, and we catch you, we will go through the formal process


Course Policy on AI

While we have made it clear that AI programming tools are forbidden for assignments, we feel that it is important to talk about these tools in a wider context. We recognize that AI tools are extremely useful, and will definitely change the way that programming is done in the future (once the many copyright issues are resolved). And there are instances in which it could be beneficial for you to work with AI tools. For example, many students find that they learn more when they can look at example programs. Using AI to generate sample programs is perfectly fine provided that you are not claiming the produced software as your own work.

Another way to think of this as follows. You may use AI to generate any code that you are not submitting for an assignment, lab, or exam. As long as it is only for your own personal use, it is fine.

With that said, we ask you to be very judicious with how you use AI in your studies. The exams in this course all require that you write code without the aid of a computer. Therefore, it is very important that you practice how to do this without these tools at your side.