EECS-343 Operating Systems
Fall 2006

[Communication | Announcements | Homework | Projects | Outline | Lectures | Materials]

Syllabus (PDF)


Remember to check this regularly

Administrative Information


Fabián E. Bustamante
Technological Institute, L465
+1 847 491-2745
Office Hours: Tue. 3:30-4:30PM (or by appointment)


David Choffnes
Ford Design Center, Room 2-217
+1 847 491-7060
Office Hours: Thu. 3:30-5:00PM (or by appointment)

John Lange
Ford Design Center, Room 2-221
+1 847 467-4708
Office Hours: Mon. 3:30-5:00PM (or by appointment)

Final Exam

December 7 at 3PM (3-5PM) in the classroom.

CTEC Course Evaluation

You have the opportunity to register your opinions of this class. Please do so. I will continue using your comments for improving the course and your fellow students will refer to them when selecting classes and instructors.

The evaluations for the class will be completely anonymous; there will collected electronically and you may enter them from the computer in your room, the library or the labs.

You may access the CTEC online page (from Nov. 20 to Dec. 10).

Course Description

Catalogue Description: Fundamental overview of operating systems. Operating systems structures, processes, process synchronization, deadlocks, CPU scheduling, and memory management.

Detailed Description: Operating systems control all of a computer's resources and present users with the equivalent of virtual machines that are easier to program than their underlying hardware. This course provides an overview of fundamental operating system principles, complemented with discussions of concrete modern systems to help you understand how these principles are applied in real OSs. Topics covered include an overview of the components of an operating system, mutual exclusion and synchronization, implementation of processes, scheduling algorithms, memory management and file systems.

Although the main learning objective of the course is to understand the requirements, design and implementation of modern operating systems, at a higher level the course aims to provide you with a good grasp of basic abstractions employed in system-level software (such as processes, threads, virtual memory, caching, etc.), while uncovering the ``magic'' that happens inside the box.

The course has a strong project component intended to provide essential experience in designing and implementing complex systems and working as part of a team. In designing the projects and estimating their required effort/hours, I am assuming you are (1) familiar with basic computer organization and data structures and (2) capable of programming in C in UNIX (or UNIX-like) systems (experience with pointers, explicit dynamic memory allocation, multi-file projects, etc.).

Location and Time

In compliance with Section 504 of the 1973 Rehabilitation Act and the Americans with Disabilities Act, Northwestern University is committed to providing equal access to all programming. Students with disabilities seeking accommodations are encouraged to contact the office of Services for Students with Disabilities (SSD) at +1 847 467-5530 or SSD is located in the basement of Scott Hall. Additionally, I am available to discuss disability-related needs during office hours or by appointment.

Course Prerequisites

Communication Channels

There are a number of communication channels set up for this class:

Textbook and Other Readings

Optional Readings

Course Organization

The course is organized as a series of lectures, TA sessions, reading, homework, projects and exams:


There will be two kinds of homework assignments given throughout the class: reading assignments and textbook-style questions. You should have finished the assigned reading before coming to lecture. In addition, there will be a set of written homework assignments that must be done alone and turned in by midnight on the due date (see course policies below).


As you can deduce from the allocation of weights for grading, programming projects make up a major portion of this class. There will be four (4) projects. Except for the first ``warm-up'' assignment on which you will work on by yourself, all other projects are to be done by teams of two (2) people. Both partners should work cooperatively on the design, implementation, and testing of their solution.

The following table of deadlines should serve you as a guideline for planning your quarter. You are given about two weeks per project. This should be plenty of time if managed carefully. Keep in mind that projects cannot be handed in more than three days late (check the course late policy for details). You will then have the chance to revise one of your project and re-submit. Your final grade will be the average of your first and revised submission.

You can get a copy of the handout and skeleton for any of your projects here. The skeleton for any project would be available in the format blah.tar.gz. You should save (transfer) this file to your Unix box and run % gunzip blah.tar.gz and % tar xvf blah.tar, in that order. This will create a skeleton directory that will include the source code and makefile for the skeleton as well as the associated regresion testing framework.

Info on the Teaching Lab.

To submit your projects use the following page: SUBMISSIONS.


There will be a midterm and a final exam. Exams will be in-class, closed-book (except for one page of notes you are allowed to bring in), and will cover materials from lecture, required readings and projects. The final exam will not be cumulative.

The final review session will be held in Ford 3-340 on Monday, December 4th from 5:30pm to 6:30pm. The room that we are using is on the top floor of Ford, just to the left (west) of the stairs.


I use a criterion-referenced method to assign your grade; in other words, your grade will be based on how well you do relative to predetermined performance levels, instead of in comparison with the rest of the class. Thus, if a test has 100 possible points, anyone with a score of 90 or greater will get an A, those with scores of 80 or greater will get a B, those with scores of 70 or greater will get a C, and so on. Notice that this means that if everyone works hard and gets >90, everyone gets an A.

Total scores (between 0 and 100) will be determined, roughly, as follows:

A note about class participation: while not explicitly included as an item in the previous list, your participation in class will be taken into consideration throughout the quarter and when granting partial and final scores/grades.

Course Outline and Approximate Dates

Because one has to be an optimist to begin an ambitious project, it is not surprising that underestimation of completion time is the norm.
-- Fernando J. Corbató, ``On Building Systems that Will Fail'', 1990 Turing Award Lecture.

09/19 Introduction 1
09/21 Operating Systems Concepts and Structure 1 & 2
09/26 Processes 3 (3.6 excluded)
09/28 Processes 3 (3.6 excluded)
10/03 Threads 4
10/05 Scheduling 5
10/10 Process Synchronization 6
10/12 Process Synchronization 6
10/17 Process Synchronization 6
10/19 Deadlock & Review 7
10/24 Memory Management 8
10/26 Midterm -
10/30 Memory Management 8
11/02 Virtual Memory 9
11/07 Virtual Memory 9
11/09 File Systems Interface 10
11/14 File Systems Implementation 11 (11.9-10 excluded)
11/16 Mass-storage & I/O Systems 12 & 13 (13.6 excluded)
11/21 Protection & Security 14 & 15
11/23 Thanksgiving -
11/28 Introduction to Distributed Systems 16
11/30 Research in Operating Systems/Review for final Topic will be posted in Lectures
12/07 Final -


Late policy:

Unless otherwise indicated, homework assignments and projects are due by midnight on their due date. If you hand in an assignment late, we will take off 10% for each day (or portion thereof) it is late. Assignments that are three or more days late receive no credit.

Cheating vs. Collaboration:

Collaboration is a really good thing and we encourage it. On the other hand, cheating is considered a very serious offense. When in doubt, remember that it's OK to meet with colleagues, study for exams together, and discuss assignments with them. However, what you turn in must be your own (or for group projects, your group's own) work. Copying code, solution sets, etc. from other people or any other sources is strictly prohibited.

Last modified: Thu Nov 6 13:28:50 CST 2008