Honor Code and Collaboration Policy

Based on a document by Julie Zelenski


We follow the Stanford Honor Code. Work submitted for grading should not be derived from or influenced by the work of others. Do your own thinking, your own design, your own coding, and your own debugging. Any assistance you receive must remain within acceptable limits. Truthful citations must be made where required. All submissions are subject to plagiarism detection tools. Suspected violations are referred to the Community Standards office.

  • Handout - Honor Code Policy outlines our formal Honor Code policy. It is your responsibility to thoroughly read and understand this document and abide by its policies.
  • Handout - Tutoring Policy outlines our formal Tutoring policy. We welcome and encourage the use of tutoring for course support - please make sure to abide by these policies.

Stay true to yourself! The assignments are an integral part of the CS107 learning experience. These projects will be fun, challenging, illuminating, time consuming, frustrating, and rewarding. Your sense of pride upon finishing is well deserved and your efforts earn you powerful skills and deep understanding. Don't cheat yourself out of this opportunity! Borrowing or building on the work of others, letting someone else do the thinking or design for you, and other such "shortcuts" jeopardize the chance to develop your own mastery and compromise your integrity.

The Honor Code is a powerful community statement that asserts our shared values of integrity, fairness, and justice and asks each of us to uphold those shared values in both our personal actions and in setting collective norms. This is the community we are committed to being a part of -- please join us!

Assistance that is allowed and requires no citation

These activities are encouraged and allowed for all students:

  • Asking/answering questions about general course topics, programming languages, libraries, and tools

    For example: "Does strcmp compare strings case insensitively? What does the keyword static mean? What does this error message mean in a Valgrind report?"

  • Clarifying the assignment specifications

    For example: "Do the results have to be sorted? What is the expected response if the input is empty?"

  • Sharing generic advice and techniques for coding or debugging

    For example: "When my program crashes, I first look at the stack trace in the debugger. I used custom sanity check to test these kinds of inputs. Valgrind callgrind can help identify performance bottlenecks."

  • Use of web or public resources for background information

    You may search for external resources (web sites, blogs, forums, etc.) for help with general course topics, programming language and libraries, and to resolve technical difficulties in use of the tools.

  • Any discussion between student and staff (or use of provided course materials like slides, section handouts, lecture code)

    This is the best place to get help! These folk are deeply knowledgeable about the course and know to provide an appropriate level of assistance, without overly influencing or leading you.

Assistance that is allowed but must be cited

Whereas the general background assistance above is freely allowed, if you receive assistance that is assignment-specific or that influences your submitted work, it must be cited. Some examples:

  • Discussing the design of an assignment

    Design is a crucial part of the programming process, and we want you to learn to work through design problems on your own. You should only compare and contrast with a peer after you and your peer have completed your own independently conceived designs. You both must cite this discussion and note any ideas taken away from it.

  • Advising another student's assignment debugging

    A student could describe symptoms to a peer who helps analyze the situation and offers recommendations (e.g. "it sounds like you might have forgotten to terminate the strings" or "you might be accessing freed memory, have you tried commenting out all the free statements?"). This collaboration must be cited. Debugging aid should not involve sharing code nor jointly debugging.

  • Sharing assignment test inputs or strategy

    You may exchange strategies for testing a specific assignment, brainstorm together about test cases, and share text inputs, but this collaboration must be cited. No actual test code should be shared.

  • Reusing your own assignment work from a previous quarter

    This special rule applies to students who are retaking the course. Reusing your previous quarter's work is generally permissible if the work was your original, independent creation, you did not have any honor code issues or unpermitted collaboration with that work that quarter, and the self reuse is clearly cited. A specific exception to this general rule is the heap allocator assignment on which any re-use is expressly disallowed.

How to make a proper citation

A required citation must be specific, complete, and truthful. It should

  1. Identify the source (name of person, book title, url)
  2. Describe the nature and extent of the assistance (what information was given/received, how it was communicated)
  3. Indicate the influence on your work (what part(s) of design/code were affected and how)

A vague mention of "discussion with friends in my dorm" does not meet the obligations for a required citation. A misleading, incomplete, or untruthful citation can be considered an aggravating factor when a case is referred to the Office of Community Standards.

Failing to make a necessary citation can be charged as an Honor Code violation. Some former students have acknowledged they were unsure about the appropriateness of the assistance and chose not to cite to avoid drawing scrutiny. If in doubt, cite, as it is never a problem to give proper credit where due. If the assistance you cite was in fact impermissible, your honest representation of it allows us to adjust the appropriate credit, rather than charge the misrepresentation as an Honor Code violation.

Assistance that is NOT allowed

Your code or answers must not be developed in conjunction with or derived from anyone else's. You must never be intimate with another's code/answers nor allow others to be intimate with yours. Here are specific examples of unpermitted aid, though this is not an exhaustive list:

  • Copying code or answers

    It is an act of plagiarism to submit work which is copied or derived from the work of others and represent it as your own. The prohibition applies whether the amount of copied code or answer is an entire program or just a small portion. You should never be in possession of anyone's else solution code or homework responses, whether in printed, written, or electronic form. Thus, you are not allowed to solicit solutions from anyone. For example, it is a violation of the Stanford Honor Code to ask another student to share their answers with you, to ask a tutor to share other students’ solutions with you, etc.

  • Reviewing the code/design of another

    You are not permitted to have another person "walk you through" their approach nor may you use their work "as a reference" to look at if you get stuck. This prohibition applies to both written work, code and design, to isolated passages as well as the entire program, and whether the review is conducted verbally or in printed/written/electronic form.

  • Receiving tutoring help on graded work

    Tutors must not review, look at, offer advice, or otherwise offer assistance with any work that you will submit for a grade or which could be reasonably expected to be submitted for a grade. This means, among other things, that tutors cannot help debug or write code for or related to programming assignments.

  • Joint development/debugging

    You are not permitted to work with another to jointly develop a design, write code or answers, or debug. Two students should never be working together on a passage of code/pseudocode or response whether on paper, on a whiteboard, or in editor/debugger of a shared computer.

  • Use of web or public resources for assignment-specific code

    You should not be searching for solutions, whether in the form of code, pseudocode, written response or design. Should you find full/partial solutions anyway, you are to turn away and report the location to us. A submission must not be adopted from or influenced by study of any external resource. For example, it is a violation of the Stanford Honor Code to ask for answers on sites like Stack Overflow or Chegg.

  • Sharing your responses/code/design

    You must not share your responses or code with individual students nor publicly broadcast it. You should not post your assignment responses/code in a public site for the review of others nor ask in a public forum for others to resolve issues specific to your assignment code or responses. You are expected to take reasonable security precautions to maintain your work privately. If we request that you remove/protect responses/code that have been improperly shared, you must comply in a timely manner.

Note that the giver of unpermitted aid, i.e. the student who provides the assistance to another, can also be charged with a violation.

Use of Generative AI Tools

While artificial intelligence (AI) tools can be valuable in certain contexts, in this course it is important that you develop your own skills and abilities to write, debug and think critically, without the use of this technology. For the assignments in this course, it will be the effort and process (not just the product) that is most valuable to your learning, and while useful, AI tools can inhibit the gains from working through this process. For that reason, you should only use AI tools in the same way that you would ask a friend in the class for help, as documented above – high level questions, citations where needed, etc. For example, you should not use AI tools to write code/responses for you on assignments or any graded work. Another example is you should not input your code to AI tools to ask questions about it. Doing so is a violation of the Stanford Honor Code. Instead, please take advantage of the support resources above - we are eager to help!

We would like to make our expectations as clear as possible to remove ambiguity about collaboration in the class. We have answered more common questions below, and are happy to answer further questions in person, in our online forum, or via email.

Frequently Asked Questions

I'm a current/former CS107 student and a current student asks me for help. What are appropriate ways to help?

Please do share tips about effective use of tools, development/debugging strategy, resources to tap into, and offer broad advice and encouragement! You can also discuss course topics in general and work through examples from textbook, lectures, and labs. Do not engage in discussions of assignment-specific code (yours or theirs). If the assistance you offer is within the yellow activities above, confirm with the other student that they will make a proper citation. If not, you can email us to explain and protect yourself from consequences stemming from lack of citation. If asked for help on assignment-specific issues, best to refer your friend to the course staff -- we're happy to help!

I'm concerned that adding a citation will cause my work to be scrutinized and suffer repercussions. What would you advise?

A citation that gives proper credit is not only welcome, but necessary. Citing appropriate help never causes a problem and often avoids them. Your upfront acknowledgement of the assistance you received is a strong indication that you believed your actions to be permissible. If the assistance is truthfully cited, even if impermissible, we can work with you to discount the work rather than handle it as an Honor Code violation.

Can you further clarify appropriate and inappropriate use of external resources?

Sure! Foraging the web for background material and answers to general questions is perfectly fine, but you should not search for or use solutions/answers to assignment-specific tasks. The prohibition applies to solutions in any form (e.g. design, algorithm, code, pseudocode) and whether a complete solution or just part. A few examples of inappropriate use: searching for code to implement portions of the assignment, adopting pseudocode found on Wikipedia for an assignment-specific algorithm, or posting a broken passage of your assignment code on StackOverflow and asking others to debug it. When you have assignment-specific issues, the appropriate resource to tap into is the course staff -- come by helper hours or post to the forum; we are happy to help!

I have stumbled across what appears to be a full/partial solution that is public. What should I do?

Your primary obligation is to immediately close the resource and follow up with us about it. If you peruse the code just "to see how they did it", you are headed down a slippery slope of being influenced by what you read and can easily lead to adoption of its approach and copying of code, and a potential Honor Code violation. Contact us immediately so we can take action to remove the resource so you and other students are not tempted to use it.

I'm in a tough situation (out of time, behind on material, stressed) and my panic has me considering less-than-honorable ways to complete my assignment. Help!

As much as we all intend and aspire to be worthy, in the heat of the moment, pressure and temptation can weaken resistance. If you find yourself vulnerable, We ask you to please, please, please step away from any immediate action. Taking a break or getting a good night's sleep may be enough to restore your sense of perspective. Reach out to the course staff or someone else you trust and ask for guidance in working through a tough situation. There are always other options. You can ask for more help, you can take a late day, you can submit a program that's known to be imperfect, or you can not submit a program at all. Even the most drastic of these options has consequences that are small potatoes compared to compromising your character and facing judicial charges. Please come to us, or contact the instructor individually, and we promise to support you in finding a way through your situation that will maintain your integrity.

I messed up. I took actions that were possibly in violation of the Honor Code. What do I do now?

Acknowledging responsibility to yourself is a hugely difficult but very important first step. Your next step is to reach out to us so we can work together to find a way for you to move forward with integrity. A timely request to retract a compromised work or apply an amended citation that properly credits authorship could rectify the misrepresentation that would have otherwise been the basis for a formal judicial charge.

Can I include solution code in my portfolio for internship/scholarship applications?

We're delighted to hear that you are proud of your work and want to share it! That being said, please ensure it does not go beyond its intended audience. You may share your code via direct communication, privately maintained repositories, restricted access, or another controlled channel. Do not make your code freely accessible on the web or put in a public repository at a code sharing site where it will be a temptation for others who might use it.

What does it mean to have "third party responsibility" under the Honor Code?

The students and faculty agree to work together to establish and maintain standards for honorable work. Students are not the primary enforcers of the policy, but they give meaning and value to the Honor Code by showing their respect for it and encouraging others to do the same. You should model appropriate behavior in word and deed and should not abet another's actions in violation. If asked by another to act inappropriately or you observe something improper, take reasonable action to rectify the problem: draw attention to it, ask the student to stop, remove the temptation, or alert the course staff.

It's said that "you're only cheating yourself". I do honest work; why do I care if another student doesn't?

Thank you for your commitment to integrity! We validate and celebrate your honest work. If dishonest dealings are rewarded with course grades as good or better than those given for sincere achievement, it diminishes us all. We demonstrate our respect for those who do right by holding accountable those who do not. We ask you to do your part by not providing unpermitted assistance nor giving tacit approval to dishonorable actions.

How do I follow up on a sensitive/confidential matter?

These conversations can be difficult and, knowing that email is susceptible to misunderstanding, we recommend directly contacting the instructor to schedule a private face-to-face meeting.