Collaboration and Honor Code policy

Written by Julie Zelenski, based on Stanford CS department policy

The programming assignments are an integral part of the CS107 learning experience. We have a great set of projects lined up for you and the time you spend designing your own solution and working toward its successful implementation can be fun, challenging, illuminating, time-consuming, rewarding, and frustrating. Your pride upon finishing is a fantastic high and your efforts earn you powerful skills and deep understanding. Don't cheat yourself out of this incredible learning opportunity! Borrowing someone else's design, building on another's code, being lead by another person, and other such "shortcuts" jeopardize the chance to develop your own mastery and compromise your integrity.

This document is designed to make clear our expectations and restrictions on collaboration. We expect your assignment submissions to be your own independent effort and not be derived from the thoughts and work of others. You should do your own thinking, your own design, your own coding, and your own debugging. This doesn't mean that you can't ask questions or get help when you get stuck, but any help must remain within acceptable limits and truthful citations must be made where required.

All of you should be familiar with the principles of the Stanford Honor Code. The CS department Honor Code policy further explains how it applies in CS courses. Students are to uphold their obligations to do honorable work and encourage others to do the same. On our part, we will treat students with trust and respect. When alerted to any possible infraction, we will protect the honorable students' interests by investigating and prosecuting dishonorable behavior.

Assistance that is allowed and requires no citation

These things are encouraged and allowed for all students:

Assistance that is allowed but must be cited

Whereas the discussions listed above are allowable, certain discussions require citation. The difference between the two comes in what is being discussed and in how much detail. You may discuss general topics (course materials, tools, language) in any depth without citation, but discussion or help specific to the particulars of an assignment requires citation. The particulars include such as things as the program's design, data structures, choice of algorithms, implementation strategies, testing, and debugging. Some examples:

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

Assistance that is NOT allowed

Whereas discussion as described above is acceptable if cited, these discussions should never become so detailed that they involve jointly writing or exchanging/sharing passages of code. The code you submit for grading must represent your original, independent work and it should not be developed in conjunction with or derived from anyone else's. You should never be intimate with another's code nor allow others to be intimate with yours. Here are specific examples of unpermitted aid:

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

If you are ever unsure whether something you intend to do is acceptable, play it safe and ask us first. A student's explanation that "I thought it was okay; I didn't learn the course policies" will not excuse the violation.

The Honor Code is a powerful assertion that we as a community proudly dedicate ourselves to upholding the highest standards of academic integrity. The vast majority will do right by CS107 -- we ask a lot of you and you will consistently meet those challenges by creating work that authentically represents your own effort. We demonstrate our respect and appreciation for your honor and efforts by doing our part to make absolutely clear our expectations and hold accountable those students who act in violation.

Frequently asked questions about the Honor Code and the course collaboration policy

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

We're delighted to hear that you are proud of your work and want to show it off! We are supportive, but ask that you contain the code to the intended audience. You may share your code via direct communication, privately-maintained repositories, restricted access, or another controlled channel. (as a suggestion, bitbucket.org offers academic users unlimited private repos). Making your code freely accessible on the web or maintaining a public repository at a code-sharing site will be a temptation for others who would exploit it. This is a bad situation we would much rather prevent than prosecute.

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 decline to aid or support 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 been said that "you're only cheating yourself". I do honest work; why do I care if another student doesn't?

It is sad that a student with the wherewithal to be granted the privilege of a Stanford education would disrespect it in this way, and it is certainly true that they are the one who stands to lose the most by their actions. You can feel secure that your hard work earns you knowledge, skills, and pride that they will never have. If even one acts in violation, it undermines the integrity of the system and the fairness by which we all treat one another. When 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.

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 other general-purpose advice and encouragement! You can also freely discuss course topics in general (examples in the green section above) and work through detailed examples from textbook, lectures, and labs. However, working together on an assignment-specific issue (especially such where you refer to your own code/design or study theirs) could lead to an inappropriate level of influence. If you do offer help that enters in the yellow areas above, confirm with the other student that they are prepared to make a proper citation. If not, you may want to reconsider your future involvement and email us to protect yourself from consequences stemming from lack of citation. In general, if asked for help working through assignment-specific issues, a good response is to refer your friend to seek out the course staff via forum, email, and office hours. We're happy to help!

I'm nervous about adding a citation, as I'm concerned it will cause my work to be scrutinized and suffer repercussions. What would you advise?

If you fear that citing your collaboration will invite trouble, your dilemma is not in whether to admit to it, but in reconciling that you are engaging in activities that you are not comfortable openly acknowledging. The choice to not cite your sources can be seen as trying to avoid drawing attention to actions you knew were dubious. You should only be engaging in collaboration that you are confident is appropriate, for which you have no qualms about openly citing. A citation that gives proper credit is not only welcome, but necessary. Citing appropriate help never causes a problem and often avoids them. Even in the case where the collaboration was inappropriate, a proper citation can downgrade the severity of the response (see below in "I messed up").

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

External resources can be used to research course topics and answer general questions, e.g. review two's complement addition, ask "does strncpy null-terminate the destination string?", or learn how to use a gdb watchpoint. You are not to search for nor use external resources to obtain 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 us -- come by office hours, post to the forum or send us email. We're happy to help!

Appropriate use of external resources does not generally require citation, but if your code/design was materially influenced by what you viewed, it is appropriate to cite that resource and indicate the affected passage.

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

Your primary obligation is to make an immediate about-face and follow up with us so we can arrange for its removal. If you peruse the code just "to see how they did it", you are headed down a slippery slope of being inappropriately influenced by its ideas 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 get my assignment finished. Help!

As much as we all intend and aspire to be worthy, in the heat of the moment with mounting pressures and the coincidence of opportunity, 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. Even better would be to reach out to me or someone else you trust and ask for guidance in working through a bad 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. Maybe you can find relief by allowing yourself to reset your expectations about the course grade you'll earn, changing the grading option to remove pressure, or even withdrawing from the course. 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 I suspect/know were 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. I am more than willing to work constructively with a forthright student who owns their behavior and seeks to make things right. Within a limited time frame, we can accept a request to retract the compromised work or allow an amended citation that properly credits its authorship. Acknowledgment of diminished self-contribution may result in discounted/zero credit for the work, but an accurate explanation rectifies the mis-representation that would have otherwise been the basis for a formal judicial charge. No matter what the violation or your follow up actions, it is never too late to change course and commit yourself to acting with integrity going forward. Even in the situation where a formal case is being pursued with the Office of Community Standards, a student's efforts to be upfront and cooperate in the process are considered favorably. In contrast, false denials and further prevarication will be treated as aggravating factors.

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.