Assignments


Due Date Assignment Materials
Fri, May. 17 A5. TBA
Fri, May. 3 A4. Recursive Backtracking
Fri, Apr. 26 A3. Recursion Etudes
Fri, Apr. 19 A2. Fun with Collections
Fri, Apr. 12 A1. Getting Your C++ Legs
Fri, Apr. 5 A0. Welcome to CS106B!

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!

Common questions about assignments


What is the development environment for the assignments?

In CS106B, we write programs in the C++ language and use the Qt Creator IDE for editing, compiling, and debugging. Visit the Qt Installation Guide for instructions on installing these tools on your computer.

What is the expected assignment workload?

There are 7 assignments, you typically will have one week to work on each. Students self-report spending between 10 and 20 hours on each assignment. If you find yourself consistently beyond the upper end of the range, please reach out to us. 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 can help find a strategy that works for you.

What is the policy on late assignments?

  • Everyone has four late days to use on programming assignments at their discretion.
  • Late days are expended in 24-hour blocks. For example:
    • An assignment that is 4.5 hours late uses one full late day.
    • An assignment that is 27 hours late uses two full late days.
  • No individual assignment may be submitted more than 48 hours late.
  • If you run out of late days, we will accept one additional assignment late, as long as it is submitted within 48 hours of the original deadline, but the grade for that assignment will be capped at โœ“โ€“.
  • Late days are self-granted extensions and should be reserved for situations in which you would normally reach out to an instructor to ask for an extension on an assignment (e.g., illness).

We strongly encourage you to start all assignments as soon as they're posted (even if that means just glancing through the write-up to see what the assignment is all about) and to reserve your late days for situations in which you would normally reach out to an instructor to ask for an extension on an assignment (e.g., illness). Late submissions put extra pressure on your section leader to return feedback to you in a timely manner. We ask that you use them only when your situation requires it.

We do not anticipate granting further extensions on top of this late submission policy except in extreme circumstances. Only your instructor and Head TA can grant such extensions. Please reach out to us if you need to discuss, and please refrain from asking your section leader for an extension, as they do not have the authority to grant one.

What is the assignment collaboration policy?

Since this is essentially a beginning writing course, but writing code instead of essays, our policy is that assignments are written individually (no partners/groups). Later CS courses may incorporate team-based projects, and we strongly believe in the value of thatโ€”but after programmers have developed their individual skills in the fundamentals. Please review the CS106B 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?

Ask on our online discussion forum, bring questions to "Lair" helper hours, and/or attend office hours. Lair helper hours run 7-11pm Monday through Thurday. The forum is open 24/7 for discussion with your peers, and quick (though not 24/7, we do sleep!) answers from course staff. The instructor and Head TA are available to answer questions after lecture and in weekly office hours.

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.

grade description
+ 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. (letter grade 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. (letter grade range D/NP)

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.