![]() |
Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau Operating Systems: Three Easy Pieces Version 1.00 (Available free online!) |
This course covers the principles of operating systems. It emphasizes the basic concepts of OS kernel organization and structure, processes and threads, concurrency and synchronization, memory management, file systems, and communication. It is also a project course, providing essential experience in programming with concurrency, implementing and unmasking abstractions, working within an existing complex system, and collaborating with other students in a group effort.
The course is organized as a series of lectures by the instructor, discussion sections by the TAs, reading, in-class polls, homework, projects, and exams:
We will do our best to podcast both lectures and discussion sections. Please note that podcasts do fail from time to time; attending in person is the most reliable way to participate in the course.
The course schedule will be posted as we go along. If you are interested in learning more about operating systems beyond the course content, please see the supplemental reading below. These readings are not required and you will not be tested on them.
The course will have four homeworks which you will submit electronically via Gradescope. You can submit each homework up to two days late for partial credit. Your score will be reduced by 10% if it is submitted within 24 hours of the deadline, or by 30% if it is submitted within 48 hours of the deadline.
Due to extensive copying on homeworks in the past, we have changed how homeworks are graded. As long as you submit a technical answer related to the question, you will get full credit for the question. The goal of the homeworks is to give you practice learning the material. The homework questions both supplement and complement the material from lecture and in the project, and you will also find the homework questions to be useful for practicing for the exams. We will post solutions to all homeworks after they are submitted, and you can use them for studying as well. But, even with the solutions, the amount you learn from the homeworks will be directly correlated with your effort working on them.
I encourage you to collaborate on the homeworks: you can learn a lot from your fellow students. Collaboration consists of discussing problems with other students and independently writing your own answers to the problems based upon those discussions. As a rule of thumb, you should be able to discuss a homework problem in the hall with others, go home, and then write up your answer to the problem on your own.
The course has one tutorial project and three programming projects using the Nachos instructional operating system.
Your grade for the course will be based on your performance on the in-class polls, homeworks, midterm exam, final exam, and projects, as follows:
The academic honesty guidelines outlined by Charles Elkan apply to this course. If you find yourself in circumstances that tempt you to violate these guidelines, I encourage you to talk to the course staff for assistance. Examples of cheating include copying code or answers from someone else, copying code or answers from online sources, using generative AI or LLMs, or submitting an in-class poll from outside of class.