Design and implementation of operating systems. Topics include process synchronization and interprocess communication, processor scheduling, memory management, virtual memory, interrupt handling, device management, I/O, and file systems. Hands-on study of the xv6 teaching operating system design and kernel internals. Experience with commercial virtualization tools and open source software.
COMS W3137 Data Structures and Algorithms, COMS W3157 Advanced Programming (or good working knowledge of C), and COMS W3827 Fundamentals of Computer Systems.
The other requirement is that students be able to send and receive email, access courseworks.columbia.edu, access the class web page, and download and print pdf files from the class web page.
We highly recommend that you get a CS account for access to the CLIC machines because we will grade all your programming assignments on these machines.
The enrollment for this class this semester will be limited. Please register early if you plan to take this class this semester. If the class is full and you would like to take the class, please email the instructor and come to the first day of class.
Additional materials will be made available online at the course Syllabus page.
|50%:||Homework Assignments: There will be six homework assignments. Your lowest homework assignment grade will be dropped in calculating your grade. Each assignment will have both non-programming and programming problems. The programming problems will involve kernel-level programming in the xv6 operating system.|
|20%:||Midterm: The midterm is one class period, open book, closed mobile devices, and calculator permitted. The midterm will cover all material discussed in the course up to the week before the exam.|
|30%:||Final: The final exam is scheduled at the normal final exam time for this class period. The final is open book, closed mobile devices, and calculator permitted. The final is cumulative and will cover all material discussed in the course.|
|0%:||No "extra credit" work.|