Description and content
This course will deepen your understanding of complex computer systems:
how these systems work, how to approach a given system or
proposal critically, and how to design and build systems.
We are going to start with an overview of computer networking
(focusing on the wired Internet), and then cover systems security in
depth. From these two topics, you will learn "how today's networked
services work." (The topic of security is an effective way to
communicate this understanding because thinking through security
requires considering
many aspects of a system. Plus, security is interesting.)
Where we go after these two units will depend in part on student
interest. Options are to dive into security in even more depth or to
branch out and cover concurrency and parallelism, performance analysis,
distributed systems, etc.
Here's a FAQ about the registration mechanics
and expected difficulty.
The work
- Class meetings will be a combination of lectures and
discussion of assigned research papers. The schedule is
here.
- Assigned readings should be completed before class.
(See here for how the
readings, discussions, and grading relate.)
- Labs are described here.
- Exams are described here.
- There may be short homework exercises to reinforce the
course material.
We assume that you check the announcements (either on this site or by
RSS) every 24 hours. Also, we will use
Piazza. Finally, we
will occasionally email you (for the most urgent communications). You
are responsible for monitoring all three of these media.
A note about the labs
We recommend
that you start the labs long before they are due. The standard advice is
"Start the labs early", but that is not quite right. The best advice, we
think, is "Start the labs on time, but on time is probably much earlier
than you think it is".
Acknowledgments
We are indebted to the staff of
MIT's 6.858.
This site relies on software to generate course Web pages,
developed by Dave Andersen and Nick Feamster.