CSC 256/456 - Operating Systems (Spring 2007)

Class time: Monday, Wednesday 2:00pm-3:15pm.
Class location: CSB 601. Room changed!

Instructor: Kai Shen (kshen@cs).
Office: CSB 714.
Office hours: Monday, Wednesday 3:15-4:15pm; walk-ins without appointment are welcome.

TA: Hemayet Hossain (hossain@cs).
Office: CSB 625.
Office hours: Monday 1:00-2:00pm; Wednesday 5:00-6:00pm.

TA: Daniel Mullowney (dmullown@mail).
Office: CSB 633 (CS major's lab on CSB sixth floor).
Office hours: Monday, Wednesday 5:00-6:00pm.

This course explores the field of computer operating systems, emphasizing on basic operating systems concepts and design principles. We will discuss the performance and engineering trade-offs in the design and implementation of operating system mechanisms. The idea is to learn not only what operating systems are and how they work today, but also why they are designed the way they are and how they are likely to evolve in the future. This course will cover fundamental OS materials such as scheduling and synchronization, multiprogramming, memory management, file system, protection and security. Additionally, we will touch a few advanced topics including micro-kernel OS, virtual machines, and OS support for highly-concurrent online servers.

Text and reference books:
You can use either of the following two textbooks, although the Tanenbaum text is preferred. The required reading for each lecture is listed for both texts. If you can find a recent (but not the latest) edition of either text, I think you are fine (although the section numbers for required readings might be different).

This course is mostly about the concepts of operating systems and principles of building them. A reference book on a real production OS may help you understand practical aspects of OS concepts and design principles. It is also extremely helpful (if not necessary) if you take the Xen track assignments.

C/C++ programming:
All programming assignments of this course will be in C/C++ and they are quite heavy. You should be a pretty good C programmer going into this course. You should also understand basic C++. If these conditions don't apply to you, I am afraid your chance of succeeding in this course is small. Feel free to come by my office for a chat if you are concerned on this.

Assignments and grading:
There will be about six programming assignments and two exams. The programming assignments are bound to be time-consuming, with the idea that you learn from the experience. Your grade will be based on a combination of the above and 5% credit will be awarded based on your participation in class discussions, NOT just attendence. A tentative grade division for CSC256 students is listed below.
       5% - assignment #1
       5% - assignment #2
       10% - assignment #3
       10% - assignment #4
       10% - assignment #5
       10% - assignment #6
       15% - midterm exam
       30% - final exam
       5% - participation in class discussions
CSC456 students taking this course are required to complete an end-of-term survey paper, which will constitute 10% of the total grade.

A note for CSC256 students:
Some of the assignments have additional parts marked "CSC456 Part". Unless stated otherwise, you are allowed to work on those parts and we may award you extra credits when we consider appropriate.

A note for CSC456 students:
Some of the assignments have additional parts marked "CSC456 Part". You are also expected to complete an end-of-term survey paper. Although we expect you to complete these work, failing to do so simply means you will lose some points (not the end of the world). Some of the assignments are group assignments. You might want to form groups with fellow CSC456 students because CSC256 students might not want to do the CSC456 parts that you are likely to do. The topic of the term project depends on your interest and my expertise on that topic.