Honor Code and collaboration policy

Written by Julie Zelenski

tldr;

We follow the Stanford Honor Code and Stanford CS Dept Honor Code Rules. 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.

Stay true to yourself! The programming 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 I am committed to being a part of -- please join me!

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 programs 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

    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. Only after you completed your own independently-conceived design, you may compare and contrast with a peer who has also completed their own design. 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.

  • Re-using your own assignment work from a previous quarter

    This special rule applies to students who are re-taking the course. Re-using your previous quarter's work is generally permissible if the work was your original, independent creation and the self re-use is clearly cited. A specific exception to this general rule is the final project (heap allocator) on which any re-use is expressly disallowed. For the final project, a re-taking student must take a distinct approach from any previous submission and write new code and new documentation from scratch. Re-using the same design or borrowing code/documentation from a previous submission will not be considered a Honor Code violation, but such a submission will not be accepted for grading.

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 charging the misrepresentation as an Honor Code violation.

Assistance that is NOT allowed

Your code must not be developed in conjunction with or derived from anyone else's. You must never be intimate with another's code nor allow others to be intimate with yours. Here are specific examples of unpermitted aid:

  • Copying code

    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 is an entire program or just a small portion. You should never be in possession of anyone's else solution code, whether in printed, written, or electronic form.

  • 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 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.

  • Joint development/debugging

    You are not permitted to work with another to jointly develop a design, write code, or debug. Two students should never be working together on a passage of code/pseudocode 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, 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.

  • Sharing your code/design

    You must not share your code with individual students nor publicly broadcast it. You should not post your assignment 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. You are expected to take reasonable security precautions to maintain your work privately. If we request that you remove/protect code that has 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.

We would like to make our expectations as clear as possible so you will have no

Common 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 permission If the assistance is truthfully cited, even if impermissible, we can work with you to discount the work rather than handle as a Honor Code violation.

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

Foraging the web for background material and answers to general questions is perfectly fine, but you are not to 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 office hours, post to the forum or send us email

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

Your primary obligation is to make an immediate about-face and follow up with us. 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. Even if you manage to avert your eyes at first glance, knowing of an available solution can be a powerful siren song that calls you back if you get stuck or want a hint. Contact us immediately so we can take action to remove the temptation. In this way, it will no longer entice you or any other student who might use it in a moment of weakness.

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, I 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 me 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 me and I 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 me 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?

Yes, if controlled. We're delighted to hear that you are proud of your work, but 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 would exploit 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 the same. You are to 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 but 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, I much prefer that we talk face-to-face. Please directly contact me (Julie) to schedule a private meeting.