[ Home | Syllabus | Schedule ]
Computer communication networks are among the most important and influential global infrastructures that humanity has created. The goal of this course is to provide a foundational view of communication networks: the principles upon which the Internet and other computer networks are built; how those principles translate into deployed protocols; and hands-on experience solving challenging problems with network protocols.
Topics will include link-layer technology; switching; routing; the Internet Protocol; reliability, flow control, congestion control, and their embodiment in TCP; quality of service; and network security. The course will involve a significant amount of Unix-based network programming using the C language. Students who are not already familiar with ANSI C should learn it quickly.
Office Hours: M: 10:00a - 12:00a
|TA||Riccardo Crepaldi rcrepal2 at illinois.edu
Muntasir Rahman mrahman2 at illinois.edu
|TA office hrs||T: 4:30p - 6:00p
W: 4:30p - 6:00p
Th: 4:30p - 6:00p
F: 2:00p - 3:30p
TA office hours will be held in room 3109SC
During the same times I2CS students can contact the TAs using Skype (Instructions on Piazza)
Lecture videos for I2CS
The overall score in the class will be a weighted sum of the homeworks, exams, and projects, as follows:
|Programming Projects (4)||45% (0% MP0, 11% MP1, 17% MP2, 17% MP3)|
Deadlines for homeworks and MPs will be as announced. Generally, homeworks will be due at the beginning of class. Late homeworks and MPs will be accepted, but penalized 2% per hour late (rounded up to the nearest integer number of hours).
Graduate students and some I2CS students may take this course for 4 hours instead of 3. Those students taking the 4-hour version will do a term paper in addition to the regular course work. Undergraduates must take the 3-hour option only.
The primary textbook used for this course is:
The following book is recommended (not required) for the Unix network programming portion of the course:
After the 1990 edition, UNIX Network Programming was expanded to a three volume set in 1999, and a third edition was published in 2003. While the three volume set includes much more material and is more up-to-date, it also leaves out some of the essential preliminary material on UNIX programming that was in the 1990 edition. If you have very little experience with Unix network programming you are advised to read chapters 1, 2, 3 and 6 of the first edition. You would then be prepared to take advantage of Volume 1 of the second or third edition. If you have previous Unix programming experience (for example, from CS 241) you may prefer to begin with the latest edition.
Finally, you will need to have (or quickly acquire) a good knowledge of the ANSI C programming language, including the use of pointers, structures, typedef, and header files. Thus, you should have a basic book on ANSI C (such as the one by Kernighan and Ritchie, but there are many nice books on ANSI C), unless you are experienced enough in C programming to just use the man pages on the workstations for help.
"It's a thick book, and it starts right at the very basic beginning. But I thought it was very well written, providing more than just the basics but also relevant programming tips and warnings. It covers the standard library, but not really UNIX-specific stuff. Since then, I've found it to be a really good reference."