|
TA: Haichen Shen (haichen AT cs DOT washington DOT edu)
Office hours: by appointment (send email)
Lectures: Tuesdays, 6:30pm-9:20pm, in CSE 305.
Prerequisities: the basic prerequisite is to have taken an undergraduate operating systems course (CSE 451 or equivalent) or an undergraduate networks course (CSE 461 or equivalent). If you haven't taken an undergrad OS or networks course, please come talk to Arvind.
Readings: Think of this course as halfway between CSE 461 (undergraduate networks) and CSE 561 (graduate networks). The readings are textbook material and supplemental research papers. The textbook material is designed to help you understand the basics of networking principles; the research papers are to look at some issues more deeply.
Textbook: Computer Networks, 5th edition, Tanenbaum and Wetherall. (You need the 5th edition, it is different than the 4th.)
Blogs: After reading the research paper for the week, you are required to add a unique comment to the discussion of one of the questions for the paper before 2pm on the day of class in which the paper will come up. (This is to give time for everyone to read the blog entries before class.) Note that the earlier you post, the easier it is to be unique. Please keep blog entries short: they can be anything that provides insight into the question being asked, e.g., providing a direct answer, agreeing and elaborating a point in prior answers, disagreeing with prior answers, pointing out related issues, etc. We will automatically grant one mulligan during the quarter, if you neglect to post.
Project: Individual projects. More details coming soon.
Exam: No exams.
https://catalyst.uw.edu/gopost/board/arvindk/34594/and the link to the Hotcrp site for posting blog entries:
http://hydralisk.cs.washington.edu/csep561/and the link to the assignment dropbox:
https://catalyst.uw.edu/collectit/dropbox/arvindk/29361and the link to the course videos:
http://courses.cs.washington.edu/courses/csep561/13au/video/
Date |
Reading |
Notes |
Textbook |
Oct 1 |
Introduction/Physical layer
|
intro | TW Secs: 1.3-1.4 |
Oct 8 |
Physical/Link layer
|
physical | TW Secs: 2.1-2.3, 2.5, 3.1-3.3 |
Oct 15 |
Link layer
|
link | TW Secs: 3.2, 4.2-4.4 |
Oct 22 |
Network layer
|
IP | TW Secs: 5.1, 5.5-5.6 |
Oct 29 |
Routing layer
|
Routing | TW Secs: 5.2, 5.6 |
Nov 5 |
Transport layer
|
Transport | TW Secs: 6.4, 6.5 |
Nov 12 |
Congestion control
|
Congestion control | TW Secs: 6.3, 6.5 |
Nov 19 | Datacenter networks | Datacenters | |
Nov 26 |
Web/P2P
|
Web/DNS | TW Secs: 7.1, 7.3, 7.5 |
Dec 3 |
Security
|
Security | TW Secs: 8.1-8.6 |
You should also be able to do the programming assignments on your own personal machines; none of them require large or exceptionally powerful machines. I'd recommend doing your work on Linux; I'd start with a standard Linux Ubuntu distribution. Note that the department has made virtual machine images available with the departmental linux installation on them. You'll need to get ahold of VMware to use them.
A few rules of the road are worth mentioning. For design questions, you should feel free to talk with each other about the question and ideas that you come up with. You should not, however, share your written answers with each other directly. If you do discuss ideas with each other, please cite who you discussed with in your turned in work. This is mostly so that you get in the habit of properly attributing collaborations.
Similarly, you should feel free to talk with each other about the programming assignments, and share ideas as you see fit. You can also make use of Google or other resources. However, you must not share code with each other, or rely on code you find else where, such as the Web, to solve the programming assignment directly: you must implement your own code to solve each programming assignment. Unless the programming assignemnt specifies otherwise (and a few of them will), tou can pick whatever programming environment or tools to build on that you like -- e.g., you can make use of shells, interpreters, and within reason, libraries or other building blocks that don't directly solve the problem for you. As before, if you do discuss a programming assignment with someone else or find useful sources of information (e.g., code or technical descriptions on the Web), please cite or otherwise attribute all of your sources.