We have a great set of assignments planned to give you practice with the material presented in lecture and section. Programming is a skill best learned by doing, and these assignments form an integral part of your experience in this course. These projects will be fun, challenging, illuminating, and rewarding. Your sincere efforts on the assignments will help you develop powerful skills and a deeper understanding of computational problem-solving.

Common questions about assignments

What programming environment and tools are used?

Programs are written in the C++ language, and we use the Qt Creator IDE for editing, compiling, and debugging. Please visit the Qt Installation Guide for install instructions.

What is the assignment schedule?

We have 7 assignments planned, about one each week, with a slightly longer break during the mid-quarter diagnostic. See the course schedule for our tentative plans.

What is the expected assignment workload?

Depending on the week's topics, the accompanying assignment may consist of written problems, hands-on exercises with the tools, targeted coding tasks, and/or a larger complete program. Students self-report spending between 10 and 20 hours on each assignment.

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?

The assignments are to be done individually and should represent independent, original work. We adhere to the Stanford and CS department Honor Code policies. Please review our Honor Code policy for specific examples of its application to our course.

How can we get help on our assignments?

The instructors will hold weekly office hours on Zoom. The course helpers and section leaders also staff regular LaIR helper hours over Zoom. Our online forum allows public Q&A and discussion with your peers, and we encourage all students to participate on the forum! For more detailed information about how to get help on assignments, check out the course communication guide.

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 rather than quantitative feedback:

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

How do we receive feedback from our grader?

Assignment grades and qualitative commented feedback from your section leader will be made available via Paperless.

What should I do if I feel like I didn't meet the learning goals of a particular assignment?

If you feel like you would benefit from another opportunity to revisit and resubmit and assignment, we will provide students the opportunity to submit revised assignment submissions, under a certain set of constraints.

Except for the final assignment, you will have the opportunity to submit homework revisions once you have received feedback from your section leader. By submitting a revised assignment, you can earn up to one bucket grade above your original grade, capped at a ✓. Revised assignments must:

  1. Fix existing bugs
  2. Not introduce new bugs
  3. Include your own test cases that would have uncovered the bugs previously in your program
  4. Be submitted within three days after the following assignment’s due date. (For example, if Assignment 2 is due on 7/10, revisions for Assignment 1 will be due on 7/13.)

A section leader will grade your revised assignment, but if you do not meet the above requirements, a higher grade is not necessarily guaranteed.