CSC 257/457 - Computer Networks (Fall 2014)

Class time: Monday, Wednesday 12:30pm-1:45pm.
Class location: CSB 601.

Instructor: Kai Shen (
Office hours: Monday, Wednesday 1:45pm-2:45pm (right after class) at CSB 714.

TA: Zhuan Chen (
Office hours: Tuesday, Thursday 3:00pm-4:00pm at CSB 626.


This course explores the field of computer networking and communication, emphasizing network architecture and software design issues. We will discuss the basic performance and engineering trade-offs in the design and implementation of computer networks at every level. The idea is to learn not only what computer networks are and how they work today, but also why they are designed the way they are and how they are likely to evolve in the future. We will draw examples primarily from the Internet in this course.

Topics Covered:

This course is laid out into three portions. The first portion covers foundational materials about computer networks, including discussions on data link layer (Ethernet, token ring, etc.), network layer (IP, routing protocols, etc.), transport layer (TCP/UDP), and application layer (HTTP, FTP, SMTP, and DNS). The second portion of this course touches a few advanced topics in computer networks, including multimedia networking, quality of service, computer security, wireless networks, and overlay networks (including many peer-to-peer systems). The last part of this course provides a few case studies of the current computer networking industry and ongoing research topics.

Text and Reference Books:

The course textbook is "Kurose and Ross, Computer Networking: A Top-Down Approach Featuring the Internet", 6th edition (2012).

You will perform significant network programming for this course. You can find many network programming resources on the web and even from Linux manual pages. However, if you would like to have an advanced network programming reference book (for C), a well-recommended one is "Stevens, Unix Network Programming, Volume I", 2nd edition (1998). Note that it is not necessary to have this book for the class.

Assignments and Grading:

There will be about six programming assignments and two exams. Two written exercises may also be given but they will not be graded. Your grade will be based on a combination of the programming assignments and exams. A tentative grade division is listed below.
       5% - prog. assignment #0
       5% - prog. assignment #1
       10% - prog. assignment #2
       10% - prog. assignment #3
       10% - prog. assignment #4
       20% - prog. assignment #5
       15% - midterm exam
       25% - final exam
An additional credit (up to 5%) may be awarded based on your participation in class discussions.