CSE Guide to the Honor Code

Overview

Students in all CSE courses are expected to abide by the Undergraduate Academic Code of Honor Pledge:

As a member of the Notre Dame community, I acknowledge that it is my responsibility to learn and abide by principles of intellectual honesty and academic integrity, and therefore I will not participate in or tolerate academic dishonesty.

An explanation of this pledge, and the consequences of breaking it, can be found in the Undergraduate Academic Code of Honor.

Below are some additional guidelines that may be helpful in CSE courses. However, in every course, the instructor has the final say about expectations of academic honesty.

Since there are various ways of using sources for assigned work, we distinguish them in two ways:

  • How is the source related to the assignment: Is it a general resource that you are drawing on to do the assigned work, or is it a solution to the assigned work?
  • How is the source used: Do you consult the source, or do you copy from it more or less verbatim?

A third distinction is the nature of the source: another person, a web page, a book, or a generative AI system like ChatGPT, LLaMA, or Copilot. (The examples below use ChatGPT, but should be understood to apply to any model of this kind.) Regarding ChatGPT and similar systems, the University’s Generative AI Policy for Students states that the output of these systems should be regarded as the work of another, not your own. Accordingly, in this document we largely treat all these kinds of sources in a uniform way (although instructors may have different policies for different kinds of sources).

For example, if your assignment is to write a C function that implements quicksort:

Consulting

Resources
  • You Google “quicksort” and read the Wikipedia article on quicksort
  • You discuss quicksort with other students
  • You ask ChatGPT, “Please explain quicksort to me, without writing code.”
  • You forget how to swap two variables, so you look on Stack Overflow to remind yourself
  • You forget how to swap two variables, and your friend reminds you
  • You ask ChatGPT, “How do you swap two variables in C?”, read the answer, and close the window.
Solutions
  • You Google “quicksort” and find a C implementation of quicksort
  • You look at another student’s C implementation of quicksort
  • You and another student write a C implementation of quicksort on the whiteboard, erase it, and you write your own implementation
  • You ask ChatGPT, “Please implement quicksort in C”, read the answer, and close the window.

Copying

Resources
  • You forget how to swap two variables, so you look on Stack Overflow and reuse code you find there
  • You ask your friend how to swap two variables, and you type what he/she says
  • You ask ChatGPT, “How do you swap two variables in C?”, and you copy and paste the answer.
Solutions
  • You look at another student’s C implementation of quicksort and retype it in your source file
  • You and another student write a C implementation of quicksort on the whiteboard and then you retype it into your source file
  • You find a C implementation of quicksort and copy and paste it into your source file
  • You ask ChatGPT, “Please implement quicksort in C”, and you copy and paste the answer.

A course syllabus might, for each of the four activities defined above, declare whether that activity is allowed, allowed only with proper citation, or not allowed.

For example, for homework assignments, the following policy is fairly common (but should not be assumed as default):

Resources
  • Consulting allowed
  • Copying cited

Solutions
  • Consulting not allowed
  • Copying not allowed

Under such a policy, you are free to discuss problems with others and search for information online, and you don’t need to cite them. If you quote from a source or reuse a piece of code, you should cite the source. But you shouldn’t look at other student’s solutions, and if you happen to find a solution in a book or on a web page, you should close it immediately.

If you are unclear about whether certain forms of consultation or common work are acceptable or what the standards for citation are, you responsible for consulting your instructor.

Resources vs. solutions

Every assignment comes with some requirement that you do some work, and that this work be your own. A source that partially or totally fulfills that requirement is a solution; anything else is a resource.

For example, consider again an assignment to implement quicksort. There’s no expectation for you to reinvent quicksort; therefore, talking to people about quicksort and reading about quicksort is making use of a resource. But an actual implementation of quicksort would fulfill the requirements of the assignment, so someone else’s implementation of quicksort (whether another students’ or from a book or online) is a solution.

Now imagine that your assignment is to come up with an idea for a mobile app and implement it. There’s probably no expectation for you to write every single part from scratch. So if your app contained someone else’s code for quicksort (with proper citation), that would probably be considered a resource.

So, whether a source is considered a resource or a solution depends on the assignment.

The same distinction applies when you use ChatGPT or a similar system. However, compared with other kinds of sources, these systems are particularly prone to providing more help than asked for, and can easily cross over the line from resource to solution.

When in doubt about how to distinguish between resources and solutions, you should ask your instructor.

Consulting vs. copying

The Honor Code follows standard practice from academia and intellectual-property law: if you use either the words or the ideas of someone else, you must properly cite them. (Standards for citation of generative AI systems are still evolving.) It’s part of your education to learn to follow this practice (and part of our job as faculty to teach you).

However, it is not always easy to know, either in school or in real life, where to draw the line. So we offer two more concrete criteria, one broader and one narrower, that are easier to apply.

Consulting

By “consulting” a source, we mean receiving any kind of information from the source, whether it’s a book or web page or another person or a system like ChatGPT.

If you are required to cite any sources that you consulted, the citation should identify the source and indicate what part of the assignment you were working on when you consulted the source. For example:

  • I worked on the whole assignment with John Doe
  • I referred to https://en.wikipedia.org/wiki/Quicksort for Problem 3
  • I asked ChatGPT to explain quicksort (https://chat.openai.com/share/555d8cfe-f185-4d7c-a92f-a16faad8167e). (Different instructors may have different guidelines for citing generative AI systems.)

If your instructor does not allow consulting other student solutions, note that:

  • You are also not allowed to show your solutions to another student. This also means that you may not post your solution in a public place, like a public GitHub repository.
  • As a possible exception, if you’ve finished your own work, your instructor may allow looking at another student’s work to provide help.

Copying

By “copying,” we mean electronic copying of data or reading/listening to a source while writing down what you see/hear. Copying while paraphrasing (e.g., changing variable names or replacing words with synonyms) is still copying.

Exception: In CSE courses, there are cases of boilerplate code or language that can always be copied without restriction. For example, no one would consider it plagiarism to copy int main (int argc, char *argv[]). When in doubt, ask an instructor or TA.

If you are required to cite any sources that you copied from, you must clearly indicate exactly what part of the assignment is copied from that source. In writing, this means following standard conventions (using quotation marks or indenting block quotes); in code, use comments to mark off exactly which lines, functions, or files are reused. For example:

// From stackoverflow.com/questions/40163283/swap-two-values-of-variables
int temp = x; x = y; y = temp; // End copy

// From stackoverflow.com/questions/40163283/swap-two-values-of-variables
void myswap (int *x; int *y) { int temp = *x; *x = *y; *y = temp; }

// From https://chat.openai.com/share/73f2eb58-8c6b-458d-8676-e94f8516ba4d
int temp = a;
a = b;
b = temp;
// End copy

Consequences

If an instructor sees behavior that approaches the border of academically dishonest behavior, and believes that further clarification is needed, he or she may (but is not required to) give a warning.

If an instructor sees behavior that is, in his or her judgment, academically dishonest, he or she is required to file either an Honor Code Violation Report (Procedural Appendix, 2.4.2.1) or a formal report to the College of Engineering Honesty Committee (Procedural Appendix, 2.4.2.4).