Academic Honesty Policy



1. Introduction

One of the (many) goals of this course is for you to become a better programmer. The only way to become a better programmer is to write a lot of programs. In line with this, we require that any work you submit be entirely your own.

You should read this entire policy. Here are the three most important points, however:

  1. Write your own code.
  2. Never look at another student’s code.
  3. Never allow another student to look at your code.

The largest amount of learning in this course will occur as you solve the homeworks. If you cheat on the homeworks, you are depriving yourself of the most important learning component of the course, and will very likely fail the quizzes and exams.

The best way to avoid the temptation to cheat is to start the homework early. When you start early, you have plenty of time to attend office hours and get help when you get stuck. If you procrastinate the homework, you are more likely to end up in a high pressure situation where you feel tempted to cheat.

2. Cheating

This is a non-exhaustive list of things considered cheating in this course:

2.1. Homeworks

2.2. Quizzes and Exams

2.3. Retaking Course / Reusing Prior Material

If you are repeating 112, your prior work in this course is treated just as anyone else’s work. Consulting or copying your prior homework answers, graded exams, or term project solutions will only hurt your learning, and will be treated as a cheating violation.

3. Tutors, Friends, and Family

I am aware that some students receive help from outside sources in order to help them in the course. In some cases these people are friends (from CMU or not from CMU), family members, or privately hired tutors. For the purpose of this policy, all of these people are consider outside tutors.

If you have an outside tutor you may use them for any of the following:

Use of tutor in any other way is a violation of this academic honesty policy. This includes, but is not limited to, the following:

If you have any questions about use of an outside tutor, contact the instructor for clarification.

Note: You may discuss the homework with fellow classmates who also taking the class at the same time as you. See below for more details.

4. ChatGPT or Similar Tools

Any tools that assist you by writing code are considered outside tutors. This means that you may use them to help you study for quizzes and exams, or for general learning, but they may not be used, in any way, to assist with homework.

5. Good Collaboration

When working on homework, you are allowed to collaborate with other students in the course in the form of talking about the assignment together. The basic idea here is that you are encouraged to discuss the assignment together, but you should write your solution by yourself.

Here are some examples of healthy ways you could collaborate:

  1. Talk about the homework problems and discuss potential, high-level, approaches to solving them.
  2. Discuss ideas for useful testcases.

6. Bad Collaboration

You should never look at another student’s code or allow another student to look at your code. You are responsible for ensuring you do not look at another student’s code and that no other students look at yours. You also need to be careful to make sure that you are not “short-circuiting” the learning process for each other by over-explaining ideas and robbing other students of the ability to learn by experience.

Here are some examples of bad collaboration that is academic dishonesty:

  1. Having another student to look at your code to help you debug your program. (Or, helping another student debug their program by looking at it.)
  2. Working together to write pseudo-code (or code) that solves a problem.
  3. Looking at any part of another student’s code or allowing them to look at your code. Even a little bit. Even for just a second.
  4. Talking through a solution in detail.

7. Dangerous Collaboration

There are certain things students tend to do that inevitably lead to academic dishonesty occuring, and as such we strongly discourage you from doing them:

  1. Working near each other and talking about the homework while you are writing your code.
  2. Asking the same student for help every time you get “stuck”. (Or always helping the same student over and over again.) In this case, head to office hours instead.

8. Foolish Collaboration

Sometimes students share code by accident or without thinking about it. Here are some annecdotes to consider:

  1. Don’t post pictures that include your code to social media. That Instagram photo of you with your laptop that happens to have your code open might get used by someone else…
  2. When your friend emails you near the deadline and says “Hey, I finished the homework and got 100%! I feel great. Can I look at your solution so I can see how someone else did it?” What they really mean is, “This is due tomorrow and I don’t know what I’m doing. I’m going to message my gullible friend and trick them into sending me their code.” Even after the deadline you shouldn’t do this, because you never know if that student worked out an extension with the instructor.
  3. Your friend might come to you in tears because the homework is due soon and they haven’t solved it and if they fail then…
    … their family with disown them
    … they’ll be forced to leave the university when they fail the class
    … they’ll be forced to leave the university when they fail the class and then sent back to their home country
    … they’ll lose their scholarship
    … other very horrible situation
    So please can’t you help me! Usually these claims are exaggerated, even if only in the student’s mind. Even if they aren’t, the situation is complex enough that it isn’t wise for you to try and figure out what is best for that student. Encourage them to see their academic advisor and/or the instructor to discuss their situation. The faculty members are in the best position to be able to help. We don’t want to see students fail and get sent away, either. If you give them your code, they’ll definitely fail (for academic dishonesty) and this time they’ll take you with them.
  4. Sending someone a copy of your solution after the deadline. That student might have an extension that you don’t know about, or they may give your code to someone else that turns it in during a later semester.

9. Penalties

Penalties come from the course instructor and are decided based on the severity of the offense. Here are some past examples:

A letter will also be sent to student affairs, which in the case of repeat offences may lead to further penalties such a suspension or expulsion.

10. Plagiarism Detection

We will look for cheating using both automated and manual means. If you copy code, we will find you.

11. Regret Period

Sometimes people make mistakes. Sometimes they regret them. We’ve all done stupid things and wished we could take them back.

If you commit an academic integrity violation on the homework, but bring it to the attention of the course instructors and have an open and frank discussion about it within 48 hours of your submission, we will allow you to withdraw the submission with no further action taken beyond that. An individual student may invoke this policy at most once during the course.

12. Citations

Parts of the policy come from Kelly Rivers and 15-112 in Pittsburgh. The regret period is adapted from “Teaching Academic Honesty in CS50” by Malan et al.