EECS 482 - Introduction to Operating Systems
Winter 1999


Professor Farnam Jahanian

Class time: TTH 10:30-12:00 (section 1)
Class location: 1500 EECS
Office: 2229 EECS Bldg
Office hours: TTH 3:00-4:00
Phone and voice mail: 936-2974
Email: farnam@eecs.umich.edu

Professor Don Winsor

Class time: TTH 1:30-3:00 (section 6)
Class location: 1200 EECS
Office: 4403 EECS Bldg
Office hours: TTH 9:00-10:00 AM
Phone and voice mail: 764-8543
Email: don@eecs.umich.edu

Teaching Assistants:

Name E-mail Discussion Office Hours Extra Office Hours
April 8 - April 20
Olga Kornievskaia aglo@engin.umich.edu Mon 12:30-1:30pm
EECS 1311
Wed 12:30-1:30pm
EECS 1311
Mon 1:30-3:30pm
Damien Neff dneff@engin.umich.edu Mon 3:30-5:00pm
Wed 2:30-3:30pm
Mon 5:00-6:30pm
Wed 3:30-5:00pm
Vladimir Rodriguez vrodrigu@umich.edu Mon 11:30-12:30pm
EECS 1001
Wed 11:30-12:30pm
EECS 1001
Thur 12-2pm
Perv Rastogi prastogi@engin.umich.edu Fri 12:30-3:00pm
Fri 3:00-5:00pm
Sat 1:30-3:30pm


Course materials and resources:


Course Description:

EECS 482 is an introductory course in operating systems at senior undergraduate level or first-year graduate level. The objective of the course is to familiarize you with the issues involved in the design and implementation of modern operating systems. The course does not concentrate on any particular operating system or hardware platform. The concepts discussed are applicable to a variety of systems. However, we will discuss many examples that are drawn from historically significant and modern operating systems including MULTICS, UNIX, Mach, Windows NT, and Linux.

The topics covered include processes and threads, interprocess communication, concurrency and synchronization, CPU scheduling, communication in distributed systems including remote procedure calls, virtual memory management, secondary-storage management, file systems, and protection and security.

Students are expected to have had extensive programming experience prior to this course. Knowledge of the C/C++ programming language and familiarity with UNIX is required. In addition to reading the material covered in the lectures, the students are expected to gain hands-on experience by designing and developing code for several programming assignments through out the semester.


Prerequisites:

Introduction to Computer Organization (EECS 370).
Data Structures and Algorithms (EECS 380).
Familiarity with UNIX and extensive C programming experience.


Textbook:


Other suggested references:



Grade Assignment:

Grades will be based on two exams, three programming assignments, and several homeworks according to the following tentative weights:

From my experience in teaching software courses in the past, most people do very well on programming projects. So, exams and homeworks matter significantly in determining the grade for most students. On the other hand, doing poorly on the programming projects is a sure way to fail the course

Grading Policy:



Programming Assignments:

A substantial component of the course involves three programming assignments on the implementation of operating systems. All the programming will be in the C or C++ programming language. You should be prepared to spend substantial amount of time on the readings and on programming projects. We expect code submitted for assignments to be readable and well documented, with ample and clear test cases demonstrating the behavior of your programs. Submission guidelines shall be described in the individual assignment handouts.

Recruiters and former students have often told us that being able to successfully work in groups is one of the most desirable skills for them. So, you are required to work in groups of two, on at least one of the programming assignments. We strongly recommend all the group members attend the same discussion section. Most of your project grading will be done by your TA, although exceptions may be made in order to balance load among TAs or to get your assignments graded on time. TAs have been instructed to grade in part on design and coding style, and be increasingly strict on this as the semester proceeds. Thus, it is not sufficient to just get a working project. It is also important that the code and design facilitate future enhancements.

We strongly recommend not leaving programming assignments to the last minute, as availability of workstations (and TAs) may become limited at crunch times. Questions take longer to get answered around deadlines, so it is best to encounter them early. Most of all, programming always takes longer than you think it will. Especially in this class!

You may use any Sun workstation that runs Solaris and gcc. If you are are an engineering student, we recommend that you use the CAEN workstations, either directly or by logging into one from another computer. If you are not an engineering student, you can pay a fee to get access to CAEN resources, or you may use the CAEN/ITD workstations (e.g., in the Media Union) or telnet to an ITD Sun Workstation (login.its.umich.edu).


Problem Sets:

There will also be several problem sets (typically, three or four) assigned during the semester, usually in weeks when a project is not due. Unlike projects, problem sets are to be done individually. The problem sets will often contain questions that have appeared on the exams in the past or that help provide a better understanding of the material. Hence, they are an important part of the course.


Policy on Collaboration:

We expect adherence to the Engineering Honor Code in all assignments and exams. All students are expected to adhere to the highest ethical and professional standards in all work performed for this class. All homework assignments are to be completed on your own. You are allowed to consult with others during the conceptualization of a problem, but anything you turn in for grading must be entirely your own original work. Violation of this policy is grounds for us to initiate an action that would be filed with the Dean's office and would come before the Honor Council. If you have any questions about this policy, PLEASE do not hesitate to contact the instructors.



The University of Michigan EECS Department. Last update: Jan. 5, 1999.