Return to the 15-412 Home Page

15-412: Operating Systems

Course Syllabus

Dave Johnson and Gregory Kesden

Table of Contents

Course Description
Class Meetings
Instructors
Teaching Assistants
Prerequisites
Text
Assignments
Grading
Workload
Communication
Tentative Schedule
Policy on Collaboration
Policy on Late Work

Course Description

This course is intended to provide a basic understanding of the software that manages a computer's hardware resources to provide a powerful abstract interface on which user programs execute. The course focuses on the control and utilization of processor, memory, storage, and network resources. The concepts in this course include file systems, main and secondary storage management, virtual memory, process management and scheduling, interprocess communication, protection, security, synchronization of concurrent processes, deadlock, and an introduction to distributed systems.

The course is structured into two parts, a principles part and a projects part, with separate instructor for each part. This arrangement allows us to put more resources into the course, to pay more individual attention to your needs, and to make it more productive for you. We've carefully sequenced the scheduling of lectures and projects. By the time you are working on a project, we plan to have taught you the concepts involved in that project. Your implementation will then anchor these ideas in your mind. The two instructors will collaborate closely to ensure that the picture you get is a consistent one.
 


Class Meetings

Monday, Wednesday, and Friday, 10:30-12:20, Wean Hall 7500
 

Instructors

Dave Johnson, dbj@cs.cmu.edu, WeH 7124, x8-7399.

Gregory Kesden, gkesden+@cs.cmu.edu, WeH 8021, x8-1590.

Office Hours: M-F 3:00-4:00
(Also usually available earlier in the afternoon, and many evenings and nights).

Course secretary: Debbie Cavlovich, deb+@cs.cmu.edu, WeH 7108, x8-4750.

Dave Johnson will be primarily responsible for the lectures covering the operating system concepts from the textbook and exams. Gregory Kesden will be primarily responsible for the project assignments and for the lectures covering project-related materials.
 


Teaching Assistants

Michelle Berger
Office Hours: WeH 3108, 3:30 - 5:30 Tuesday, 3:00 - 5:00 Thursday
Jason Flinn
Office Hours: WeH 8208, 5:00 - 7:00 Wednesday and Thursday
Chris Palmer
Office Hours: WeH 8207, 3:00 - 5:00 Wednesday, 1:30 - 3:30 Friday
Benicio Sanchez
Office Hours: WeH 3108, 3:00 - 5:00 Monday, 5:30 - 7:30 Tuesday

Prerequisites

The prerequisites for this course are the CMU courses 15-212 (Fundamental Structures of Computer Science II) and 18-240 (Fundamentals of Computer Engineering), or their equivalent. In particular, you must be familiar with data structures and basic computer architecture concepts. You must also be proficient in C programming on UNIX systems.
 

Text

The textbook for the course is Operating System Concepts, by Silberschatz and Galvin, fifth edition, published by Wiley, 1999. It is available in CMU's bookstore. We will cover some topics in more depth than in the book, and will also cover some in a slightly different order.

There will also be several additional reading assignments, to be handed out in class during the semester.
 


Assignments

There will be 4 programming projects, a midterm exam and a final exam, and 4 written homework assignments. The programming projects will be done in groups of two students. The projects must be done on one of the Andrew systems running the Solaris operating system.

The exams may cover any material covered in the course. This includes the material from the lectures, from the assigned sections of the textbook, from the additional reading assignments handed out, from the programming projects, or from the homeworks.

The need for groups in the projects arises because of the size of the class. However, each of the partners in a group must fully understand the project and your group's solution in order to get the most learning out of the assignment. In addition, at the completion of each project, part of the grading of the project will be based on a demo you do of your project for the TA who is grading it. At the demo, both partners in a project group must fully understand the design, implementation, and operation of your group's solution to the project.

Both partners in a project group will also need to fully understand the project and your solution in order to do well on the exam questions relating to the projects. For example, a typical question might be: ``When you implemented X, you came across a particular situation Y that required some care. Explain why this simple solution Z doesn't work and describe how you solved it.''

We'll pick questions such that Y took a few hours to figure out. If you didn't take the time to work the problem yourself and just relied on your partner, you won't have enough time during the test to figure it out. Be careful - the insight you'll need will come only from actually solving the problem as opposed to just seeing the solution.
 


Grading

Your final grade for the course will be computed based on the following tentative weights for the individual assignments:
5%  First programming project 
10%  Second programming project 
20%  Third programming project 
15%  Fourth programming project 
15%  Midterm exam 
25%  Final exam 
10%  Homework total 
In addition, your weighted project average and weighted exam average must each be a passing grade in order to pass the course.
 

Workload

Since this is an 18-unit course, there is a substantial amount of work involved. Our best advice to you is to start each assignment early; don't wait till the last few days to try to do all the work. In particular, you will need to start on the programming projects early in order to make good use of your time during the assignment. These projects can be enriching if you stay on top of them; they can be impossible if you don't.
 

Course Communication

We will use the Andrew bulletin board academic.cs.15-412.announce to post announcements related to the course. You should check this bboard regularly for schedule changes, clarifications and corrections to assignments, and other course-related announcements.

There is also another bulletin board for the course, academic.cs.15-412, where anyone can post messages pertinent to the course. Although these will not be ``official'' messages, you may find the discussions there useful. We encourage you to use this bboard as a class resource. The TAs and instructors will not necessarily be monitoring this bboard.

If you want to contact all instructors and TAs with one e-mail message, you can use the distribution list address staff-412@cs.cmu.edu. This will be read by both instructors and all of the TAs. To get faster response, we suggest you send mail to this list rather than to individual instructors.

Finally, there is a Web page for the course at http://www.cs.cmu.edu/~412/ . This course syllabus as well as other up-to-date information about the course will be available via this Web page. Online versions  of most handouts distributed in class will also be available there.
 


Tentative Schedule

A tentative schedule for all assignments in the course will be available on the course Web page. Please check it frequently for updates.

The midterm exam is currently planned for Friday, March 3rd. It will be an in-class, closed-book exam, covering all material up to that point in the course.

The final exam will be a 3-hour, closed-book exam, covering all material for the entire semester, but with some emphasis on material from the second half of the course. The date and time of the final exam will be scheduled by the Registrar.
 


Policy on Collaboration

For homeworks and programming assignments, students are encouraged to talk to each other, to the TAs, to the instructors, or to anyone else about the assignment. This assistance, though, is limited to the discussion of the problem and perhaps sketching of general approaches to a solution. Each student must write out his or her own solutions to the homeworks. Each student must write his or her own code and documentation for the programming projects done as individuals, and each programming project group must write their own code and documentation for the programming projects done as a group. Consulting another student's or group's solution is prohibited, and submitted solutions may not be copied from any source. These and any other form of collaboration on assignments constitute cheating.
 

Policy on Late Work

Take project and homework deadlines seriously. Late assignments will not be accepted, except when there are extenuating circumstances and you have made prior arrangements with the instructors. If you are aware of unusual circumstances that preclude a timely submission (e.g., you have to be out of town for a wedding on the submission date) submit the assignment early or contact one of the instructors in advance to arrange for delayed submission without penalty. After-the-fact explanations will not be treated favorably. Sometimes, of course, unusual circumstances may arise without prior notice, but even in those cases, we urge you to try and alert the instructors before the submission deadline.