The design and theory of multiprogrammed operating systems, concurrent processes, process communication, input/output supervisors, memory management, resource allocation and scheduling are studied. The intent is to familiarize students with OS theory past and present, while exposing them to some practical issues in OS implementation. Hence, part of the course deals with bookwork, part with an implementation project and part with OS research papers.
Working knowledge of common data structures such as stacks, queues, and linked lists. Knowledge of computer organization. A strong programming background. An interest in learning about operating systems.
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.
Each student will work on one, large semester-long programming project. The project will include a proposal, implementation and in-class presentation. Students must work in groups of 2 for the project. Groups of 3 are also possible. Please see me for groups of other sizes.
The implementation can be done in a variety of environments and languages. However, C and Unix implementations are encouraged because of the relative ease of exploring OS systems issues in that environment. C and Unix will not be taught as part of this course. System calls and other aspects of Unix will be introduced as needed and as the course progresses. Specific Unix help on the programming project can be arranged on a case by case basis.
The total project grade will be divided among the quality of the project overall, the extent to which the goals were met and the quality of the in-class presentation.
There will be two in-class exams. The first is roughly mid-way through the semesters and the second is during the last week. There is a remote possibility of a pop quiz for which no advance notice will be provided. 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. In addition, the final exam will include questions on the papers presented in class.
Each student will be expected to select and present an OS research paper. Presentation grade will be made based on preparadness, clarity, and relevance to course.
Late anything will be 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.
Cheating ... don't do it. Cheating, either by taking credit for work you did not do or getting unauthorized help on assignments or exams, is a serious offense. Punishment is in an automatic NR for the course. Note, discussion among students and even sanctioned group work is encouraged, but blatant copying of homework or code is not allowed. When in doubt, ask!
There is no specific CS laboratory assigned for this course. Historically, the Systems Lab (FLA25) has been used for this course and it continues to be used by CS grad students. Students may use this lab or any other CCC or CS supported lab for doing programming assignments. Other systems, such as personal computer systems, may also be acceptable for some projects.