Course Policies


Course Grades

The coursework consists of 7 weekly assignments and a final project. 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, working full system
  • Project deliverables: successful project that shows proficiency with course materials
  • Engagement: active participation, growth through the quater

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.

The base expectation is solid work in all three areas. Satisfying the base expectation guarantees a course grade of at least B.

  • Assignment deliverables
    • Essential core functionality is complete and largely correct, candidate for full system
    • Ok on timeliness (submit within grace, issues resolved by Assign 7)
  • Project deliverables
    • Good project (shows skill on course topics, satisfactory execution)
  • Engagement
    • Steady (consistent attendance lecture and lab, ok growth/mastery)

The course grade goes up from there in recognition of all the ways in which you go beyond meeting the base requirements:

  • Assignment deliverables
    • 🥭 Libmango is completely and fully correct
      • all P1 & P2 issues resolved (P3 is nice-to-have also)
    • 🥭 Full system demo and interview
      • Sign up for interactive grading session to demo your work and discuss with us
      • Give us a demo of your full system that shows it is robust, complete, and "ready to ship"
      • We'll also do a friendly interview assessment to hear more about your work and your growth and mastery
    • 🌱 Consistent good timeliness (submit on-time, swift resolution of outstanding issues)
    • 🌱 Responsiveness to feedback, code refinement, skill progression
  • Assignment extensions
    • No extensions required for base expectation, but help unlock A grade. Not expected to go hard on all/every extension but hope you will try a few and see where your curiosity leads!
    • 🌻 Small creative enhancement
    • 🌻🌻 Implement more involved extended feature(s)
    • 🌻🌻🌻 Deep dive into new territory, build impressive mega-extension
  • Project deliverables
    • 🥭 Outstanding project
      • Strong challenge, demonstrates mastery of course topics, excellent execution
      • Polished and successful demo at the final project show
  • Engagement
    • 🌱 Attentive and involved during lectures and labs, arrive on time
    • 🌱 Good conversations in office hours, show curiosity and dedication
    • 🌱 Constructive contributions to community, helpful interactions with peers in person/forum
    • 🌱 Demonstrate growth through the quarter

🥭 is a landmark achievement that we value highly and demonstrates mastery of the course learning goals – bravo! 🌻 is a reward for going above and beyond to learn and do more – neat! 🌱 is a small nod to your effortful dedication to learning, active participation, and growth – nice!

Aiming for an A? Set your sights on nabbing the big three 🥭 accomplishments and gathering some 🌱 and 🌻 along the way to construct your awesome A-worthy Garden of Achievement.

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 any content from lectures, lab, readings, ask and answer each other's questions, 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 many handy code examples. Please use and build on these examples!

  • Discussion with staff

    If you need help specific to your code/debugging, please come to office hours or make a private post on the forum 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 use external resources (web sites, blogs, forums, etc.) and conversations with AI tools 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 at a high level. 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.

Having an assignment-specific discussion with an AI tool and receiving help that influences your submitted work should be cited in the same manner as a conversation with a peer.

How to make a proper 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/adapting code of others

    You must not submit work for grading that is whole or in part copied or derived from the work of others. This prohibition applies no 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) nor prompt an AI to generate solution code. You should not have another person walk you through their approach nor should you have solution code as a reference to look at if you get stuck.

  • Sharing your code

    You must not share your code with other students nor send to an AI tool for its review. 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 an attentive personal tutor available 24/7? Just be sure you're using these tools in a sound way that doesn't compromise your learning. Approach the conversation as a dialog with a well-trained and ethical tutor, who wants to help you learn how to do the work for yourself, not do the work for you. Use the tutor as a sounding board, pepper it with questions, have it walk you through examples, converse with it to refine your understanding, have it direct you to additional resources, and so on. Many of these conversations do not require citation, however, if the assistance you receive crosses into assignment specifics such that must be cited (as described above), please make a proper citation of that influence.

  • 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/work is never sent to the AI and you never take code from the AI into your assignment. All of the code/work you submit for grading should be written, tested, debugged, and documented by 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. Building a system that is wholly your creation is an accomplishment of which you will be crazy proud! It will take sustained effort through both the highs and lows. If facing one of those lows ever has you tempted to take an unethical shortcut, take a beat and reconsider before making a choice you might regret. Please please please reach 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.