Course Policies


Course Grades

The coursework consists of 7 weekly assignments and a final project. There are no exams. We look for your achievement of the course learning goals through meeting the assignment and project deliverables, demonstrating growth and proficiency, and sustained engagement with the material.

  • Assignment deliverables
    • Core functionality is "feature-complete"
    • Timeliness in meeting schedule
  • Project deliverables
    • Successful completion of final project that shows proficiency with course material
  • Engagement
    • Willingness to challenge yourself, dedication to learning, continued improvement
    • Active involvement in lecture, lab, forum, office hours
    • Show growth and mastery in written and verbal forms (code reflections, project writeup, interview assessment)

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.

Late Policy

The course moves at a steady clip and the weekly assignments build on one other. One of the strongest factors for student success in this course has been keeping 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 encourage and recognize your timeliness with a policy that rewards on-time submissions. However, knowing that things do come up, there is also a standing grace period for flexibility on the occasions you need it.

  • The submission deadline for the weekly assignments is 5pm Tuesday. An on-time 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/AI tools 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.

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

    You must not submit work for grading that is whole or in part copied or derived from the work of others. It is a misrepresentation to claim such work as your own, n matter where the code came from and who authored it (peers, found online, AI-generated).

  • Reviewing solution code that is not your own

    You should not be searching online for assignment solution code. Should you accidentally stumble upon it, the correct response to about-face. You should not request solution code from external sources (e.g. StackOverflow) or prompt an AI to generate solution code. You may not have another person walk you through their approach nor may you have their work as a reference to look at if you get stuck.

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

Assistance from generative AI

  • OK to use AI in role of "ethical tutor"

    Using an AI as a partner in your learning can be a wonderful thing. What's not to love about having a tutor available 24/7? Just be sure you're using it a sound and ethical way. Think of it as a tutor is who well-trained and committed to your learning. The tutor provides a sounding board for your own understanding and will avoid overly leading you. Ask your questions, have it walk you through an example, converse with it to refine your understanding, ask for additional resources, and so on. But asking it to do your work for you? No bueno!

  • Your code is not sent to AI nor do you take code from the AI

    Here is the bright line to not cross: code doesn't go back or forth: your assignment code is never sent to the AI and you never take code from the AI into your assignment. The code you submit for grading should be written, tested, debugged, and documented by you and you alone.

We know this course is challenging and requires a lot from you. The effort you put in will be rewarded with a deep understanding of the system from top to bottom, and we hope that earning that superpower is why you chose this course. Building a system that is wholly your creation is a huge accomplishment of which you will be crazy proud! It will take sustained effort through the highs and lows. If you are ever facing one of those lows and tempted to take an unethical shortcut, take a beat before making a choice you might regret. Please please consider reaching out to us. We are here to support you and want to help. Together we can map out a strategy to get you through this challenge without you having to compromise your integrity and leads to a positive outcome you can be proud of.