Description
The course introduces the underlying concepts and principles of computer networks. It presents the building blocks of a network and how these blocks fit together. The course emphasizes the design and implementation of network software (protocols) that transforms raw hardware into a richly functional communication system. Real networks (such as the Internet, Ethernet, Wi-Fi) will be used as examples to reinforce the concepts and demonstrate various protocols. The course also covers applications such as electronic mail, the World Wide Web, and P2P file sharing.
General Information
LEARNING OUTCOMES
In this course, students learn concepts, principles, and protocols used in computer networks, with the Internet as a case study. They learn how to design and implement protocols at many levels of the network architecture and across different timescales. Topics include: distributed inter-process communication; performance measurements; multiplexing; error and flow control; routing; media access control; etc. They understand protocol correctness and performance evaluation via statistically reliable measurements and discrete-event simulations. They also become familiar with the Wireshark tool, a network traffic sniffer, and use it to deeply understand the operation of many Internet protocols (HTTP, DNS, TCP, NAT, IP, Ethernet, ARP, etc.)
TIME & PLACE
LECTURES: Tuesdays and Thursdays 2-3:15pm. LSE B01 (Life Science and Engineering Building, 24 Cummington Mall).
DISCUSSION LAB: each student attends one of the labs held on Fridays in the CS Teaching Lab, room EMA 304.
DISCUSSION LAB: each student attends one of the labs held on Fridays in the CS Teaching Lab, room EMA 304.
PREREQUISITES
1. Solid programming skills in a high-level language (such as C, Java, Python) are required. During the lectures I will mostly use C or C-like code, which is more suitable for exposing low-level system details and achieving higher performance in real implementations. Also, if we provide a skeleton of code in some language as part of an assignment, you will be expected to incorporate your code in that language to implement specific networking functions. In this case, the code is mostly straightforward and does not need knowledge of advanced features of the language.
2. A rudimentary understanding of algorithms and their mathematical foundations (CS 112, CS 131) is required.
3. A rudimentary understanding of computer architecture and operating systems (CS 210) is required.
4. A basic understanding of queuing and probabilistic models, discrete-event simulation and how to collect statistically reliable performance metrics (CS 350) is also helpful.
2. A rudimentary understanding of algorithms and their mathematical foundations (CS 112, CS 131) is required.
3. A rudimentary understanding of computer architecture and operating systems (CS 210) is required.
4. A basic understanding of queuing and probabilistic models, discrete-event simulation and how to collect statistically reliable performance metrics (CS 350) is also helpful.
REQUIRED TEXTBOOK
Computer Networking: A Top Down Approach (7th edition), James F. Kurose and Keith W. Ross, Pearson, 2016. You may want to check the cheaper rental option on sites like Barnes & Noble and Amazon. The Instructor will also leave a hard copy of the textbook on reserve in the Science & Engineering Library for a 2-hour loan.
Name | Office Hours | |
---|---|---|
Qiaobin Fu | When? Where? | |
Abraham Matta | When? Where? | |
Xingchen Zhou (David) | When? Where? |