Computer Organization & Systems

NOTE: this website is still in progress. This is the course web site for the upcoming quarter, Spring 2020. If you are looking for the Winter 2020 website, please visit this link.

Spring 2020

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.


  • Assignment 0 Posted Mon. April 6 by Nick 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. 4/13 at 11:59PM PST, and there are no late submissions accepted for this assignment (late days or otherwise), so please make sure to submit by the deadline.

  • Welcome! Fri. April 3 by Nick Welcome to CS107! Class starts remotely on Monday, April 6th. 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 spring offering. In the meantime, please feel free to check out the FAQ. It covers questions about recorded lectures, conflicting classes, CS107E, CS107A, and more. We hope you find it helpful!

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 12:30PM-1:50PM via Zoom; Note that this is shorter than what Axess says.

Labs: Tue/Wed/Thu at various times via 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.



Albert Zuo

Aleksander Dash

Andrew Benson

Anthony Li

Brynne Hurst

Jennifer Tao

Justin Xu

Krishna Patel

Monica Anuforo

Nolan Handali

Sasha Harrison

Soham Gadgil

Stefan Hadjis

Zack Cinquini

CS107A CA:

Jennie Yang