Honor Code and Collaboration Policy
Written by Michael, with much inspiration and wording from Julie Zelenski and the CS107 policyWe follow the Stanford Honor Code and CS Department Honor Code Rules. All work submitted for grading must be your original, individual work, independently designed and developed without the use of unpermitted aid. We reserve the right to use software tools to compare your submissions against those of all other current and past students, and we will refer all suspected violations to the Office of Community Standards.
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. The vast majority of you are here to learn and will do honest work. We set and maintain these policies in recognition of your commitment--to ensure that everyone plays by the same rules and to celebrate and honor your hard work. This is the community we are committed to being a part of.
The remainder of this page provides specific details and examples of permitted and unpermitted aid. Our goal is to be unambiguous and set clear expectations. You are responsible for reading and understanding this policy in full. If you are unclear on any specifics or unsure if something is permissible, please reach out to us.
Assistance that is allowed and requires no citation
The following forms of collaboration are allowed--and indeed, encouraged--without the need for a citation:
- Discussing general course topics and sharing advice and ideas about tools, techniques, and best practices
Examples: asking and answering questions about syntax shown in lecture, sharing tips about effective use of IDEs and debugging tools - Clarifying the assignment specifications and requirements
Examples: "Do we need to handle this case?" "What does it mean when the assignment says ____?" - Using technical documentation and references
Examples: MDN syntax and function documentation, API references, accessibility guidelines - Using external resources for general course topics and background information
Examples: a Flexbox tutorial,async
/await
examples, StackExchange questions about technical issues with tools - Discussing coursework with the course staff
The course staff are here to help! They are comfortable with the material and assignment requirements and can help solidify your understanding or get you unstuck without overly influencing your design and implementation strategies.
Assistance that is allowed but must be cited
If you receive assignment-specific information from someone other than a member of the course staff, you must include a citation (details below). This could include the following:
- Discussing the design of an assignment
Software 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. - Receiving advice on debugging
This might take the form of describing your symptoms and getting recommendations about what the root cause may be. This must not include sharing or looking at code nor jointly debugging a submission. - Sharing testing strategies or test cases
This might include brainstorming about different inputs to try or discussing strategies for testing specific parts of a problem. No code, including testing code, should be shared.
Assistance that is NOT allowed
- 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. This is disallowed whether the amount copied is an entire program or a small passage and even if it has been modified or reorganized. You should never be in possession of anyone else's solution code or answers, in any form. - Reviewing the code or design of another person
You are not permitted to have someone "walk you through" their approach nor use their work "as a reference" to look at if you get stuck. This prohibition applies not just to solution code but also to designs, pseudocode, and any other form of assignment-specific material. - Using web or other external resources for assignment-specific code
You should not search for solutions to assignment tasks, 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. - Jointly developing or debugging assignments
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 design whether on paper/whiteboard or in editor/debugger. - Sharing your code or design
You must not share your responses or code with individual students nor publicly broadcast it. You may not post your assignment solution 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 design. You are expected to take reasonable security precautions to maintain your work privately. If we request that you remove or protect solutions or 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.
A note about ChatGPT and other AI tools
These tools can be extremely powerful for experienced developers. However, in our experience, that power is of limited help without the conceptual underpinnings to recognize when they produce incorrect or stylistically poor results. Moreover, web development has evolved quite rapidly over the years, and there are many deprecated or inconsistent techniques still in relatively wide use (and thus contained in these tools' corpora).
To that end, and consistent with the BJA's guidance, using ChatGPT will be treated as consulting another person. This means, in part,
- You may use these tools to learn general course topics without citation.
E.g. you may ask for examples of how to use a particular function. - With citation, you may consult these tools for debugging and testing strategies.
For example, you may ask about errors you are getting. - You may not use AI tools to aid in the writing of assignment code.
This means you are not permitted to paste your code into a tool or copy or adapt the tool's output into your assignment submission.
How to make a citation
A valid citation must be accurate, specific, and complete. This means it must include the following:
- The source (name of person, book title, website URL)
- The nature and extent of the assistance (what specific information was given/received)
- The influence on your work (what part(s) of design or code were affected and how)
A vague mention of "discussion with friends" does not meet the obligations for a required citation. Failing to make a necessary citation can be charged as an Honor Code violation.
If in doubt, add a citation. It is never a problem to give proper credit where due. If the assistance you cite is permissible, you are covered. If not, your honest representation of it allows us to adjust the appropriate credit, rather than charge the misrepresentation as an Honor Code violation.
Exceptions for the final project
The final project is open-ended, and we encourage you to create something useful and meaningful to you and the communities you are part of. Toward that end, we have a few exceptions to the above rules, as follows:
- You may publish your project publicly or integrate it into a larger work.
We hope that you are proud of what you've accomplished and want to share it with the world! - You may discuss project ideas, get feedback, and ask for and provide user testing. Always give credit where it is due.
Creating something awesome that users find helpful is difficult, so we encourage you to solicit feedback and iterate. It's important whenever we create or contribute to work to credit and acknowledge others' contributions, in recognition of their time and effort. - With citation and staff permission, you may use some third-party libraries and code in your project.
We expect your project to demonstrate your understanding of the course material, so these libraries should not significantly impact your core layout and software design. For example, it may be helpful to use a plotting library to assist in visualizing data, but we will not approve the use of a large frontend framework. - With citation and staff permission, you may integrate your project with another student's.
We expect each individual project to make use of the full breadth of topics in the course. But if you are looking to create something larger with a peer, we are happy to discuss ways to define the boundaries between projects. For example, your project may benefit from another project's API.