CS4700/CS5700 - Fundamentals of Computer Networks

Fall 2009

General Course Information

 
Room and Time:201 Forsyth Building
Thursdays, 6:00pm - 9:00pm
Instructor:Alan Mislove
250 West Village H
Office Hours:Mondays, 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:Wednesdays, 5:00pm - 7:00pm, 212 West Village H
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.

Prerequisites

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.

Reading

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


Grading

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


 

Handouts, Homeworks, Readings, and Projects

Syllabus
Rough Schedule

Homework 1 due at the beginning of lecture on October 1st, 2009
Homework 2 due at the beginning of lecture on October 15th, 2009
Homework 4 due at the beginning of lecture on November 19th, 2009

Project 0 due by 11:59pm on September 17th, 2009
  Stub code
Project 1 due by 11:59pm on October 7th, 2009
Project 1 Primer
Project 2 due by 11:59pm on November 4th, 2009
Project 2 Addendum
Project 3 due by 11:59pm on December 1st, 2009
  Starter code is available snark.tgz, more information is available from at the snark project homepage.

To read for class on September 17th, 2009: End-to-End Arguments in Systems Design by J.H. Saltzer, D.P. Reed, and D.D. Clark
To read for class on November 12th, 2009: Incentives build Robustness in BitTorrent by B. Cohen, and one of (Do incentives build robustness in BitTorrent? by M. Piatek, T. Isdal, T. Anderson, A. Krishnamuthy, and A. Venkataramani, or BitTorrent is an Auction: Analyzing and Improving BitTorrent's Incentives by D. Levin, K. LaCurts, N. Spring, and B. Bjattacharjee)



 

Lecture Slides

September 10th, 2009 Lecture 1 (Intro), Lecture 2 (History), Lecture 3 (C Socket Programming), Lecture 4 (Switching), Lecture 5 (Network Architecture)
September 17th, 2009 Lecture 5 (Network Architecture) (continued), Lecture 6 (Physical and Data-link Layer), Lecture 7 (Media Access Control), Lecture 8 (DNS Primer for Project 1)
September 24th, 2009 Lecture 7 (Media Access Control) (continued), Lecture 9 (Bridging), Lecture 10 (Internet Protocol)
October 1st, 2009 Lecture 10 (Internet Protocol) (continued), Lecture 11 (Intra-domain routing), Lecture 12 (Inter-domain routing)
October 8th, 2009 Lecture 13 (Reliability), Lecture 14 (TCP)
October 15th, 2009 Lecture 14 (TCP) (continued), Lecture 15 (Congestion Control)
October 22nd, 2009 Lecture 15 (Congestion Control) (continued), Lecture 16 (Congestion Control II), Midterm review
October 29th, 2009 Midterm exam, Lecture 17 (DNS), Lecture 18 (Quality of Service)
November 5th, 2009 Lecture 18 (Quality of Service), Lecture 19 (Multicast), Lecture 20 (Introduction to BitTorrent)
November 12th, 2009 Lecture 21 (NAT), Lecture 22 (BitTorrent in detail), Lecture 23 (Overlay Networks)
November 19th, 2009 Lecture 23 (Overlay Networks), Lecture 24 (Network Security)
December 3rd, 2009 Lecture 24 (Network Security) (continued), Final review

Forum

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.