Computer Organization & Systems

Winter 2019

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.


  • Tutoring at Center For Teaching And Learning Thurs. Jan 17 by Nick Alex Ayers, the head of the peer-tutoring program at the Center for Teaching and Learning, has asked us to post this information below about tutoring: "Free Tutoring: Want to meet with an experienced peer to discuss course concepts, think through a problem set, or prepare for an upcoming exam? CTL offers free drop-in and appointment tutoring for CS107, in addition to tutoring for a number of other courses. For more information and to schedule an appointment, visit ourĀ tutoring appointments and drop-in schedule."

  • Assignment 1 Posted Mon. Jan. 14 by Nick 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 cell simulation to a modern-day character encoding. We hope you have fun with it! The assignment is due Mon. 1/21 at 11:59PM PST. You can find more details on the assignment page.

  • Lab Signups Open Wed. Jan. 9 by Nick Lab signups are now open! You can sign up using the link provided on the Labs page. Signups are first-come-first-serve, so we recommend signing up early if you have many scheduling constraints. You can also use the lab signup page to switch or drop your lab. Labs start next week.

  • Lab Schedule Posted Tues. Jan. 8 by Nick Lab signups open tomorrow evening, so we have posted our current lab time offerings on the Labs webpage if you would like to plan ahead to decide your preferences on dates/times. We'll send out a note when lab signups are open, with the link to sign up.

  • Assignment 0 Posted Tues. Jan. 8 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. 1/14 at 11:59PM PST, and there is no grace period for this assignment, so please make sure to submit by the deadline.

  • Welcome! Thurs. Dec. 20 by Nick Welcome to CS107! Our first lecture is Monday, January 7 at 12:30PM in Hewlett 200. We are looking forward to meeting you and starting off a great quarter together! If you have questions about the course before the quarter starts, 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:30-1:50pm in Hewlett 200; Note that this is shorter than what Axess says. We will only use the full Axess-listed timeslot for the Midterm exam.

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


Course Policies

Course Staff



Annie Shi

Cooper Raterink

Emily Ling

Emily Marx

Jennifer Tao

Max Lam

Michal Wegrzynski

Nolan Handali

Petar Penkov

Rifath Rashid

Sushain Cherivirala

Timothy Le

CS107A CAs:

Reynis Vazquez-Guzman