Academic Integrity

The following text, in part, is derived from a page written by Prof. Jae Woo Lee and used by permission.

Academic Honesty Policies


This document describes academic integrity policies in effect for the courses taught by Prof. Henning Schulzrinne at Columbia University. The policies described in this document are basically the same as the Computer Science Department's academic honesty policies. The purpose of this document is to clarify the general descriptions in the context of the courses taught by Prof. Schulzrinne.

Please read the following document before you proceed:

In this document, first-person pronouns (e.g., I or me) refer to Prof. Henning Schulzrinne, and second-person pronouns refer to the students taking Prof. Schulzrinne's classes. This document often uses the colloquial term “cheating” to make the description as plain and succinct as possible. The use of the word “cheating” is not meant to be inflammatory or derogatory in any way. Cheating in this document means exactly the same thing as academic dishonesty in the Department’s document.

What constitutes cheating

I'll use the term “cheat code” to refer to the following:

For non-coding assignments, semester projects and term papers, examples of cheating include:

When in doubt, please ask

The last items above may require individual determination. It is acceptable to consult the wealth of information on the Internet (on StackOverflow, for example). But if you copy code or text from them, you are probably crossing that line.

For example, let's say you found on StackOverflow a piece of code that calculates the number of seconds between two points in time expressed in “YYYY-MM-DD HH:MM:SS” format, and you copied that 10 lines of code into your code. Now, if that was the entirety or a major portion of the assignment (in an intro programming course, for example), you are obviously cheating. The whole point of the assignment was for you to code up the calculation yourself.

However, if that calculation was only a peripheral part of a much larger program, copying that code may not be considered cheating, especially if you cite the source in a comment adjacent to the piece of code. For example, if you use that 10 lines of StackOverflow code in your homework which is a 500-line Personal To-Do Management program, I wouldn't consider it cheating, even if you forgot to cite the source. But obviously I'd like it much better if you cite the source.

You can see why this is a fine line. There is no way to lay out the exact rule. Whether you have crossed the line will depend on the relative nature of the assignment and the code you copied. If you have stumbled upon a piece of code that you would like to use, and if there is even a small doubt that it might be viewed as cheating, please ask the teaching staff.

Another way to classify this fine line is to look at the intent. In the case above where you copied 10 lines from StackOverflow into a 500-line program, it is clear that you did not intend to cheat on the assignment. But if you looked at the very solution for the assignment, either mine or another student's, you had a clear intention to cheat, even if you ended up copying only a single line of code. Same is true if the cheat code you looked at is not the very solution for the assignment, but a piece of code that does essentially the same thing – for example, your assignment is to code up a web crawler, and you are looking at an open-source web crawler code. It is in this spirit that I lay out the following scenarios.

If you looked at cheat code, you cheated, period.

Perhaps you struggled for hours, or days even, to solve some particular problem that you just couldn't figure out why. You knew you could find the solution on the Internet from what you overheard while standing on line to see a TA in her office hour. You decided to take a peek, not to copy – that would be wrong of course – but to compare it with your code to see what on earth you are doing wrong. You saw the problem – omg how could I have missed this. You corrected your code, the same way that the cheat code did, and unfortunately got caught.

I agree with you when you claim that you are very different from those people who simply copied cheat code and changed some variable names. But I say this to you: you are also very different from those people who tried and tried, just like you did, but failed to get it working at the end, with no working code to submit, but with their honor intact.

If you have cheat code in possession, you are cheating.

Perhaps you received a zip file containing the last semester's solutions from a friend. Perhaps you don't intend to use it. Perhaps you have it just in case. It doesn't matter. You are very different from those people who just said no.

Some people have my past exams and solutions in their possession. I don't like it, but I don't consider it cheating because in that case, you are not trying to substitute what should be your work with someone else's. I release my exam and solution in PDF files immediately after the exam has taken place, because I consider going over the exam that you just took a critical part of the learning process. I don't explicitly say that you cannot give them to your friends (I do forbid you to post it anywhere – they are my copyrighted materials), so it is not a surprise that some of the exams are passed down from a semester to the next. I try my best so that the past exams do not help anyone to prepare for his/her exam. In fact, I thought about releasing all my past exams, but I don't want to give you the impression that the past exams are what you need to study. I;ll try my best to have the sample exam (which is not always the last semester's exam) be the best example of what's to come.

If your friend is telling you what code to write, you are cheating.

This is an excuse that comes up quite often, probably because this is easy to present as a case of “I didn’t know this was cheating.” You have a friend, maybe a former student of mine – let’s call him/her Alex – who helps you with homework. Alex would sit down with you while you work on your lab. You are the one who’s typing. Except that one time Alex got frustrated, took the keyboard, and said “This is what I meant”, Alex is mostly giving tips and guidances.

You are deluding yourself if you think this is learning. Your role is way too small here for any learning to take place on your part. And in most cases, you will inevitably cross the line. It's 30 minutes before the deadline – Alex will tell you what you need to write, and you will put them in without exactly knowing what it does. It turns out, unfortunately, that the piece of code Alex read to you was cheat code that Alex copied from the Internet when he/she did his/her own lab last semester.

Obviously having a tutor is not cheating in itself. But it leads to one in so many cases. Teaching someone without giving away answers is not an easy thing to do. My TAs constantly struggle with it, and they make plenty of mistakes of giving away too much.

If you really must get private help, I recommend you never sit down with him/her at the computer. Work with your tutor on paper. Have Alex go through skeleton code or lecture notes on paper. Have Alex help you draw diagrams. Have Alex help you understand the lab, but not help you code it. Then throw out all papers that had Alex' code, take the rest with you – those with diagrams, etc. – to you computer, and start coding the assignment yourself.

Group work

Unless otherwise noted, all work is to be done individually. I encourage study groups, but unless you are part of a project team explicitly created and approved for a semester project, the actual assignment solution has to be your work. If the work looks like it was done jointly rather than individually, the points will be divided by the number of participants. (For example, if there were three participants, each will get one third of their points.) If you worked on an assignment together, even if you believe that it was not joint work, it is your responsibility to list the names of students in your study group. If the IAs or I find out by comparing solutions, this is cheating.

Penalties for cheating

The exact penalties are different for different classes, but the following set of penalties are usually the minimum set of penalties which are applied to mild cases of cheating – cheating on one homework assignment for example. I reserve the right to impose any academic penalty, including a grade of F, for any academic dishonesty case.

Your pledge

As part of the first assignment, you are required to sign the following pledge:

I have read and understood the following two documents:

  1. The Computer Science department's Policies and Procedures regarding Academic Honesty
  2. Prof. Henning Schulzrinne's Academic Integrity Policies  

I pledge that I will abide by the rules set forth by the documents, and
that I will accept the corresponding penalties if I fail to do so.

I also pledge that I will never post any Course Materials to public code
repositories or web sites like GitHub, CourseHero, etc., nor will I
share Course Materials privately with any person who may take the same
class in the future.  I understand Course Materials include, but are not
limited to, my own code, skeleton and solution code I received, lecture
notes, and exams and solutions.

Note that you own the code you write. Feel free to give your code to potential employers if they request it for your job interviews. I'm just asking you to help me prevent cheating by making the code and other class materials not searchable on the Internet.


Auditing, Pass/Fail

Students auditing a course are expected to achieve 50% or more of the points on the assignments. They do not need to take the exam(s) or work on a project.

Students taking the course as pass/fail will be treated the same as letter-grade students and must achieve 50% of the overall course points to pass the course. They may choose not to do the project.

Last updated: 2016-01-20