Show The Graduate Center Menu

Computer Networks


Professor Danyang Zhang


The last two decades or so have witnessed the astonishing growth and evolution speed of computer networks and the tremendous impact they have made to our society and individuals in many aspects. Knowing how computer networks were established and how data is transmitted inside computer networks would be a fundamental expertise for graduate students majored in computer science.

Course description

This course is designed for graduate students in Computer Science programs who have knowledge in undergraduate level Computer Networks, Algorithms and some familiarity with probability theory. This course covers an in-depth review of fundamental principles of network architecture and protocols, introductions on advanced computer networks, and advanced principles of the design of computer networks. Specifically, we will review fundamental computer network architecture, principles of Circuit Switching and Packet Switching, the protocol stack, and essential design principles and network protocols of each network layer. Advanced topics in computer networks, such as Wireless and Mobiles networks and Network Security will be introduced. In addition, we will explore in-depth principles for common protocol design techniques.

List of topics

The topics may include but are not limited to:

  • Network Layers

  • Packet Switching vs. Circuit Switching

  • DNS (Domain Name System)

  • P2P (Peer-to-peer) Communication

  • UDP (User Datagram Protocol) vs. TCP (Transport Control Protocol)

  • Network Socket Programming

  • Principles of Reliable Data Transfer

    • General theory and model

    • TCP reliable data transfer

  • Principles of Congestion Control

    • General theory and model

    • TCP congestion control

  • IP (Internet Protocol)

  • Routing Algorithms

    • Link state

    • Distance vector

    • Hierarchical routing

  • Routing in the Internet

    • RIP (Routing Information Protocol)

    • OSPF (Open Shortest Path First)

    • BGP (Border Gateway Protocol)

  • Broadcast and Multicast Routing

  • Error Detection and Correction

  • Multiple Access Protocols

  • LANs (Local Area Networks)

    • MAC (Media Access Control) address and ARP (Address Resolution Protocol)

    • Ethernet

    • Switches

    • VLANs (Virtual LANs)

  • MPLS (Multiprotocol Label Switching)

  • Wireless Networks (basics)

  • Network Security (basics)

Learning objectives

Upon completion of this course, the students should be familiar with all existing fundamental data communication protocols across different network layers, such as TCP, IP, Ethernet and 802.11, and ARP, understand their design principles, and be capable of making reasonable modifications on the protocols. Students should also be able to write programs that facilitate research and application purposes. For example, a student should be able to write scripts that collect necessary components of network traces for network performance analysis and management purposes. Students should also be able to design and evaluation network protocols on theoretical basis. In addition, students need to conduct an in-depth peer review on a top-rated research paper in computer networks.


Written exam, assignments, and course projects will be assigned to make sure students are capable of understanding and applying network theory and knowledge to resolve practical problems, and conducting network socket programming in Python. 50%
Final presentation of an in-depth analysis and review of a top-rated research paper (mostly cited paper, survey paper does not count) in computer networks published in a top conference or journal within the last five years. The presentation should focus on the ideas and techniques to implement the ideas. The topic is flexible, which can be any important research topic in computer networks such as network reliability, congestion control, routing algorithms, pervasive computing, and network security. 45%
Attendance and Class Participation. 5%.