Written by Julie Zelenski

Assignment materials

Assign0 : Testing Assign1 : Reassemble Assign2 : Searchdir-Synonyms Assign3 : CVector and CMap Assign4 : Bits Assign5 : Binary bomb Assign6 : Leak detector Assign7 : Heap allocator

Frequently asked questions about assignments

What is the expected assignment workload?

There are ~8 assignments over the quarter, spaced about weekly. The programming assignments are considered quite challenging and students self-report spending between 10 and 20 hours on each. Starting early and making steady progress has generally been a more successful tactic than attempting to cram the work into a single marathon session at the last-minute.

What programming environment and tools are used?

Students use their sunet accounts on linux myth machines, which are physically located in the Gates basement and support remote login. We use a suite of open-source development tools including gcc, make, gdb, valgrind, and Mercurial. Assignments are distributed to students as repositories, students edit, compile, and debug on the myth systems.

What is the policy on late assignments?

Students are rewarded with a bonus for on-time submission, late work is discouraged but handled neutrally, and there a hard deadline after which no further late work will be accepted. Read our detailed late policy for more details.

What is the assignment collaboration policy?

The programming assignments are to be done individually and should represent independent, original work. We adhere to the CS department Honor Code policy and offer specific examples of its application to CS107 coursework in our course collaboration policy. All students are responsible for carefully reviewing both of these documents and acting in accordance with them. We run all assignment submissions through a very thorough plagiarism detector and all suspected violations are handled by Stanford's Office of Community Standards.

How do I submit an assignment?

Assignments are submitted online using our submit tool on the myth systems.

How are assignments graded?

We consider both functionality and code quality. For functionality, we assess your program's effectiveness from an external perspective by testing its behavior on a broad range of inputs. For code quality, we run quality-based tests and read the code to see how readable, well-designed, and coherent it is. More detailed info about how assignments are graded.

How are assignments weighted?

The total number of points for an assignment is noted in its writeup. The points indicate the weight of that assignment relative to the others; i.e. an assignment graded out of 100 points has twice the weight of one graded out of 50. The coursework component (labs and assignments together) determine 50% of your course grade.

Do the assignments offer extensions for earning extra credit as in CS106?

No, but it's unlikely that you'll find the base assignment much too easy or boring! We pack them full of plenty of challenges and have high expectations of your work. Once you've nailed your submission, we have no further ambitions to own your time and encourage you to celebrate with a nap, a run, a conversation, or a good book.

I've heard about a chance to re-do a previous assignment to earn back lost points. Will we have that opportunity?

In some past quarters, we have tried this, but haven't been completely happy with the results and the pacing and logistics can be very challenging in the tighter quarters. We are unsure if/how we could re-structure it for a more satisfying experience. You should plan your quarter assuming it won't be offered, which means making a solid submission the first time around. We'll let you know if we change our mind about offering it.