CS/ECE 438: Communication Networks — Spring 2012

[ Home | Syllabus | Schedule ]

Course Syllabus

Course Description

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.

Staff

Instructor
Prof. Robin Kravets, rhk@illinois.edu
SC 3114
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)

Send the staff anonymous feedback or questions

For private communication with the staff you can email: cs438help-sp12@cs.uiuc.edu
(if you have questions about the topics covered in class or anything else that would be useful to everyone please use Piazza instead)

Website

http://www.cs.illinois.edu/class/sp12/cs438/
Lecture videos for I2CS

Piazza

Please post all general questions about lectures, homeworks, or programming projects on Piazza rather than emailing the staff, so that others get the benefit of your questions. (Exception: do not post your homework or programming project solution to the newsgroup. If in doubt, contact the TA or instructor first.) You should also monitor Piazza for answers to your classmates' questions and other clarifications and announcements. We will monitor the newsgroup and try to respond to questions within 24 hours (outside of weekends).
    sign-up link: http://piazza.com/illinois/spring2012/cs438

    class discussion page: http://piazza.com/class

Grading Policy

The overall score in the class will be a weighted sum of the homeworks, exams, and projects, as follows:

Homeworks 15%
Programming Projects (4) 45% (0% MP0, 11% MP1, 17% MP2, 17% MP3)
Mid-term Exam 15%
Final Exam 25%

Deadlines

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).

Extra Unit

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.

Books

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.

Other textbooks on networks and data communications:

C programming:

Probability and Statistics