Based on a document by Julie Zelenski
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 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
strcmpcompare strings case insensitively? What does the keyword
staticmean? 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
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 and the self reuse 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 retaking student must take a distinct approach from any previous submission and write new code and new documentation from scratch. Reusing 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
- Identify the source (name of person, book title, url)
- Describe the nature and extent of the assistance (what information was given/received, how it was communicated)
- 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 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:
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.
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 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 office hours, post to the forum or send us an email; 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.