Fundamentals of Computer Systems

Course Missive

Collaboration Policy

The collaboration policy must be signed and handed in to the course staff in the beginning of the semester. The full document can be found here.


The prerequisites for this course are either CS16, CS18, or CS19. While this course complements CS33 and CS32, it does not require either of them. Students of any year are encouraged to take this class, provided they meet the prerequisites.

Problem Sets and Labs

For every section, there will be at least a problem set or a lab. Problem sets will cover the material presented in class and in the book. The material in these will help make the concepts covered in class more concrete, by making students solve problems related to the material or answer questions requiring knowledge of the material. Labs typically involve more hands-on activity, and will have 2 hour lab sessions in the Sunlab, attended by a TA. These labs may also involve a few problems of the type that are generally found in problem sets. The hands-on sections of the lab will need to be checked off by a TA. Some labs may also have follow-up questions, which will be a part of the next homework.


There are two exams for this class, the midterm and the final. The midterm will cover the material presented in the first half of the class, and the final will cover the material presented in the second half of the class. The problems on the exam will generally be similar to the problem sets, but may cover anything presented in lecture.

Final Project

There will be a final project for this class. This project will involve creating a computer system incrementally throughout the semester. The project will be subdivided into many smaller assignments, each with a deadline. Each of these smaller assignments will correspond to a topic covered in lecture. We will use many of the concepts covered in class, and this will help further solidify those abstract concepts and how to apply them. System design will be an important part of this project. It will be similar to a service like Dropbox, and will integrate the concepts covered in class to build a functional and error-tolerant system.

Grade Breakdown

Grades will be determined by roughly the following breakdown. We reserve the right to alter this breakdown.