CS4700/CS5700 - Fundamentals of Computer Networks

Spring 2011

General Course Information

Room and Time:108 West Village H
Mondays, 6:00pm - 9:00pm
Instructor:Alan Mislove
250 West Village H
Office Hours:Tuesdays, 3:00pm - 5:00pm
E-mail is the easiest and fastest way to contact me.
Please put the string "[CS4700] " in the subject line of your message
Teaching Assistant:Abutalib Aghayev
Lab Hours:TBA
Class Forum:On Blackboard

Course Description

Computer networking is a rapidly advancing field. The Internet is already an integral part of society. It is therefore important for computer scientists and computer engineers to be familiar with the fundamentals of computer networking. This course will emphasize on the architecture, algorithms, and protocols of the Internet. Topics include local area networking, routing, congestion control, network security, and applications such as peer-to-peer and content distribution networks. This course will be project-centric, and students will work in groups on hands-on projects to learn how to build Internet applications as well as network protocols. The graduate version of this course will have additional requirements for each of the homework and projects.


The official prerequisites for this course are CS 3600 and CS 2600 (or equivalents). I also expect you to understand the basics of computer architecture and operating systems, and to have experience implementing non-trivial systems-type projects. Specifically, you should know what a processor is, how memory is organized, and what the user/kernel boundary is. You should also be able to read UNIX manual pages, and be able to familiarize yourself with UNIX utilities.

This course will be project-centric, and all students will complete in projects in groups of two (or possibly three, if necessary). Thus, to succeed in this course, you must be able to work in a group. I will allow you to form your own groups, and the course staff will serve as a matching service if necessary. As you are free to choose your partner(s), I will not be sympathetic to complaints at the end of the semester about how your group-mates did not do any work.

Finally, to succeed in this course, you should have some experience with programming in C and UNIX development tools (e.g. make, gcc, gdb). It is also highly recommended that you become familiar with using a debugger, as this will greatly aid you in completing the projects. At a high level, you should be motivated, eager to learn, willing to work hard, and make up, on your own, any prerequisite deficiencies you may have.


The textbook for the course is:

Computer Networks: A Systems Approach, 4th Edition
   by Larry Peterson and Bruce Davie, Morgan Kaufmann.

There is also a supplement (that you are not required, but strongly recommended to get):

TCP/IP Sockets in C
    by Jeff Donahoo and Ken Calvert, Morgan Kaufmann.

The following books are recommended for reference:

Computer Networking: A Top-Down Approach Featuring the Internet.
   by Jim Kurose and Keith Ross, Addison-Wesley.
   ISBN: 0-201-61274-7

High-speed Networks: TCP/IP and ATM design principles
   by William Stallings, Prentice-Hall, 1998.
   ISBN 0-13-525965-7

TCP/IP Illustrated volume 1
   by  W. Richard Stevens.  Addison-Wesley.
   ISBN: 0-201-63346-9


Projects (4)2%, 10%, 13%, 15%, respectively
Exams15% and 20%, respectively
Homeworks4 at 5% each


Handouts, Homeworks, Readings, and Projects

Rough Schedule

Homework 1 due at the beginning of lecture on February 7th, 2011
Homework 2 due at the beginning of lecture on March 7th, 2011
Homework 3 due at the beginning of lecture on March 21st, 2011
Homework 4 due at the beginning of lecture on April 11th, 2011

Project 0 due by 11:59pm on January 24th, 2011
  Stub code
Project 1 due by 11:59pm on February 14th, 2011
Project 1 Primer
Project 2 due by 11:59pm on March 21th, 2011
Project 3 due by 11:59pm on April 18th, 2011
  Starter code is available snark.tgz, more information is available from at the snark project homepage.

To read for class on January 24th, 2011: End-to-End Arguments in Systems Design by J.H. Saltzer, D.P. Reed, and D.D. Clark

To read for class on March 28th, 2011: Incentives build Robustness in BitTorrent by B. Cohen, and BitTorrent is an Auction: Analyzing and Improving BitTorrent's Incentives by D. Levin, K. LaCurts, N. Spring, and B. Bjattacharjee


Lecture Slides

January 10th, 2011 Lecture 1 (Intro), Lecture 2 (History), Lecture 3 (C Socket Programming), Lecture 4 (Switching), Lecture 5 (Network Architecture)
January 24th, 2011 Lecture 5 (Network Architecture) (continued), Lecture 6 (Physical and Data-link Layer), Lecture 7 (Media Access Control), Lecture 8 (DNS Primer for Project 1)
January 31st, 2011 Lecture 7 (Media Access Control) (continued), Lecture 9 (Bridging), Lecture 10 (Internet Protocol)
February 7th, 2011 Lecture 10 (Internet Protocol) (continued), Lecture 11 (Intra-domain routing), Lecture 12 (Inter-domain routing)
February 14th, 2011 Lecture 13 (Reliability), Lecture 14 (TCP)
March 7th, 2011 Lecture 14 (TCP) (continued), Lecture 15 (Congestion Control)
March 14th, 2011 Lecture 15 (Congestion Control) (continued), Lecture 16 (Congestion Control II), Lecture 17 (DNS), Lecture 18 (Quality of Service)
March 21st, 2011 Lecture 18 (Quality of Service), Lecture 19 (Multicast), Lecture 20 (Introduction to BitTorrent)
March 28th, 2011 Lecture 21 (NAT), Lecture 22 (BitTorrent in detail), Lecture 23 (Overlay Networks)
April 4th, 2011 Lecture 23 (Overlay Networks), Lecture 24 (Network Security)
April 11th, 2011 Lecture 23 (Overlay Networks), Lecture 25 (Versioning, Consistency, and Agreement)


Please keep up with and participate in the class forum, located on Blackboard. I will use the forum for broadcast announcements and to answer questions that may be interesting to more than one of you.  Further, the forum is the best medium for asking questions about homeworks, for debugging your programming environment, and for posting the latest Internet rumor.  Thus, unless it is private, post to the forum before writing e-mail.

Attendance, Group Interactions, and Class Participation

This is a senior-level/graduate course; I will not mandate you to come to class (you are still responsible for all the material covered in class).  The class projects are a major part of this course, and please be aware that you will be working in groups of two. Lastly, note that 5% of your grade is based upon class participation.   This is to encourage you to voice your ideas in class and to post them to the forum.  Minimally, I must know your name by the end of the term in order for you to get any points for class participation.