OPERATING SYSTEMS ICOMS W4118, Dept of Computer Science, Columbia University
Home | Announcements | Lectures | Homeworks | Grades | Discussion | Resources | Facebook

GENERAL INFORMATION - http://www.cs.columbia.edu/~nieh/teaching/w4118
Meeting Times and Location: Fall 2012, TR10:10-11:25AM Location Mudd 833 and Mudd 539 (overflow)
Prerequisites: COMS W3137 Data Structures and Algorithms, COMS W3157 Advanced Programming (or good working knowledge of C), and COMS W3827 Fundamentals of Computer Systems

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 Linux operating system design and kernel internals, including work with Android devices. Experience with commercial virtualization tools and open source software. The course was the first to introduce virtualization as a tool for teaching computer science, specifically operating systems. For more information, see Dr. Dobb's Journal.

Enrollment: Because of enrollment demand exceeding room capacity, an overflow room will also be available for students to watch the class live on video. However, the Fall 2012 enrollment for this class will still be limited. Please register early if you plan to take this class in Fall 2012. If the class is full and you would like to take the class, please complete this form.

Looking for a Job?: One out of four the best dozen jobs in America are IT related, including the best job! Many of these jobs leverage the concepts and skills you will learn in this class. For more information, see the most recent CNN Money article on the Best Jobs in America. Also, see a recent technology demand and supply report that identifies Linux skills as one of the few with continual rising demand, and a list of 5 high-paying, low-stress jobs including being a computer software engineer who designs operating systems.

Instructor: Prof. Jason Nieh, 212-939-7160, office hours: TR9:00AM-10:00AM CSB 518
TA: Naser AlDuaij, office hours: TR3:00PM-5:00PM TA Rm
TA: Alex Van't Hof, office hours: MF10:00AM-12:00PM TA Rm
TA: Jiabin Hu, office hours: W4:00PM-6:00PM TA Rm
TA: Yi-Hong Lin, office hours: R12:30PM-2:30PM TA Rm
TA: Chao Song, office hours: M4:00PM-6:00PM TA Rm
To email the instructional staff, please use the w4118 staff mailing list, which is listed in the intro section of the class in Courseworks. For homework-related questions, please use the class discussion forum.
Required Text: Operating System Concepts Essentials, Avi Silberschatz, Peter Galvin, and Greg Gagne, John Wiley and Sons, New York, NY, 2010 (available from Amazon.com and Columbia University Bookstore). See also Errata.
Required Linux Reference: Linux Kernel Development (3rd Edition), Robert Love, Addison-Wesley Professional, New York, NY, 2010 (available from Amazon.com and Columbia University Bookstore). Also available online.
Optional Linux Reference: Professional Linux Kernel Architecture, Wolfgang Mauerer, John Wiley and Sons, New York, NY, 2008 (available from Amazon.com and Columbia University Bookstore).
Computing Requirements: You should also have your own computer to take this class, on which you will install either VMware Workstation for Windows or Linux, or VMware Fusion for Mac. A CS account will provide access to VMware licenses and software at no additional cost. Students will also require use of Android Nexus 7 Tablets as will be discussed further on the first day of class.
45%: 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 Linux operating system.
15%: Grading Assignments: Students will be anonymously assigned homework assignments to grade as part of a peer-to-peer grading process to help better understanding the homework assignments. The grading process will include an initial review phase, a rebuttal phase, and a final review phase.
15%: Midterm: The midterm is one class period, closed book, calculator permitted. The midterm will cover all material discussed in the course up to the week before the exam.
25%: Final: The final exam is scheduled at the normal final exam time for this class period. The final is closed book, calculator permitted. The final is cumulative and will cover all material discussed in the course.
0%: No "extra credit" work

All work is due by the date and time specified in the respective assignment; there are no extensions. It is much better to submit partially complete homework on time and get partial credit for your work than to submit late homework for no credit. Homeworks submitted after the respective deadlines when they are due are considered late. Late homeworks will not be accepted unless there is a valid medical or family condition with appropriate documentation submitted to the instructor.

Submissions should be made electronically using Git, a distributed version control system. You should use Git for version control of all your code for this class, and we will monitor code check ins to see how your work is progressing and who is doing the work. Each submission will be time stamped. Proper submission is your responsibility; we strongly urge you to make sure you understand the submission process and submit early. We also urge you to check out your submissions and test them to make sure the submissions are complete. You can always submit again up until the deadline, so we strongly urge you to submit well before the deadline and then submit again if you have a more updated assignment to submit later. After the submission deadline, all homework submissions will be publicly viewable by all students in the class.

If you disagree with any homework grade, submit your grievance via email to the w4118 staff mailing list, documenting the merits of your case. The grader responsible will respond likewise via email. If you are still dissatisfied you may appeal in like manner to the instructor, who will only examine the email record of the dispute, and will respond in email. If you disagree with any exam grade, submit your exam and grievance in writing (not email) to the grader responsible, documenting the merits of your case. The grader will respond likewise in writing. If you are still dissatisfied you may appeal in like manner to the instructor, who will only examine the written record of the dispute, and will respond in email. For a grade dispute to be considered, the written grievance must be submitted in writing within two weeks of when the respective assignment or exam is returned.

For your convenience, all programming can be developed on any Linux machine. However, only those programs which compile using the gcc compiler in the VM you are given to work with will be graded. Furthermore, it is critically important that all submitted program listings and executions be thoroughly documented.

All programs must compile and all kernels you modify must also boot; programs and kernels that do not compile and boot will receive a grade of zero. Usually the homework assignments will only state the major objectives of the program to be written; it will be often up to you to make design decisions about things like I/O, efficiency, error handling, and so on. Make sure you provide adequate test cases to indicate the correctness and robustness of your approaches.

We encourage you to help one another in understanding the concepts and principles needed to do the homework assignments for this class. However, what you turn in must be your own, or for group projects, your group's own work. Copying any part of other people's code, solution sets, or from any other sources is strictly prohibited. Students in previous years have often been caught cheating by copying answers from the web, which turn out to be incorrect. The homework assignments must be the work of the students turning them in. Anyone found violating the class collaboration policy will be punished severely.

You must explicitly cite ALL sources of information that you reference as part of your homework submissions. For each citation, you should describe how that source was referenced. You do not need to cite conversations with instructional staff or the course textbooks, but you should cite everything else, including any conversations with other students related to the homework assignments, and any Web sites used. Referencing any uncited sources other than the course materials is considered cheating.

All students or groups who are determined to submit homework that violates the class collaboration policy will receive a zero on the respective homework assignment for the first offense, and will receive an F for the course for the second offense. More serious cases of cheating, such as copying someone's work without their knowledge or cheating on exams, will result in the person cheating receiving an F for the course. In addition, offenses will be reported to the Dean's office, which may result in further disciplinary action, including suspension or expulsion from the program. Penalties will be given without discussion or warning; the first notice you receive may be a letter from the Dean. Note that you are responsible for not leaving copies of your assignments lying around and for protecting your files accordingly.

We would like the course to run smoothly and enjoyably. Feel free to let us know what you find just, good, and interesting about the course. Let us know sooner about the reverse. See us, leave us a note, or send us email.