Written by Julie Zelenski, with modifications by Nick Troccoli

Assignment Materials

Note: assignment materials will be posted here when they are announced and released in class.

Tip: some students have found it helpful to use web annotation/highlighter tools (e.g. roohit,, getliner...) to mark key passages of the assignment writeups when working.

Working on Assignments covers instructions and tips on how to work on, sanity check and submit your assignments.

Software Testing Strategies formalizes testing ideas and processes that you will practice on your assignments. You're encouraged to reread this page once you are comfortable with the assignment workflow.

Style guide has a guide to good style on CS107 programs.

Assignment Grading has more information about how assignments are graded.

Frequently Asked Questions

What is the expected assignment workload?

There are roughly 5-6 assignments and a final project over the quarter, each spaced about a week. These are largely programming projects with occasional problem-set-like activities mixed in. Students self-report spending between 10 and 20 hours on each.

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. Students edit, compile, and debug on the myth systems using a suite of open source development tools including gcc, make, gdb, and valgrind. See the Resources page for an overview of these tools and how to log into myth remotely.

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.