The past few years have seen a remarkable growth in the global network infrastructure. The Internet has grown from a research curiosity to something we all take for granted, and is becoming as essential as the ubiquitous telephone and utility networks. It has been able to withstand rapid growth fairly well and its core protocols have been robust enough to accommodate applications that were unforeseen by the original Internet designers, such as the World Wide Web.
How does this global network infrastructure work and what are the design principles on which it is based? In what ways are these design principles compromised in practice? How do we make it work better in today's world? How do we ensure that it will work well in the future in the face of rapidly growing scale and heterogeneity? And how should Internet applications be written, so they can obtain the best possible performance both for themselves and for others using the infrastructure? These are some issues that we will grapple with in this course. The course will focus on the design, implementation, analysis, and evaluation of large-scale networked systems.
Topics include internetworking philosophies, unicast and multicast routing, congestion control, network quality of service, mobile networking, router architectures, network-aware applications, content dissemination systems, network security, and performance issues. Material for the course will be drawn from research papers, industry white papers, and Internet RFCs.
If your networking background is rusty, you should page material in from one of these excellent books. In particular, I highly recommend the book by Peterson and Davie or the book by Kurose and Ross.
Knowledge of elementary probability (e.g., 6.041, 6.042, or equivalent) and some applied statistics will be helpful.
Enrollment may be limited.
If you feel you know enough about networking, an alternative subject to 6.829 is 6.824. 6.824 is a graduate equivalent of 6.829, but focuses on the engineering of computer systems. If you are a graduate (esp. PhD) student in systems or networking, we recommend that you take both classes during your graduate career at MIT. You must not take them both in the same term, though, since both have heavy-duty projects.
If you're an undergraduate and want practical experience with computer systems, consider 6.097, where you'll learn how to build a stripped-down functioning kernel from scratch.
In addition, there will be a few problem sets assigned during the term. We expect to use the VINT network simulator, ns-2 for some of the problem set questions. In many cases, we expect ns-2 to be useful for your project too. We strongly encourage you to get familiar with ns-2 as soon as you can, by installing it on your machine and playing with it. While not comprehensive, the available documentation is quite good and adequate to start using it. Problem sets will constitute 25% of your grade.
We will have two in-class quizzes. These count for 30% of your final grade.
Finally, class participation and performance in surprise quizzes (we reserve the right to hand out a few of these during the term) counts for 5% of your grade.
In summary:
40% - Course project (paper + presentation)
25% - Problem sets
30% - Two quizzes
5% - Class participation, enthusiasm and energy-level!
Remember, this is a graduate class and grades should not be your primary or only motivator! What matters is how much you learn about research in networking and how much it excites you. We hope that this class and the project you work on meet that goal.