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.