Spring 2012 -- Junfeng Yang

  • Location: 1127 MUDD
  • Time: MW 4:10pm-5:25pm
  • Credits: 3 units
  • TA #1: Huayang Guo
  • Office Hours: T 10am-12pm
  • Address: TA room
  • TA #3: YiHong Lin
  • Office Hours: M 12:30pm-14:30pm
  • Address: TA room
  • Instructor: Junfeng Yang
  • Office Hours: W 5:30-6:30 and by appointment
  • Address: 460 CSB
  • TA #2: Younghoon Jeon
  • Office Hours: W 12:30pm-2:30pm
  • Address: TA room
  • Staff Mailing List: w4118os at lists.cs. This is the best way to reach us.
  • Discussions: through CourseWorks

Course Description

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 ($50) 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.


Required Text: Modern Operating Systems, 3rd Edition, Andrew S. Tanenbaum, Prentice Hall, Upper Saddle River, NJ, 2007 (available from Amazon.com and Columbia University Bookstore).

We will use the xv6 teaching operating system for all our kernel programming assignments. It comes with a textbook/commentary.

Additional materials will be made available online at the course Syllabus page.


50%: Homework Assignments: There will be six homework assignments. Your first programming assignment grade will always be counted in calculating your grade; your lowest homework assignment grade from the other five assignments will be dropped. 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.