3013 Detailed Information
Time: 12:30pm - 1:20pm
Place: Atwater-Kent, room 116
This is an introductory course in the design of operating systems. It
covers principles, design decisions, design techniques, policies, and
mechanisms. The course focuses on the design of general-purpose
multiprogramming systems and covers processes, resource allocation,
concurrency, memory management, time management, synchronization,
mutual exclusion and possibly file systems and some distributed
systems issues. The goals are 1) to acquaint students with the
components of a structured operating system, 2) to show students
abstractions underlying design choices, tradeoffs, and their
consequences, and 3) to give students "hands on" experience with
operating systems and related applications.
Knowledge of C. Working knowledge of common data structures such as
stacks, queues, and linked lists. An interest in learning about
operating systems. Recommended background CS courses are: CS2011
Operating Systems Concepts. Fourth Edition.
by A. Silberschatz and P.B. Galvin.
Addison-Wesley, Mass. 1995.
Modern Operating Systems. Andrew S. Tannenbaum,
Prentice Hall, 1992. A good, easy-to-read text. More
emphasis on distributed systems than our text.
Operating System Design, the XINU Approach. Douglas Comer.
Prentice-Hall, 1984. A superb example of a specific operating
system that includes complete source for a hierarchically structured
Advanced Unix Programming.
by Marc J. Rochkind. Prentice-Hall, NJ 1985. A book packed with
tricky, complicated code samples and definitions. Like "The
C Programming Language" (below) for Unix-specific system stuff.
Advanced Programming in the Unix Environment.
by W. Richard Stevens. Addison-Wesley, Mass. 1992. An excellent
book for doing tricky, technical Unix programming.
The C Programming Language. Brian Kernighan and Dennis
Ritchie. Prentice Hall, 1988. A concise book on C programming from
the inventors of the C language.
Final grades will be computed as follows:
Grading policy for each project and homework will be provided at the
time of the assignment. In general, each assignment will have a basic
objective for the majority of the assignment points. There may be an
extended objective for demonstrating additional work and
- Projects: 35%
- Homework: 10%
- Midterm Exam: 25%
- Final Exam: 30%
Final grades will reflect the extent to which you have demonstrated
understanding of the material, and completed the assigned
projects. The base level grade will be a "B" which indicates that the
basic objectives on assignments and exams have been met. A grade of
"A" will indicate significant achievement beyond the basic objectives
and a grade of "C" will indicate not all basic objectives were met,
but work was satisfactory for credit. No incomplete grades will be
assigned unless there exist exceptional, extenuating circumstances.
Similarly, no makeup exams will be given unless there exist
exceptional, extenuating circumstances.
There will be 3-4 programming assignments with the first one or two of
these assignments also serving as an introduction to writing programs
in the Unix environment. The intent is to familiarize the student with
the Unix system, its editor, debuggers, etc. C and Unix will NOT be
taught as part of this course. System calls and other aspects of Unix
will be introduced as the course progresses and programming projects
There will be about 4 short homework assignments for which you must
provide written answers. They are not a large portion of your grade
for this class, but they do help be sure you understand some of the
fundamental operating system concepts that you cannot learn through
just programming. Homeworks are to be turned in individually.
Discussion of problems among students is encouraged, but when it comes
to ultimately solving the problem, your answers must be your own.
There will be two in-class exams (including a final exam during the
last week). There is a remote possibility of a pop quiz for which no
advance notice will be provided. Exams will be closed book and closed
notes. The majority of each exam will cover basic ideas and objectives
of the class with a few questions testing additional understanding and
Late programs and homeworks will be be penalized 10% of total
assignment value per day (with the weekend counting as one day) or
partial day, and no assignments will be accepted after seven days
beyond the due date. All programs and written homeworks are due at the
start of class on the due date. Homeworks and programs turned in
after the start of class will be counted late. Projects will be
submitted as directed in class. Exceptions to these rules can be made
Cheating ... don't do it. Cheating, either by taking credit for work
you did not do or getting unauthorized help on homework or exams, is a
serious offense. Punishment is in an automatic NR for the course.
Note, discussion among students and even sanctioned group work is
encouraged, but blatant copying of homework or code is not allowed.
When in doubt, ask!
There is no specific CS laboratory assigned for this course.
Historically, the Systems Lab (FLA25) has been used for this course
and it continues to be used by upper-level CS students. Students may
use this lab or any other CCC or CS supported lab for doing
programming assignments. The course requirement is that all
assignments must be done in C under a Unix-like operating system.
However, your programs must compile and run on the CCC machines as
that is where they will be graded.
to the CS3013 Home Page