CSE 291-D is a 4-unit advanced graduate subject with
lectures, labs, a midterm, final, and term project.
Lectures (An hour and a half, twice a week)
Each lecture will have one assigned paper to read. You should read
this paper before coming to class, and be prepared to discuss
it (written evaluations are not required). Occasionally we
will also list recommended papers; you are encouraged to read those,
but not required.
- 1/2 paper discussion
- 1/2 lecture -- Note the new order!
CSE 291-D will have a mid-term and a final.
There are programming labs due weekly for the first half of the term.
In the second half of the term you'll build a system of your
choice, in small groups. It is expected that this system will build
on the software artifacts created as part of the lab assignments, but
this is not required. You'll also write a research-style paper on
Grade for this class will be based on:
Due to the demanding nature of the programming assignments, they
will be accepted late. The complete polciy for late
assignments will be announced at the beginning of the term.
- labs (programming assignments) 30%
- project (software artifact and paper) 40%
- mid-term and final 30%
Some programming assignments must be completed individually, others
may be completed in teams. The requirements will be explicitly stated
for each assignment. For solo assignments, you must write all
code that you submit, excepting any code that was provided to you as
part of the assignment; for team assignments, the code must have been
authored exclusively by members of your team. You may (and, in fact,
are encouraged) to discuss the assignments with others, but you may
not copy code from another team or make your code available to others.
Of course, code may be freely shared within teams on team assignments.
Exams will be individual effort and closed book. You are expected to
be aware of UCSD's academic
honesty guidelines. Any violation of the course or institute
policies will be treated very seriously, and could lead to severe
repercussions, up to, and including, expulsion. Don't cheat. It's not
The following books may help provide background for CSE 291-D or help with
lab programming. None of them are required. They are listed in rough
order of usefulness.
- UNIX Network Programming. Volume 1: Networking APIs: Sockets and
XTI. W. Richard Stevens.
- Modern Operating Systems. Andrew Tanenbaum. Prentice Hall.
- Distributed Systems: Principles and Paradigms, Andrew Tanenbaum
and Maarten van Steen, Prentice Hall.
- The Design and Implementation of the 4.4 BSD Operating
System. Marshall Kirk McKusick, Keith Bostic, Michael J. Karels, John
- The C++ Programming Language. Bjarne Stroustrup. Addison Wesley.
- Advanced Programming in the UNIX Environment. W. Richard Stevens.