Syllabus: Operating Systems
CS 377 Operating Systems (Fall 2002)
Course Web page:
Text: Applied Operating System Concepts, 1st ed. Silberschatz, Galvin and Gagne,
John Wiley Publishers, 2000, ISBN 0-471-36508-4
The following materials will be on Reserve at the Main University
Library (note that due to a significant reduction in library funding, these are not available at the Physical Sciences Library):
- Silberschatz, Galvin, Gagne, Applied Operating Systems Concepts, 1st ed
- Tanenbaum, Modern Operating Systems
- Assorted Java and Unix references
A complete list is available at
- Other Pointers:
This course will provide an introduction to operating system design
and implementation. The operating system provides a well-known,
convenient, and efficient interface between user programs and the bare
hardware of the computer on which they run. The operating system is
responsible for allowing resources (e.g., disks, networks, and
processors) to be shared, providing common services needed by many
different programs (e.g., file service, the ability to start or stop
processes, and access to the printer), and protecting individual
programs from one another.
The course will start with a brief
historical perspective of the evolution of operating systems over the
last fifty years, and then cover the major components of most
operating systems. This discussion will cover the tradeoffs that can
be made between performance and functionality during the design and
implementation of an operating system. Particular emphasis will be
given to three major OS subsystems: process management (processes,
threads, CPU scheduling, synchronization, and deadlock), memory
management (segmentation, paging, swapping), file systems, and
operating system support for distributed systems.
CMPSCI 187: Programming with Data Structures (we assume that you are
comfortable with Java), and CMPSCI 201: Architecture & Assembly
Language, or equivalent.
Requirements and Grading
You are expected to attend class regularly, read the assigned
reading before class, and participate in class discussions. The
course will be graded on a curve.
- 6 Homeworks & Several Pop Quizzes (20%)
- 4 Programming Projects in Java (39%)
- 3 Exams (39%)
- Exam 1: first 1/3 of course
- Exam 2: second 1/3 of course
- Final Exam: 50% on final 1/3 of course and 50% over first 2/3s
- Class participation (2%)
This course covers a lot of material. Because late assignments will
seriously impact your ability to follow the next section of the
course, I strongly encourage you to be on time in turning them in. To
that end, late programming assignments will be penalized 10% per day,
up to 4 days (no credit after 4 days). Late homework assignments will
not be accepted (no exceptions).
Cooperation and Cheating
Feel free to discuss homework and labs with other members of the
class, myself, or the TA. However, do not look at or copy another
student's solution to a homework assignment or a lab.
Your discussions must be limited to achieving an understanding of
the problem - but
the solution that you give must be your own. Exchanging, or
downloading from the net, homework or lab solutions is cheating. If
caught, you will be reported to the University and you will lose
credit for the course.
Many of the materials created for this course are the intellectual
property of Prashant Shenoy and Andrew Fagg.
This includes, but is not limited to, the
syllabus, lectures and course notes. Except to the extent not protected
by copyright law, any use, distribution or sale of such materials
requires the permission of the instructor. Please be aware that it is
a violation of university policy to reproduce, for distribution or sale,
class lectures or class notes, unless copyright has been explicitly waived
by the faculty member.
This page is online at http://www-all.cs.umass.edu/~fagg/classes/377/syllabus.html
Andrew H. Fagg
Last modified: Fri Sep 20 14:30:37 2002