COMS 3157 Advanced Programming

Academic Honesty Policies


This document describes academic honesty policies in effect for COMS 3157. 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 COMS 3157.

Please read the Computer Science Department’s Academic Honesty Policies & Procedures before you proceed.

This document is adapted (with permission) from the policies of Prof. Jae Woo Lee, who taught this course in semesters past. First-person pronouns (e.g., I or me) refer to the instructor, John Hui; second-person pronouns refer to students taking COMS 3157. I use 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 is cheating

One way to define cheating is in terms of what sources you consult in completing your assignment. I consider the following to be “cheat code”:

The last category is tricky to define precisely, since it is easily conflated with educational material that you have every right to consult and learn from.

Another way to define cheating is to compare your intent with that of the assignment. For example, let’s say you found on Stack Overflow 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. If figuring out how to compute that number was a major portion the assignment, then what you have done clearly constitutes cheating, since by looking up that code you are trying to avoid most of the work the assignment is asking you to do. However, if you use those 10 lines to supplement a 500-line Todo list project, I do not consider that cheating, since you did not try to sidestep the main learning objective of the assignment.

You should cite all sources you come across when completing an assignment, even those that you don’t end up using. If you ever have any doubt about whether a source might be considered cheat code, please consult the teaching staff.

To clarify some boundaries about what constitutes cheating, I describe some concrete examples of cheating, based on scenarios the teaching staff and I have encountered in the past.

If you look at cheat code, you are cheating

Perhaps you struggled for hours or even days to complete the core part of an assignment. You overheard that a past student’s solution can be found on the internet, so you looked it up and compared it with your code to see what you could be doing wrong. This is cheating, even if you didn’t copy a single line of code, even if you didn’t learn anything from the online solution and independently solved the problem later.

If you possess cheat code, you are cheating

Perhaps you obtained a zip file containing the last semester’s solutions. Maybe you never intended on using it, and wanted to have it just in case. This is cheating. If anyone offers you solutions, you should refuse.

I make an exception for past COMS 3157 exams and solutions. I do not consider possessing COMS 3157 exams cheating, since you are not substituting your own work this semester with someone else’s. In semesters past, Prof. Jae Woo Lee released PDFs of his exam and solutions immediately after the exam, because going over an exam you just took is a critical part of the learning process. You are free to use those past exams to help you study, though during the semester I will also release a subset of past exams based on what I plan to put on upcoming exams. However, you should not post past exam material anywhere else (e.g., on CourseHero), since that is copyrighted material.

If someone is telling you what code to write, you are cheating

Perhaps you have a friend who helps you with homework—let’s call them Alex. Alex would sit down with you while you work and give you clues about the assignment while you type. However, sometimes the clues don’t get across the way they are intended, and in their frustration, Alex resorts to dictating snippets of code that you type out and piece together.

This is cheating, since you are basically indirectly copying Alex’s code. And you are deluding yourself if you think this is learning: your role here is way too passive for any meaningful learning. Having a tutor is not cheating in and of itself, but teaching someone without giving away answers is not easy. If you really must get private help, I recommend that you do so without sitting at a computer. Work everything out on paper through tables and diagrams.

Penalties for cheating

I reserve the right to impose any academic penalty, including giving an F, for any case of academic dishonesty. Here are some things that may happen if I encounter cheating:

The exact penalty will depend on the severity and extent of cheating.

Your pledge

As part of the first assignment, you will be required to digitally sign the following pledge—i.e., send me an email containing the pledge, alongside other information requested in the assignment:

I have read and understood the following two documents:

  1. CS department's Academic Honesty Policies and Procedures
  2. John Hui's Academic Honesty 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 privately share your code with 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.

Last updated: 2022-08-30