CS502 is graduate level course in which you will study and compare the design and implementation of modern operating systems. The course covers the key parts that are present in most operating systems and outlines the design tradeoffs of various implementations. Students also will learn to compare a number of the major contemporary operating systems. The course will:
Time and Place: Monday, 6:00pm - 8:50pm, Fuller Labs 246 (Beckett Room)
Professor: Hugh C. Lauer
Email: <my last name>@cs.wpi.edu
Office hours: (by appointment) but I will try to be in my office by mid-afternoon on class days
Office: Fuller Labs, room 239
Required Textbook:
Similar :
Class Email List: cs502-all at cs.wpi.edu
Final grades will be computed as follows:
Final grades will reflect the extent to which you have demonstrated understanding of the material, and completed the assigned projects. The base level grade will be a "B" which indicates that the basic objectives on assignments and exams have been met. A grade of "A" will indicate significant achievement beyond the basic objectives and a grade of "C" will indicate not all basic objectives were met, but work was satisfactory for credit. No incomplete grades will be assigned unless there exist exceptional, extenuating circumstances. Similarly, no makeup exams will be given unless there exist exceptional, extenuating circumstances.
Testing
There will be two in-class exams. The first is roughly mid-way through the semester and the second is during the last week. Exams will be closed book and closed notes, unless otherwise indicated. The majority of each exam will cover basic ideas and objectives of the class with a few questions testing additional understanding and insight.
· Mid-term exam - Monday, February 27, 2006 starting at 6:00 PM - this exam will cover all the topics assigned and covered in class from the beginning of the course through the class of February 20, 2006.
· Final exam - Monday, April 24, 2006 starting at 6:00 PM - this exam will cover all the topics assigned and covered in class from the class of March 13, 2006 through the class of April 18, 2006, AND any key high-level concepts from any other topic assigned or covered in class.
Programming Projects
There will be 2 to 4 programming assignments to be done in C/C++ on Unix or Linux systems. The code for the assignment includes not only the solution, but also the test code or test cases and it must be well commented and easy to read by others. Similarly, any output must be cleanly formatted and easy to read by others.
"Getting the correct answer" on a programming project is not sufficient to meet the objectives of the assignment. Since operating systems are typically long-lived, frequently revised, complex programs that are used (and maybe abused) by a diverse population of programmers and users, successfully meeting the programming projects' objectives will include designing, developing and testing the programs as if they were part of an operating system.
Term Project
Since this is a graduate course, becoming familiar with current operating systems issues and research literature are part of the goals for this course. There will be one term project in which class members will investigate some operating system related topic and write a term paper.
Class Participation
Students are expected to have read the assigned material before the start of class and should be able to ask and answer relevant questions during the class. In addition, some students may be asked to discuss or compare various design aspects or tradeoffs during a class. Also, the term project will involve making at least one presentation.
Academic Honesty
Unless explicitly noted, all work is to be done on an individual basis. While you are encouraged to talk with each other about ideas and course material, all work (i.e. code, test or homework answers) that you submit for grading must be your own work. Any violation of the WPI guidelines for academic honesty will result in no credit for the course and referral to the Student Affairs Office. More information can be found at WPI Policies.
Late Policy
Late anything will be penalized 10% of total assignment value per day (with the weekend counting as one day) or partial day, and no assignments will be accepted after seven days beyond the due date. All assignments are due at the start of class on the due date. Projects will be submitted as directed in class. Exceptions to these rules can be made only beforehand.
Classes will start at 6:00PM and end by 8:50PM on Monday's from January 16, 2006 to April 24, 2006. There will be two 5-minute breaks at approximately 7:00 PM and 8:00 PM. The mid-term exam will be on March 6, 2006 and the final exam will be on April 24, 2006.
Because of the cancellation of classes on January 23, 2006, due to the snowstorm, there will be no skipped class on March 6 as previously planned.
Term Project Description (.doc)
(.htm)
Term Project Overview Slides (.ppt) (.htm)
Term Project Presentations (.ppt) (.htm)
Project 1 – fork (.doc) (.htm)
Project 1 slides (.ppt) (.htm)
Project 2 – threads (.doc) (.htm)
Project 2 slides (.ppt) (.htm)
Project 3 – Page replacement Algorithms (.doc) (.htm)
Project 3 slides (.ppt) (.htm)
Project 4 – Simple Web Server (.doc) (.htm)
Project 4 slides (.ppt) (.htm)
The following outlines the topics that will be covered and the corresponding readings from Tanenbaum.
Topics |
Tanenbaum |
Introduction, History, Overview |
1 |
Concurrency and synchronization |
2.3 |
Processes, Unix and Windows processes |
2.1 |
Scheduling |
2.5 |
Deadlocks |
3 |
Memory Management |
4.1, 4.2 |
Virtual Memory |
4.3 - 4.8 |
File Systems and persistent storage |
6 |
I/O Devices |
5 |
Multiprocessor and Distributed Systems |
8 |
Multimedia Systems |
7 |
Security |
9 |
Networks |
TBD |
Operating System Design |
12 |
Here are the electronic versions of slides for what we have so far:
Week 1 |
Course Introduction |
||
|
What is an Operating System? |
||
|
Concurrency and synchronization |
||
Week 2 |
Processes |
||
|
Scheduling |
||
|
Unix/Windows processes |
||
Week 3 |
Digression on Stacks |
||
|
Threads |
||
|
Monitors and other forms of |
||
|
Operating System Organization |
||
Week 4 |
Linking and Loading |
||
|
Memory Management |
||
|
Paging |
||
Week 5 |
Virtual Memory |
||
Week 6 |
Input-Output (part 1) |
||
Week 7 |
Mid-term Exam |
|
|
Week 8 |
Disks |
||
|
File Systems |
||
Week 9 |
More on File Systems |
||
|
Networks |
||
Week 10 |
Reminder – Term Project |
||
|
Distributed and Multiprocessor Systems |
||
|
Distributed File Systems |
||
Week 11 |
Introduction to Computer Security |
||
Week 12 |
Multimedia Systems |
||
Week 13 |
Virtual Machine Systems |
||
Week 13 |
Windows XP |
The following papers are relevant to the material presented in class:–
Dijkstra, E. W., “Solution of a
Problem in Concurrent Programming Control,” Communications
of the ACM, vol. 8, #9, Sept. 1965, p 569. (.pdf)
Dijkstra, E. W., “The Structure of the ‘THE’-Multiprogramming System,” Communications of the ACM, vol 11, #5, May 1968, pp.341-346 (.pdf)
Hoare, C.A.R., “Monitors: An
Operating System Structuring Concept,” Communications of ACM, vol. 17,
Oct. 1974, pp. 549-557. (.pdf)
Lampson, B.W., and Redell,
Lauer, H.C. and Needham, R.M., “On
the Duality of Operating System Structures,” Operating Systems Review,
vol 13, #2, April 1979, pp. 3-19. (.pdf)
Redell,
Ritchie, D. M. and Thompson, K.,
“The UNIX Time-Sharing System,” Communications
of ACM, vol 17, #7, July 1974, pp. 365-375. (.pdf)
Thompson, Ken, “Reflections on
trusting trust,” Communications of ACM,
vol.27, #8, August 1984, pp. 761-763 (.pdf)