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 graded on "functionality" (is the program's behavior correct?) and "style" (is the code well written and elegant?). We use a bucket grading scale to focus attention on the qualitative feedback comments graders leave you (rather than just points):

  • ++ An absolutely fantastic submission that will only come along a few times during the quarter across the entire class. To ensure that this score is given only rarely, any grade of ++ must be approved by the instructors and head TA.
  • + A submission that is "perfect" or exceeds our standard expectation for the assignment. To receive this grade, a program often reflects additional work beyond the requirements or gets the job done in a particularly elegant way.
  • ✓+ A submission that satisfies all the requirements for the assignment, showing solid functionality as well as good style. It reflects a job well done.
  • A submission that meets the requirements for the assignment, possibly with a few small problems.
  • ✓– A submission that has problems serious enough to fall short of the requirements for the assignment.
  • A submission that has extremely serious problems, but nonetheless shows some effort and understanding.
  • –– A submission that shows little effort and does not represent passing work.

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

How do we receive feedback from our grader?

Assignment grades and qualitative commented feedback from your section leader will be made available via Paperless. You will also meet with your section leader to discuss the grading feedback in a short conference.