CMSC 412: Operating Systems (Fall 2002), Sections 0201 and 0202

University of Maryland
Department of Computer Science
Instructor: Liviu Iftode
        Lecture Hours:         Tu/Th, 14:00-15:15, CSI 1121
        Office Hours:           Tu, 15:30-17:30,  AVW 4133

Teaching Assistants:

1. Chunyuan Liao
2. Daniel Camara

Lab hours:                  W, 12:00-12:50 (section 0201)  and 13:00-13:50 (section 0202) , CSI 1122

Prerequisites: Grades of C or better in CMSC 311/ENEE 350 and CMSC 330, or CMSC  400.


1. Operating Systems (Fourth Edition), by William Stallings, Prentice Hall, 2001.
2. Operating System Concepts (Sixth Edition), by Silberschatz, Galvin, and Gagne, John Wiley & Sons,       2001.

Additional papers may be assigned during the semester.



This course covers the basic operating systems concepts, with  an emphasis on internals, design and performance issues.

Lectures, recitations, homeworks, project and exams are equally important in learning operating systems. The lectures will provide a thorough discussion of the fundamentals of operating systems including the current trends in operating systems research. They will help students develop a solid understanding of the key structures and mechanisms of operating systems, the types of trade-offs and decisions involved in OS design, and the context within which the operating system functions (hardware, other system programs, application programs, interactive users).

The recitations/labs will bridge the gap between the operating system concepts taught in the lectures and the actual operating systems. Each OS concept such as processes, interprocess communication and synchronization, files and networking will be illustrated by their  corresponding implementation and programming interface in an UNIX-like operating system (Linux or Solaris).

Homeworks and project aim to allow students to deepen their knowledge and develop systems programming skills through independent work. Homeworks will focus on  how to use/program with operating system mechanisms, while from the project students will learn  how to implement these mechanisms.  Both homeworks and project will require substantial programming and a good background in computer architecture.

Finally, the exams will provide students with the opportunity to exercise their knowledge in solving problems  ranging from simple questions to OS design and implementation problems.


The course grade will be based on  exams, project assignments, and homeworks. You may expect to have short quizzes in class from time to time. Classroom discussion and questions are highly encouraged.  Quizzes and class participation will count if you  are on a grade border line at the end of the semester. There will be a midterm and  a final exam, which will be cumulative but heavily weighted toward material in the last section of the course. The weights of each exam  will be 25%,  25% for the homeworks, and 25% for the project. Most grades will be curved to account for exams/homeworks/etc. that are overly easy/hard. Project grades will not be curved. It is very important to note that, in order to receive a passing grade, you must obtain a passing grade on each part of this course, namely exams,  project  and homeworks.

I expect a signed honor pledge on every assignment, quiz, and exam, and I expect you to adhere to the intent of the pledge as I have outlined it.  If, in my judgment, it is beyond a reasonable doubt that a student has committed an honor violation with regard to a given test, that student will receive an immediate grade of 'XF'.

Course Outline

Lecture Notes

Other Information, Materials and Resources

Announcements, project and homework assignments will be posted here.

A newsgroup and a mailing list for the class will be available for announcements and discussions

A significant body of information and course support materials including lecture and summary notes as well as other powerpoint slides used in teaching similar operating system courses can be found here.