Please don't cheat.
- Why You Shouldn't Cheat
- What Counts as Cheating
- What is Allowed
- Consequences of Cheating
- Frequently Asked Questions
Why You Shouldn't Cheat
The diploma you hope to earn will be a certificate representing the university's belief that you have attained a certain level of knowledge and skill within your degree program.
The grade you earn in this course will represent our belief that you have attained a certain level of knowledge and skill within this course.
You means you. It does not mean you-with-help-from-your-friends.
Honest students become angry when their classmates are awarded a grade or diploma without putting in the effort needed to earn that reward.
Faculty and advisors expect your grades to reflect your own knowledge and skill, not the knowledge and skill of others whose work you have stolen or used without authorization.
The university expects your degree to reflect your own knowledge and skill, not the knowledge and skill of others. Every time a graduate of the university goes out into the world and performs poorly, it makes the whole university look bad. It also devalues the diplomas earned by other graduates who acquired their diplomas honestly.
Employers also expect your diploma to represent your own honest effort. Employers do not want to hire cheaters.
Why Industry Hates Cheaters
Most of the economically important applications of computer science involve intellectual property. The rules governing intellectual property are similar, though not identical, to rules established by Northeastern University's Academic Integrity Policy and by CCIS and course rules. As explained by the current version of Wikipedia's article on software copyright:
There is a certain amount of work that goes into making copyright successful and just as with other works, copyright for computer programs prohibits not only literal copying, but also copying of "nonliteral elements", such as [a] program's structure, sequence and organization. These non-literal aspects, however, can be protected only "to the extent that they incorporate authorship in programmer's expression of original ideas, as distinguished from the ideas themselves." 
The university and course rules that prohibit unauthorized collaboration are similar to but simpler than the US laws and case law that protect programmers and their employers from unauthorized use of copyrighted software.
If you can't follow the course rules, you probably won't obey US copyright law either.
Employers know that students who cheat in school are apt to become employees who cheat at work. Employees who cheat can cost their employers a great deal of money. That's why employers try not to hire students who cheat.
What Counts as Cheating
You should read the university's Academic Integrity Policy, paying special attention to its definitions of cheating, plagiarism, unauthorized collaboration, and facilitating academic dishonesty:
Cheating: The University defines cheating as using or attempting to use unauthorized materials, information, or study aids in any academic exercise. When completing any academic assignment, a student shall rely on his or her own mastery of the subject.
Plagiarism: The University defines plagiarism as using as one’s own the words, ideas, data, code, or other original academic material of another without providing proper citation or attribution. Plagiarism can apply to any assignment, either final or drafted copies, and it can occur either accidentally or deliberately.
Unauthorized Collaboration: The University defines unauthorized collaboration as instances when students submit individual academic works that are substantially similar to one another. While several students may have the same source material, any analysis, interpretation, or reporting of data required by an assignment must be each individual’s independent work unless the instructor has explicitly granted permission for group work.
Facilitating Academic Dishonesty: The University defines facilitating academic dishonesty as intentionally or knowingly helping or contributing to the violation of any provision of this policy.
Examples include, but are not limited to:
- Doing academic work for another student.
- Making available previously used academic work for another individual who intends to resubmit the work for credit.
Those are general definitions because they apply to all colleges, departments, and courses within the university. The course rules, stated below, are even more specific.
What Counts as Cheating in CS 5010
Any collaboration on or discussion of how to do a problem set, with anyone other than your assigned partner, counts as cheating. In particular, any collaboration on or discussion of
- general design of a program or function
- names of specific data types or functions
- definitions of specific data types or functions
- contracts, purpose statements, and invariants
counts as cheating unless those things are mentioned within the problem statement or in materials provided by course staff.
Submitting code you did not write yourself is cheating. (When you have an assigned partner, that rule changes to: Submitting code you and your partner did not write yourselves is cheating.)
One thing you must learn in this course is that code includes test cases and comments. If you (or you and your partner) did not write your own test cases and comments, you are cheating. (You are of course allowed to submit test cases and comments that appear within or have been derived from test cases and comments in materials provided by course staff.)
Telling anyone about the questions you were asked during a codewalk is cheating. (It counts as facilitating academic dishonesty.)
Looking at someone else's code is cheating. That includes looking at test cases and comments.
Letting someone else look at your own code is cheating. That includes test cases and comments.
Giving someone a written or machine-readable copy of some of your test cases, comments, definitions, or other code is cheating. Accepting a copy is also cheating.
Leaving a copy of your solution or any part thereof in a public place where other students could steal it will be regarded as facilitating academic dishonesty, which counts as cheating even if you never intended for anyone to steal your work. That means you should never write part of your design or code on a white board or piece of paper or USB drive or any other medium where it could be seen or copied by other students.
In particular, you should never leave your laptop unattended in any public place, even if access is protected by a password. Someone might steal your laptop as well as your files.
Reading similar programs written by students in a different section or semester is cheating. If, while surfing the web, you accidentally discover and start to read a program or code fragment that does something similar to what you have been asked to do in a problem set, then you should stop reading immediately, take note of its URL, and add a comment to your own solution that says you accidentally started to read the material located at that URL.
Telling someone about a web site you have discovered, even accidentally, that gives advice or contains code fragments that would make it easier to do a problem set is cheating. (Again, if you find a web site helpful to you as you are doing a problem set, you must cite that material and its URL in a comment within your program. Failing to do so will be regarded as plagiarism, which is a form of academic dishonesty.)
If you are ever unsure about what counts as cheating in this course, you should contact the course staff (via a private message to the instructors on Piazza) and ask.
If you ever suspect that you or your partner may have violated course rules, you should contact the course staff. It will go better for you if you tell us about it yourself instead of making us discover the violation.
What is Allowed
You are encouraged to study materials provided by the course staff and to discuss those materials with your fellow students, so long as you do not begin to discuss specific details of how those materials might be applied to a specific problem set.
You are allowed to study standard reference materials such as the documentation for Racket, Git, and other tools.
You are allowed to read books and articles and web pages that are not especially relevant to any problem sets assigned in CS 5010. (You should keep in mind that not everything you read is true.)
You are allowed to read about algorithms and programming techniques that might be relevant to a problem set, so long as your solution to the problem set includes comments that cite any relevant material you have read. (Failure to cite relevant materials counts as plagiarism, which is a form of academic dishonesty.) You are not allowed to search the web for programs or program fragments that solve a problem similar to the one you have been asked to solve.
Consequences of Cheating
If you cheat, you will not learn as much as you should.
If you cheat, you will probably be caught.
When you are suspected of cheating, the instructor will invite you to discuss your solution in a private interview. Even if the instructor concludes you were not cheating, that interview will give the instructor a better idea of what you have learned in the course, which may influence your semester grade (instructor's discretion).
When you are caught cheating, your semester grade will be lowered.
The instructor will also send a memo to Northeastern University's Office of Student Conduct and Conflict Resolution (OSCCR) that describes the incident and your part in it. University and CCIS policy require the instructor to write that memo and to report the incident.
The instructor will send a copy of that memo to the CCIS Committee on Academic Integrity, as required by CCIS policy.
OSCCR and CCIS may impose further sanctions.
For a first offense, OSCCR usually imposes some form of disciplinary probation and requires the student to perform some task designed to raise the student's awareness of the importance of academic honesty. For a second offense, OSCCR will probably suspend or expel the student from the university.
For a first offense, CCIS may impose some sanction such as barring the student from co-op opportunities. For a second offense, CCIS usually expels the student from the MS program.
Frequently Asked Questions
Why am I being accused of cheating, when I did nothing
more than talk with my friend about how to do the
A: Because you knew that was against the rules.
Why am I being accused of cheating, when I did nothing
more than talk with my friend about how to test our
A: Because you knew that was against the rules. Tests are a very important part of your program, as are comments.
Why am I being accused of cheating, when what I did
would not be considered wrong in my home country?
A: Because you enrolled in a graduate program located in the US, not in North Korea.
My friend can't figure out how to do the problem set.
Should I help?
A: No. If you help a student who is not your partner to write his or her solution, both of you will suffer the serious consequences of cheating.
I can't figure out how to finish the problem set.
Why not cheat?
A: Because you won't learn as much if you cheat, and a low grade for the assignment won't hurt your semester grade as much as cheating will.
I can't figure out how to start the problem set.
Why not cheat?
A: You'll get a zero for the problem set even if you cheat, and you'll also suffer the serious consequences of cheating.
I'm having trouble with all of the problem sets.
If I don't cheat, I'll have to drop the course.
Why not cheat?
A: If you drop the course, you'll be allowed to try again. If you try to cheat your way through it, your semester grade will be so low you'll probably have to take it again anyway, and you'll also suffer the serious consequences of cheating.
I can't possibly pass this course without cheating.
Why not cheat?
A: Because you won't pass this course by cheating. If you don't think you can pass CS 5010 without cheating, then you don't belong in this MS program.
Do you really think you're going to catch all cheaters?
A: No, but we catch enough to make a difference.
I may not be honest, but I'm really smart.
I'm going to change all the variable names,
and rearrange the code, and rewrite the comments.
How are you going to catch me?
A: You'll be surprised. If you were smart enough to evade detection, you'd be smart enough to do your own work.
I've never cheated before, and I'll never cheat again.
Can't you please overlook this one time
and give me a second chance?
A: By not expelling you from the course, MS program, or university, we are giving you a second chance. Next time, we won't be so forgiving.