CS4700/CS5700 - Fundamentals of Computer Networks
General Course Information
|Room and Time:||108 West Village H|
|Mondays, 6:00pm - 9:00pm|
|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|
|Class Forum:||On Blackboard|
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.
High-speed Networks: TCP/IP and ATM design principles
by William Stallings, Prentice-Hall, 1998.
TCP/IP Illustrated volume 1
by W. Richard Stevens. Addison-Wesley.
|Projects (4)||2%, 10%, 13%, 15%, respectively|
|Exams||15% and 20%, respectively|
|Homeworks||4 at 5% each|
Handouts, Homeworks, Readings, and Projects
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
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
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.