Course Grades
The coursework consists of 7 weekly assignments and a final project. There are no exams. We look for your demonstrated accomplishment of the course learning goals through meeting the deliverables for assignments/project and sustained engagement with the material.
- Assignment deliverables
- Core functionality is "feature-complete"
- Timeliness in meeting schedule
- Bonus credits available for completing additional features
- Project deliverables
- Creative final project that is well-executed and shows proficiency with course material
- Engagement
- We encourage and recognize your contributions of E-P-C:
- Effort: growth mindset, willingness to challenge yourself, dedication to learning, continued improvement
- Participation: active involvement in lab, lecture, and forum
- Community: learning together, asking and answering questions, collaborating in lab, celebrating and supporting one another
- Together we can build a vibrant and interactive learning environment where all can thrive!
- We encourage and recognize your contributions of E-P-C:
Our grading system is designed to be entirely constructive. We celebrate and reward each of your accomplishments, whether that is tracking down bugs, keen participation in lab, implementing extended features, or making on-time submssions. Satisfying the base expectations listed below guarantees a course grade in the B range; your efforts to go above and beyond boost your course grade upward.
If you have your sights set on earning an A course grade, you will need consistently outstanding work:
- Assignment deliverables
- Core functionality is complete and correct (resolve all issues, revise and resubmit ok)
- Consistently good timeliness (submit on-time, swift resolution of outstanding issues)
- Earn 15 or more bonus credits (extended features can earn up to 2-4 credits, full system earns 6)
- Full system: assign7 console is polished and "ready to ship", uses only your code. This is a big achievement and great showing of mastery – way to go!
- Project deliverables
- Outstanding project (strong challenge, demonstrates mastery of course topics, excellent execution)
- Engagement
- Active and involved throughout (all labs, thoughtful completion of all style reflections, strong E-P-C contributions)
For a B course grade, we expect solid work that meets all base expectations:
- Assignment deliverables
- Essential core functionality is complete and correct (resolve all essential P1 issues, revise and resubmit ok)
- Ok on timeliness (submit within grace, issues resolved by Assign 7)
- Candidate for full system bonus
- Project deliverables
- Good project (shows skill on course topics, satisfactory execution)
- Engagement
- Good (all labs, some style reflections, positive E-P-C)
Work that is not completed satisfactorily will earn grades C and below.
Late Policy
The course moves at a steady clip and the weekly assignments build on one other. In our experience, one of the strongest factors in student success has been the dedication to stay on pace. Learning to set a schedule and manage your time to hit deadlines is a valuable skill to develop and an accomplishment you can be proud of. We designed our policy to encourage and reward good habits, but knowing that things come up, we have a standing grace period that provides a little flexibility if you need it.
- The submission deadline for the weekly assignments is 5pm Tuesday. An ontime submission earns a small bonus in timeliness. Kudos to you for pacing your work and shipping on schedule!
- There is also a 48-hour grace period after the deadline in which we accept late submissions. There is no penalty or cap applied to late submissions within the grace period, but they do not earn the timeliness bonus.
- Late submissions beyond the grace period are arranged with the course staff as warranted for exceptional circumstances.
- The final project must be submitted on time without exception.
Collaboration Policy
Adapted from CS107 policy by Julie Zelenski, some wording borrowed from a collaboration policy distributed by Brown CS.
Programming is a skill that can only be learned by doing. The assignments will require significant dedication from you, but we hope the time you spend will be fun, challenging, illuminating, and rewarding. 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.
All of you should be familiar with the principles of the Stanford Honor Code. The CS 106 policy further explains how it applies in programming 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.
Assistance that is allowed
These things are encouraged and allowed for all students, no citation needed:
-
Peer discussion about course topics, tools, techniques
Please do discuss all content from lectures, lab, readings, ask and answer questions about C and assembly, exchange tips for effective use of tools, and share useful resources. Talking things through with your peers can boost everyone's learning!
-
Use of our course materials
Our materials (lectures, labs, website, etc) have lots of useful code examples. Please use and build on these examples!
-
Discussion with staff
If you need to help with an issue specific to your design/code/debugging, please bring to the course staff. They are deeply knowledgeable of the course material and know how to guide without overly leading you.
-
Use of external resources for background information
You may search for and use external resources (web sites, blogs, forums, etc.) to further your understanding of course topics, languages, and tools.
Assistance that must be cited
Discussion specific to the particulars of an assignment should be cited. The particulars include the program's design, data structures, choice of algorithms, implementation strategies, testing, and debugging. Some examples:
-
Discussing your assignment design
Design is a crucial part of the development process, and we expect you to create a design on your own. Two students who have already each completed their own design could compare and contrast approaches. Both should cite this discussion.
-
Helping another student to debug
A student might describe symptoms to a peer who responds with suggestions (e.g. "it sounds like you might have forgotten to terminate the string" or "have you tried running under the gdb simulator?"). If you receive debugging help that was essential to your progress, please cite it.
-
Sharing test strategies or cases
If you discuss strategies for testing or jointly brainstorm test inputs (e.g. "be sure to test on oddball cases like
free(NULL)
"), please cite. -
Receiving help from an AI acting IFF in the role of "ethical tutor"
Use of AI tools (e.g. ChatGPT, CoPilot) is restricted to the kind of help that could be provided by a ethically-minded tutor. A good tutor can answers questions about your confusions, can provide clarification, can walk you through an example, can direct you to additional information, and so on. A tutor is acting as a sounding board for your own understanding and guiding without overly leading. If you used an AI as a tutor, you should cite the assistance you received. Note that a properly-trained tutor doesn't write code for you nor does it point out your bugs or tell you how to rewrite your code. Such uses are disallowed.
What is an appropriate citation?
A citation should be specific, complete, and truthful. Clearly identify the source of the help/discussion (person's
name, book title, URL), describe the nature and extent of the
assistance, and indicate how it influenced
your submission. Put your citations either in a README.md
or as comments in your code, either at the top of the file or next to the function/line for which you received help.
Assistance that is NOT allowed
Discussions should never become so detailed that they involve studying or exchanging passages of code. You should never be intimate with another's code nor allow others to be intimate with yours. Here are some specific examples of unpermitted aid:
-
Copying code
It is plagiarism to submit work as your own which is whole or in part copied or derived from the work of others .
-
Reviewing the code of another
You may not have another person "walk you through" their approach nor may you use their work "as a reference" to look at if you get stuck.
-
Joint development/debugging
Students may not jointly work together to develop a design, write code, or debug.
-
Use of external resources or AI tools for help with assignment-specific code
You should not be searching online for assignment solution code. Should you stumble across some accidentally, the correct response to about-face. You should not request assignment-specific code from external sources (e.g. StackOverflow) nor should you be using an AI tool (e.g. ChatGPT, CoPilot) to generate code for you or fix/debug your code.
-
Sharing your code
You must not share your code with other students nor publicly post it. After completing the course, you are expected to take reasonable security precautions to maintain your work privately.
Integrity as community
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 CS107e – we ask a lot of you and you will consistently meet those challenges in submitting your own authentic work. We demonstrate our respect and appreciation for your integrity by clearly stating our expectations and holding accountable those students who act outside the policy.