Computer Organization & Systems

Winter 2021

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 for updates frequently.


  • Sign up for TreeHacks! Sun. Jan 17 by Lisa A CS107 alumna has asked to share the following announcement with all CS107 students: TreeHacks, Stanford’s largest annual hackathon! Applications are open at until January 24th - Stanford students get in automatically! TreeHacks is beginner-friendly, committed to supporting diversity and inclusivity, and prepared with a ton of incredible learning opportunities to fuel your high-impact creation. You can find more info about this year’s challenges and applying at or through Instagram or Facebook. Come to make lifelong friends, meet reps from future employers, and build something you really care about.

  • Helper Hours Schedule Posted Mon. Jan 11 by Lisa We have posted information about Helper Hours on the Getting Help page. We'll be using a tool called Nooks this quarter to facilitate Helper Hours and staff shifts during Helper Hours. Please join our Nooks community to work with other students, and to get help from the TAs! You don't need to have questions to come by Helper Hours - feel free to drop in and chat with others anytime! You can also see the calendar for Staff Helper Hours on the Getting Help page as well.

  • Assignment 0 Posted Mon. Jan 11 by Lisa Assignment 0 has been posted on the assignments page. 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 Mon. 1/18 at 11:59PM PT, and there are no late submissions accepted for this assignment (late days or otherwise), so please make sure to submit by the deadline.

  • Apply to CS107A (ACE/Pathfinders) Mon. Jan 4 by Lisa (based on CS106B post written by Sonja Johnson-Yu) CS107A, also known as CS107 ACE, is a 1-unit supplementary section designed to build a stronger foundation in computer science. Students participating in ACE will attend an additional weekly section and participate in special office hours and ACE-specific review sessions. Section is scheduled for Tuesdays and Thursdays 10-11:00AM PT, but an asynchronous option will be available for students in international time zones or with class conflicts.

    ACE is one of the School of Engineering’s Equity and Inclusion Initiatives. We especially want to provide an opportunity for students who come from educationally disadvantaged backgrounds or for anyone who feels they might need additional support in order to succeed. We limit enrollment to enable small classes that allow students to have one-on-one interactions with the CA.

    If you are interested in joining the ACE section, please apply online - click here. The application will be open until 5PM PT on Friday, January 15. Prior to application results being released, any student who's applying/planning to apply should attend CS 107A sections. You can find more information about CS107A on our FAQ page. If you have further questions about ACE, feel free to reach out to Andrew Benson (CS107A CA) at

  • Welcome! Mon. Jan 4 by Lisa Welcome to CS107! Class starts remotely on Monday, January 11th. We are looking forward to meeting you and starting off a great quarter together! We'll have more details to come about the format of CS107's remote fall offering. In the meantime, please feel free to check out the updated FAQ. It covers questions about recorded lectures, conflicting classes, CS107E, CS107A, and more. We hope you find it helpful! Other details and course policies listed are subject to change, so please stay tuned.

Course Description

CS107 is the third course in Stanford's introductory programming sequence. The CS106 courses provide you with a solid foundation in programming methodology and abstractions, and CS107 follows on this to build up and expand your breadth and depth of programming experience and techniques. The course will work from the C programming language down to the microprocessor to de-mystify the machine. With a complete understanding of how computer systems execute programs and manipulate data, you will become a more effective programmer, especially in dealing with issues of debugging, performance, portability, and robustness. Topics covered include: the C programming language, data representation, machine-level code, computer arithmetic, elements of code compilation, optimization of memory and runtime performance, and memory organization and management.

The class has two lectures a week and a weekly lab designed for hands-on learning and experimentation. There will be significant programming assignments and you can expect to work hard and be challenged by this course. Your effort can really pay off - once you master the machine and advance your programming skills to the next level, you will have powerful mojo to bring to any future project!

Course Logistics

Lectures: Mon & Fri 1:00PM-2:20PM PDT via Zoom (link on Canvas)

Labs: Tue/Wed/Thu at various times on Zoom; students sign up for labs after the quarter begins.

Course Policies


Course Staff

Visit the Getting Help page for information about how to contact the course staff.

Aditi Gaur

Brynne Hurst

Cem Gokmen

Lucas Soffer

Makena Low

Matthew Trost

Ricardo Iglesias

Sanket Gupte

Soham Gadgil

Timothy Liu

CS107A CA:

Andrew Benson