Programming is a skill best learned by doing, and the programming assignments in CS106B form the central skill development part of your experience in the course. We have a great set of assignments planned that we hope you will find fun, challenging, illuminating, and rewarding. There are 7 assignments, about one each week with breaks around the two exams (see the course schedule for tentative assignment dates). Students self-report spending between 10 and 20 hours on each assignment. If you find yourself heading towards the upper end of that range for an assignment, please reach out to course staff for tips. Our workload is challenging because we want to foster the most growth possible for you in our 10 weeks together, but we do want the total hours to stay within reason for a 5-unit course and are happy to work with you towards that goal. In CS106B, we write programs in the C++ language and use the Qt Creator IDE for editing, compiling, and debugging. Please visit the Qt Installation Guide for install instructions.

Common questions about assignments

What is the policy on late assignments?

Students are granted a penalty-free grace period for submission on each assignment, the length of which depends on the specific assignment. Read our course late policy for the details.

What is the assignment collaboration policy?

Since this is essentially a beginning writing course, but with code instead of essays, we have a policy that assignments are done individually (no partners/groups). In later CS courses, you will often encounter teamwork-based programming, and we believe strongly in the value of that—for programmers who have already developed some individual skills in the fundamentals. We adhere to the Stanford and CS department Honor Code policies. Please review our Honor Code policy for guidelines specific to this course (i.e., do not assume that what is ok in other classes is necessarily ok in this one).

How can we get help on our assignments?

Your main starting points for help are the online forum and the nightly virtual drop-in "Lair" help hours with the section leaders (undergraduate TAs). The online forum alows 24-hr access to discussion with your peers, and quick (though not 24-hr, we do sleep!) answers from course staff. The instructors will also hold weekly office hours where you are welcome to discuss assignments or other topics.

How are assignments evaluated?

Programs will be evaluated on "functionality" (is the program's behavior correct?) and "style" (is the code well written and elegant?). We apply a bucket grading scale for a wholistic qualitative evaluation rather than fixate on individual points. To learn from the grading feedback, focus your attention on the qualitative comments and the discussion with your SL in IGs.

  • + A submission that is "perfect" or exceeds our standard expectation for the assignment. To receive this grade, a program reflects additional work beyond the requirements or gets the job done in a particularly elegant way. (letter grade A+)
  • ✓+ A submission that satisfies all the requirements for the assignment, showing solid functionality as well as good style. It reflects a job well done. (range A/A-)
  • A submission that mostly meets the requirements, with some small issues or oversights. (letter grade range B+/B)
  • ✓– A submission that is a good attempt at meeting the requirements, but falls short in some ways. (letter grade range B-/C+)
  • A submission that exhibits serious problems, but nonetheless shows some effort and accomplishment. (letter grade range C/C-)
  • –– A submission that shows low effort or does not represent passing work.

From past experience, we expect most grades to be ✓+ and ✓.

How do we receive feedback from our grader?

You can view your submission on Paperless with comments and annotations from your grader along with the bucket scores for functionality and style. For some assignments, you will also meet with your section leader to discuss the grading feedback in a short IG ("interactive grading") conference.