Software Systems
Spring 2005
Syllabus
Software Systems covers topics in Operating Systems, Networks and
Databases. 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
analysis.
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
programming skills.
Work in this class will include readings from a variety of
sources, homeworks (some of which will involve programming), a final
project, two 1.5 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
the class.
- 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 February 15
and April 5. The final exam will
be given during the final exam period.
If you miss one of the in-class exams for an extremely legitimate
reason, your final grade will be based on the other exams. If you
miss one without a legitimate reason, you will receive a zero. 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
than never!
- 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, May 5.
I will provide more information about the
projects later.
- 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. Unfortunately, my email accounts
are constantly hammered by an astounding amount of spam, which means
that I sometimes lose email, either because it gets caught in a spam
filter or because I delete it without recognizing it as legitimate.
If your email goes unanswered, please give me another chance. 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
configuration) at
http://lists.olin.edu/mailman/listinfo/software_systems.
It is appropriate to use this mailing list to discuss anything
pertaining to the class, or to 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
is collaborative).
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
Honor Code.
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.
- Process abstraction, indexing, address space.
- Timesharing, scheduling.
- Memory management, allocation.
- File system implementation, database implementation.
- Performance evaluation: measurement, modeling, experimental
design.
Depending on student interest (and time), we will cover
some of these additional topics:
- I/O implementation, interrupt handling, real time OS.
- Threads and synchronization.
- 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.
|