The purpose of this course is to teach computer software system
structures from a design point of view. We will look at different
structuring techniques, and we will examine their usage in both
important historical systems and in modern systems.

In addition to learning about different system structures and
different operating systems, you will learn:

How to read a research paper in an objective manner.

How to write a critical analysis of the research described in a paper.

How to articulate your understanding of and insights into a research paper.

How to synthesize research themes and topics across multiple papers.

Reading List

The course does not have a textbook. Instead, the course material
will come from seminal, noteworthy, or representative papers from the
literature. Each lecture (except the first) will have two assigned
papers to read. You should read these papers before coming to
class, and be prepared to discuss them (written evaluations are not
required). Occasionally we will also list recommended papers; you are
encouraged to read those, but not required. Students often find it
useful to discuss papers together before the class period, and we
encourage the practice (see more on collaboration below).

The structure of this course is unusual in that there are no
lectures or presentations during the class period. Instead, we will
discuss research papers that we will have all read before each class
period. I will lead discussions by asking questions of students at
random in class. Note that your answers to these questions form a
part of your overall grade, so it is important that you both show up
to class as well as read the papers carefully.

Because of the unusual format of this class, I will not grade you
on class participation during the first two weeks of class.

Occasionally, students have to miss class for one good reason or
another (e.g., present a paper at a conference, go on a business
trip). If you find yourself in this situation, contact me ahead of
time to let me know you will be gone. Since you will not be in class
to participate in discussion, I also ask that you write a brief
evaluation of the papers for the class that you will miss. Your
evaluation should address the following questions:

What problem does the paper address?

How is it different from previous work, if any?

What is the approach used to solve the problem?

How does the paper support or otherwise justify its arguments and conclusions?

Was the paper, in your judgement, successful in addressing the problem?

Your evaluation should be concise, with just one to a few
sentences per question. Also, below each paper on the reading list is
a question specific to the paper topic. Please conclude your
evaluation by answering this question. Email your evaluations to me.

Homework

We will have three written homeworks. The homeworks serve as good
practice for answering questions found on the final and the MS
comprehensive exam.

We will have one exam at the end of the quarter. Questions on the
exam will be similar to questions on the homework and in the reading
list. The exam is closed notes. Two past exams that you can use as
study aids are:

Late assignments will not be accepted without prior approval
from the instructor.

Collaboration

Papers. I strongly encourage you to discuss the papers with
other students in the class. — you may have insights that
others do not, and vice versa. Often groups of students form reading
groups. Note that group discussion, however, is not an effective
substitute for actually reading the paper.

Homework. You can also discuss the homework problems, but
you must independently complete the assignments yourself. As a rule
of thumb, you can discuss a homework problem in the lounge with
others, walk home, wash the dishes, and then write up your answer to
the problem on your own. You cannot, however, discuss homework
problems with others and then write your answers to those problems at
the same time.

Project. You can complete the course project as a team. You
can discuss project materials with others in the course, but your code
must have been authored exclusively by members of your team; you may
not copy code from another team or make your code available to others.

Exam. The exam is an individual effort and closed book.

You are expected to be aware of UCSD's academic
honesty guidelines. Any violation of the course or university
policies will be treated very seriously, and could lead to severe
repercussions. Don't cheat. It's not worth it.