- Professor: Allen Downey, firstname.lastname@example.org,
Olin Center 359, x2558.
- Class time: Monday and Thursday 10-11:50am.
- Tanenbaum, Modern Operating Systems, Second Edition.
- Oualline, Practical C Programming, 3rd Edition.
- Downey, The Little Book of Semaphores, Second Edition.
I will hand this book out in class; you don't have to buy it, and
you should avoid looking at the online version!
- Web page: The class web page is at
http://whiteboard.olin.edu/ss. On campus, it can be
abbreviated wb/ss. There is also a class wiki at
- Class mailing list:
Software Systems covers topics in Operating Systems, Networks and
Runtime systems. It is intended to give students an understanding of the
software systems that underlie common application programmer
interfaces, and to allow students to develop and apply tools of system
During the first 8 weeks, students work on series of exercises
covering the memory hierarchy, caching, the process abstraction,
indexing and address spaces, timesharing, scheduling, and allocation.
During the next 6 weeks, students work in small groups on an extended
project that applies techniques of performance evaluation
to a problem of the students' choice. These projects might include
workload measurement and modeling, simulation, modification of
existing systems, or implementation of new operating system features.
Regular class meetings will be used for lectures,
hands-on work and collaborative work, as well as written evaluations.
The prerequisite for the class is Software Design or intermediate
Work in this class will include readings from a variety of
sources, homeworks (some of which will involve programming), a final
project, two exams, a final exam, and written quizzes.
The total course load is intended to be 12 hours per week (including
class time); the load should be spread evenly across the semester.
Final grades are determined by a weighted average of exam scores,
quizzes, homeworks, the project, and an additional factor that
reflects my subjective impression of the quality of your work, your
progress and effort, and your contribution to the educational goals of
- Quizzes: We will have about one quiz per week. The quizzes are
intended to help figure out how things are going, so they make up a
small part of the final grade. Since there are many quizzes during
the year, it is too difficult to try to schedule makeups and other
accomodations. Instead, I will drop the lowest quiz score at the end
of the semester.
- Exams: The two in-class exams are scheduled for Monday 2 October
and Monday 6 November. The final exam will
be given during the final exam period.
If you miss one of the in-class exams, your final grade will be based
on the other exams, possibly with some points deducted, depending
on the reason. If you miss both in-class exams or the final for any
reason, you cannot pass the class. In that case it may be possible to
take an Incomplete, at the discretion of the Office of Student Life.
- Homeworks: During the first 6-8 weeks of the class, we will have
weekly homeworks that are meant to give you an opportunity to apply
and practice the material we cover in class. Homeworks are graded
on a coarse scale: check-plus has the numerical value 10/10;
check has the value 8/10; check-minus has the value 6/10.
I believe that these homeworks are most effective if we have an
opportunity to discuss them in class shortly after the due date.
In order to make that possible, I will have to enforce the due
dates with some strictness. Homework that is up to one day late
can get a check or lower; homework that is more than one day
late can get a check-minus or lower. But late is still much better
- Project: During the last 6-8 weeks of the class, you will be
working on a project. The final report for the project is due on
the last day of instruction, December 12.
I will provide more information about the
- Competency assessment: One part of this class is focused
on the design and implementation of software systems; it is
intended to develop competency in Design and Diagnosis. A second
part of the class is focused on performance evaluation and modeling;
it is intended to develop competency in Quantitative and Qualitative
Analysis. Finally, the organization of the class projects is
intended to develop competency in Lifelong Learning. I may assess
some or all of these competencies in this class.
The easiest way to reach me is by email; I read my mail fairly often,
even in the evening and on weekends. You are also welcome to call me
at x2558 any time, or at home during normal waking hours.
If I am in my office and my door is open, you are welcome to come
in and talk to me. If I can't meet with you, I will let you know,
and schedule a meeting for later. When I know my schedule for the
semester, I will make it available.
You are encouraged to communicate with the other members of the
class using whatever means you choose, including the class mailing
list. You can join the mailing list (and change your membership
It is appropriate to use this mailing list to discuss anything
pertaining to the class or the topic of the class, broadly
defined. For example, I will probably post messages about news
items that pertain to computer science or technology and society.
Some of the coursework you will do this semester is intended to
help you develop understanding of the material, and some is
intended to allow me to evaluate your understanding. While you
are developing your understanding, you are encouraged to work
with other students, but when you are being evaluated you will
have to work alone (with the exception of the project, which
As always, your actions in this class are bound by the Honor Code; in
particular, the principle of integrity states, `Each member of the
college community will accept responsibility for and represent
accurately and completely oneself, one's work, and ones actions.''
When you submit course work for evaluation, you are representing that
the work is entirely yours, unless you state otherwise. Representing
someone else's work as your own is a serious violation of the
The following are the topics we will be covering,
roughly in the order we will be covering them:
- Basic performance modeling, bandwidth and latency.
- Memory hierarchy, caching, locality.
- Threads and synchronization.
- Process abstraction, indexing, address space.
- Timesharing, scheduling.
- Memory management, allocation.
- File system implementation, database implementation.
- Performance evaluation: measurement, modeling, experimental
Depending on student interest (and time), we will cover
some of these additional topics:
- I/O implementation, interrupt handling, real time OS.
- TCP/IP, congestion control.
- OS support for parallel processing.
- Peer-to-peer networks, distributed hash tables.
- Garbage collection.
- Database performance and out-of-core algorithms.