Summer 2025
Important course announcements will be posted below and announced in class. You are responsible for all material that appears here and should check this page on a regular basis.
Announcements
Scroll to see more announcements. Updates will also be posted on the discussion forum.
-
Assignment 6 Posted! Friday August 1 The final assignment, Assignment 6 has been posted in the assignments dropdown. It is meant to act as a capstone for all the topics we've covered this quarter by implementing your very own heap allocator! We hope you have fun with it. It is due Thursday 8/14 at 11:59PM PT and no late submissions are accepted on this assignment, whether or not you have free late days remaining, except OAE accommodations. There is also a checkpoint deadline by which point you need to submit the first part of the assignment (the implicit allocator). You can find more details on the assignment page.
-
Assignment 5 Posted! Friday July 25 Assignment 5 has been posted in the assignments dropdown. It is meant to reinforce the topics of assembly translation, reverse engineering, and trust and privacy. The backstory: you have been hired as a security expert for Stanford Bank (a fictional on-campus bank). They need you to investigate reports of infiltration and security issues and replicate the issues so that they can fix them. There are three parts to this assignment, and each one will have you investigate supposed vulnerabilities and assess the risks the bank faces. These problems are like C/assembly "puzzles" to solve, and we hope you enjoy solving them and exploring this material as much as we enjoyed creating them! The assignment is due Friday 8/1 at 11:59PM PT. You can find more details on the assignment page. We strongly recommend getting started early on this assignment!
-
Assignment 4 Posted! Friday July 18 Assignment 4 has been posted on the assignments page. It is meant to reinforce the topic of generics, disclosure and partiality,
void *pointers and function pointers, with exercises ranging from implementing your own version of thelscommand to implementing your own version of thesortcommand. We hope you have fun with it! The assignment is due Friday 7/25 at 11:59PM PT. You can find more details on the assignment page. -
Assignment 3 Posted! Friday July 11 Assignment 3 has been posted on the assignments page. It is meant to reinforce the topic of pointers, arrays and heap allocation, with exercises ranging from implementing a convenient version of a C file I/O function to implementing your own versions of the Unix "tail" and "uniq" commands. We hope you have fun with it! The assignment is due Friday 7/18 at 11:59PM PT. You can find more details on the assignment page.
-
Assignment 2 Posted! Friday July 4 Assignment 2 has been posted on the assignments page. It is meant to reinforce the topic of C Strings and thorough documentation, with exercises ranging from implementing tools to display environment variables to implementing your own version of the Unix "which" command. We hope you have fun with it! The assignment is due Friday 7/11 at 11:59PM PT. You can find more details on the assignment page.
-
Assignment 1 Posted! Friday June 27 Assignment 1 has been posted on the assignments page. It is meant to reinforce the topics of bits, bitwise operators, and integer representations, with exercises ranging from implementing the core "saturated arithmetic" algorithm to a bit-level particle simulation to understanding the effects of integer representations on real-world software. We hope you have fun with it! The assignment is due Friday 7/4 at 11:59PM PDT. You can find more details on the assignment page.
As you start working, we want to include a reminder about the course style guide; it contains an in-depth reference about how to ensure your programs have great style! We have also added a newcodechecktool to this assignment - check out the spec for more information. -
Assignment 0 Posted! Mon. Jun 23 Assignment 0 has been posted under the assignments tab. It is meant as an introduction to Unix and C, with exercises ranging from uncovering who got unauthorized access to a filesystem to modifying a provided C program to accept command-line arguments. We hope you have fun! The assignment is due Fri. 6/27 at 11:59PM PST.
-
Welcome! Mon Jun 23 Welcome to CS107! Class starts on Monday, June 23rd at 1:30 PM in Gates B3. We are looking forward to meeting you and starting off a great quarter together! In the meantime, please feel free to check out the updated FAQ. It covers questions about recorded lectures, conflicting classes, and more. We hope you find it helpful! CGOE students, please check out our CGOE handout for more information on CGOE logistics.
Course Logistics
Lectures: Mon/Wed/Fri 1:30 PM - 2:45 PM in Packard 101
Labs: Will be announced soon
Exams:
-
Midterm Exam
Date/Time: Wednesday, July 16th, 1:30PM-2:45PM PDT
Location: Packard 101
Info: midterm webpage -
Final Exam
Date/Time: Friday, August 15th, 3:30PM-6:30PM PDT
Location: Hewlett 201
Info: final exam webpage
Submit our Exam information form if at least one of the following applies:
- have an academic or University conflict with the midterm time, and absolutely cannot make the regularly scheduled midterm.
- are a CGOE student wanting to take exams on campus
- if you want a left-handed desk when assigning seating for the exams
Feedback
- How are we doing? Submit anonymous feedback here.
- Submit feedback about a specific piece of coursework (assignments or exams) here
Course Staff and Contact Information
For any OAE accommodations, please submit your OAE letter via our OAE accommodations form here, and the Head TA will follow up with more information.
Instructor email: akeppler@stanford.edu, oadekola@stanford.edu
Head TA email: bbyan@stanford.edu
Note that email is not intended for course material or code questions; for those questions, please take advantage of the discussion forum or helper hours!
Meet the Staff
Adam Keppler (Instructor)
Ola Adekola (Instructor)
Ben Yan (Head TA)