CSE 506, Fall 2014: Operating Systems

Latest Announcements

9/6: Lab 1 deadline extended to 9/10. Lab 2 due date will not be changed.
8/22: A few notes on course enrollment
As many students have noticed, 506 is currently wait-listed for MS students. I want to draw your attention to a few points. 1) Professor Ferdman will be offering 506 in the Spring, and the department will probably continue offering this course every semester. 2) There is frequently substantial turn-over in the first few weeks of the course. Please let me know if you want to enroll but cannot. 3) Last year, everyone who was still interested in enrolling by the second week of classes was offered a spot in the course.

See all announcements RSS 2.0 feed

Course Info

Course Objectives and Description

The primary objective of this course is to gain a detailed understanding of how computer systems work. For instance, when one types a command at the console, what is the chain of hardware and software events that lead to the command returning the correct value? This deep understanding is of practical and philosophical importance. It is practically immportant to understand how computer systems work when you are trying to make them do something new, either for research or industry. More philosophically, a computer scientist with an advanced degree should not view any part of the computer as "magic," but should either understand how it works or have the tools to figure it out.

This course will focus on implementing key OS kernel features in the JOS kernel. JOS provides skeleton code for much of the less interesting components of the OS, allowing you to focus on key implementation details. The JOS lab was developed at MIT, and has been used at several other universities, including Stanford, Texas, and UCLA.

Lectures and readings in the course will serve to draw out general principles, add needed background for the labs, and map details from the JOS implementation to real-world OSes, like Linux and Windows. In my own experience, most of the mapping is fairly intuitive: once you understand the simple code in JOS, the same pattern is clear in the much more complicated Linux source code.

This course will not attempt to provide a comprehensive introduction to operating systems. Some previous exposure to the basics of multi-programmed operating systems will be assumed.

Detailed information about the course is available on the syllabus.


Portions of this course design, organization, policies, syllabus, web design, etc. came from Mike Walfish and Erez Zadok. I owe previous course staffs at several universities a debt of gratitude for developing the JOS labs.

We thank past course TAs for their contributions to lab management at Stony Brook: Chia-che Tsai and Connor Fitzsimmons. Amit Arya ported JOS to the amd64 architecture, which we will be using at Stony Brook. Abhinand Palicherla significantly revised JOS64. Patches to JOS64 have also been contributed by Varun Agarwal, Vivek Kulkarni, and Sagar Trehan.

This course website was created using the Coursegen toolkit written by Dave Andersen and Nick Feamster. Thanks!

Last updated: 2015-07-16 09:49:37 -0400 [validate xhtml]