Operating Systems: Design and Implementation, Second Edition, A. Tannenbaum, A. Woodhull, Prentice Hall, 1997.
Operating Systems Concepts, Fourth Edition, A. Silberschatz, P. Galvin, Addision-Wesley Publishing Company, 1994.
Modern Operating Systems, A. Tanenbaum, Prentice Hall, 1992.
The Design and Implementation of the 4.4 BSD Operating System, M. McKusick, K. Bostic, M. Karels, J. Quarterman, Addison-Wesley Publishing Company, 1996.
The objective of this course is to provide an in depth understanding of how an operating system works. To accomplish this we will be studying an operating system from the ground up. The operating system we will be studying is Minix, an instructional (but fully functional) operating system that is very similar to Unix. You will study Minix as a system administrator, a user and as an OS programmer. We will be paying particular attention to the following topics:
As it is relevent we will also compare and contrast particular OS functions and their implementations in Unix, Windows, DOS and the Mac-OS.
This course will be taught in a discussion type of format. I could stand in the front and spout facts or reiterate what the book says. However, that wouldn't be any fun for me and you wouldn't learn any more than if you sat home and read the book. Therefore, you will be expected to take an active part in class and thus an active role in your learning experience. The more you are able to put into the class the more you and your classmates will get out of the class. You will have the opportunity to learn a lot but you need to have the attitude that you are here to learn and you must be willing to work for it. For a class like this to work you must have done the assigned readings before comming to class. If you don't do the reading before class the discussions will be pretty uninformative and you will not learn much.
Here's my idea of how a class period should go:
While you will be responsible for all of the material assigned in the readings from the book we will not be covering all of them in detail during class time. (However, you should feel free to ask any questions you had about the readings during class.) What we will be doing with class time is discussing in more detail some selected topics from the readings. This includes extended examples from other operating systems and clarification of the reasons behind design choices made during the development of those systems.
A note about my expectations. To quote the Dickinson College catalog "...Each course, unless otherwise noted in the course description, is equivalent to four semester hours. Credit for courses is based on the assumption that at least three hours of study accompany each period of recitation or lecture." (p. 194) I feel that the phrasing of that statement is inappropriate because different classes may meet 2, 3, 4 or even 5 times a week. I prefer to look at it as follows: As students your studies are your first priority which should be the equivalent of a full time job (in a field like CS that is typically 50-60 hours a week.) So I expect that you will spend, on average, somewhere between 45 and 75 hours a week on your studies. It is up to you to determine how that is divided between your courses. However, I do expect that this course being upper level and probably in your major will be weighted appropriately.
All programming assignments, exams and research paper assignments will be graded on an absolute scale. At the end of the semester a curve will be applied to the total absolute grades for the entire class to determine each individual’s final grade.
Absolutely no late work will be accepted without penalty!
However, since I am not a complete tyrant, I am implementing what I call the "NEET" late policy. NEET stands for "No Excuse Extension Time" and you can use it to extend any due dates you choose. The rules of NEET are as follows:
Late work handed in after all your NEET has been used will be penalized 30% the first day, 60% the second day and no credit will be given after the second day. Again any portion of a day counts as a full day. Any assignments handed in late must be given to me in person so that I may account for your NEET.
We are all adults and therefore class participation or attendance does not directly factor into your grade. However, this course is designed to be discussion oriented. Much of what we discuss will be directly related to the exam questions and programming assignments. Therefore, it is in your best interest to attend and participate in class.
Take home exams are ABSOLUTELY individual assignments. If obvious collaboration occurs on a take home exam all students involved in the collaboration will receive a 0% for that exam. Besides, since I will be grading on a curve helping someone else get a better grade can only hurt your grade.
These exams will be open notes, open book, open computer etc... So basically you will be allowed to use anything except someone else’s help. If you have questions on the exam you should talk only to me. Because these are open everything exams you can expect them to be more conceptual than factual. Some questions may even require you to write code or analyze given code segments.
The programming assignments are a major part of this course, as evidenced by the fact that they constitute 40% of your course grade. These projects involve extending and implementing operating system functions within a real OS framework. The projects will be done in groups of 2.
Grading for the projects will be divided equally between design and implementation. The design will be graded on clarity of explanations, justification of design choices and relevance of test cases. A heavy emphasis will be placed on your testing methodology. The implementation will be graded on elegance, readability and maintainability of code and the correctness of execution.
The research paper is a semester long assignment to provide an opportunity for more in depth study of a particular topic of interest. The paper may be written individually or in a group of two. This paper is, as stated, a semester long assignment and a satisfactory job can not be done in a single night or even a single week. As such there will be periodic checks on the research paper to ensure that it is progressing at a reasonable rate throughout the semester. Each of these periodic checks will also be graded to ensure that you take them seriously.
You will be expected to use outside (i.e. not your textbook) references such as journal articles and conference proceedings. References to these types of literature can be found in the bibliographies of textbooks, in on-line search facilities in the library and on the world wide web. The interlibrary loan (ILL) office in Spahr is capable of obtaining almost any book, journal article or conference proceedings paper that you could possibly need. ILL is an extremely valuable resource and you should make liberal use of it. Note that the library provides each student with a $20.00 stipend towards the cost of using ILL services. With this in mind all papers should contain a FULL bibliography and ALL information that is not your own MUST be cited. Plagiarism is, as you know, grounds for expulsion.
The length of the paper is up to you. It must be long enough to cover the topic clearly and in sufficient depth to warrant it being worthwhile. The length of the paper of course also depends on the topic and efficiency of the writers. However, I would be suspicious of any papers shorter that 10 pages or longer than 20.
Each group or individual will give a 15 minute presentation of their research paper during the last day of the course. This presentation will count towards part of your grade for the research paper. Presentations should be well prepared and rehearsed as they will be strictly limited to 15 minutes.
Some possible topics for the research paper are given below, but you are of course free to pick a topic of your own.