This course provides an introduction to the theory and application of operating systems. Students will develop the skills necessary to use and develop modern operating systems. The course will examine the fundamental topics of operating systems, focusing on the key systems concepts and the major systems mechanisms. In addition, this course will focus on the trade-offs inherent to such mechanisms. Course projects will focus on the application of operating systems concepts in practical systems.
A detailed list of a lecture by lecture contents, assignments, and due dates (subject to change as semester evolves) is available on the course calendar.
The course will be graded on exams, course projects, and class participation in the following proportions:
|10%||Quizzes and Class Participation|
The mid-terms and final are closed book exams to be held outside normal course meetings on pre-designated times during the semester. The exams may include any topic previously covered in lectures or assigned readings. While all topics are fair game for the final exam, it will emphasize material covered since the mid-term. Students who have conflicts with the exam schedule should see the course instructor immediately.
A hint: exam questions will often require students to think beyond or delve deeper into the particulars of the lectures. Hence, students who have read and understand all assigned material and taken notes in lectures to supplement their understanding of the slides will have a much better chance a doing well on the exams. Students who rely exclusively on reviewing slides will almost certainly do poorly. In short, the exams will not ask students to regurgitate facts, but to reason about the field. This requires a deep understanding of the material that cannot be acquired from slides alone.
I will post homework problems from the textbook for you to gain some practice for the exams. These homework problems will not be collected or graded, so you are responsible for doing them. I reserve the right to test your knowledge via quizzes, as described below.
Several programming projects will be assigned in this class. You will be expected work program in the C programming language, often building on existing code that you will need to understand -- just like a real OS programmer. For ease of management, you will program at the application level (not in a real OS), but you will write operating system-style code with operating system concepts.
Note that the programming assignment compromise over 1/3 of the class grade, so it is incumbent on you to complete these assignments, effectively. The content and due dates of these assignments will be decided over the course of the semester. If you cannot attend a lecture, contact the TA and/or other students to see if any assignments have been made.
Project milestones are assessed a 20% per-day late penalty, up to a maximum of 4 days. Unless the problem is apocalyptic, don't give me excuses. Students with legitimate reasons who contact the professor before the deadline may apply for an extension.
Academic dishonesty of any kind will not be tolerated in the projects/exams. There is no specific attendance policy, but it is assumed that the student attends regularly since answering the exam and project implementations would require you to do so. Always check your email and the web site for up-to-date information.
This course is essentially a lecture and readings course. However, students are going to be required to participate in discussions of the reading content during each lecture. Hence, the students ability to exhibit comprehension of the readings is essential to a passing grade.
There will be occasional quizzes to test the students knowledge on key points and practice for the exams. These will be short quizzes, about 10 minutes, at the start of the class. I plan to announce these about one week prior.
Most of the course readings will come from the following required textbook:
CMPSC 473 - Spring 2009