Philosophy for Distributed Operating Systems
The topic of this course is distributed operating systems. With the proliferation of the Internet and of computer use overall, the field of distributed systems currently includes far more than operating systems.
Distributed systems can now be considered to fall under the title of software engineering, as well as under systems in general. In fact, the current software engineering faculty of our department teach a course entitled Distributed Systems, which is quite different than this one.
The divergence of distributed systems from distributed operating systems can be seen by the changes in textbooks for the course. For instance, the first and second editions of Tanenbaum's Distributed Operating Systems, used in past instances of the course, has morphed into Distributed Systems: Principles and Paradigms, instead of becoming a third edition of the original book. In the last few years, the text Operating Systems by Bacon & Harris has been used for this course. This year, we are using the new edition of Distributed Systems by Coulouris, Dollimore, and Kindberg (5th edition). While this text covers the breadth of distributed systems, we will concentrate on how this applies to operating systems. We recommend that you keep your old undergraduate operating systems text handy, as we will refer to many of the concepts described there often. (If you don't have such a textbook, we recommend the text by Silberschatz, Galvin, and Gagne: Operating System Concepts, 8th edition, as this is the text used in CS 451.)
For these reasons, we emphasize here the operating systems topics related to distributed systems, as it was in operating systems (and also, database systems) that the problems (with some solutions and algorithms), and the design of distributed systems first became apparent. This provides a focus for the course, as well as a foundation for other distributed systems, such as the World Wide Web.
Our hope is for students to do more reading, analysis, and writing about papers in the area. Over the last few years, the faculty has been disappointed in the ability of students to read, understand, and critique important papers, and to expand and extend upon the ideas and concepts of those papers. They have also been dismayed by the poor writing skills and dismal spelling capabilities of many of our graduate students. The reading reports for this class are small (ideal size is just one page), which make them a good practice field for developing such skills.
Most, if not all, the papers assigned for reading reports reflect this emphasis on operating systems. In fact, some of you may be quite surprised by the publication dates of these papers. After all, why would a 40-year-old paper be of interest to the current computing world? Ah, because the roots and methods for dealing with concurrent, parallel, and distributed systems come from that time.
The grading of reading reports will focus mainly on writing and spelling skills. No two students read the same paper the same way; each will take away different conclusions. Therefore, unless it is clear that a student did not read the paper, or did not write a complete report about the paper, or misunderstood the paper, each student should receive full marks for his reading report. However to the best of my ability, I will comment heavily on the way the report is written.
This is a graduate course. Students taking a graduate course must consider themselves as aiming toward being professionals in their field. As professionals, you need to be able to write clearly and well. Otherwise, you will hit a wall that stifles further advancement much sooner than most of your fellow workers. If you go further in your graduate studies, you may need to write a thesis or even a dissertation. Being able to write well is one of the most important skills that you can develop now. Another critical skill is being able to read, analyze, and critique papers in your area of expertise.