EECS 340: Introduction to Computer Networking

Quarter Offered

Winter : 12:30-1:50 WF ; Kuzmanovic


A top-down exploration of networking using the 5-layer model and the TCP/IP stack. HTTP, FTP, DNS, BSD Sockets, concurrent servers, checksums, reliable transport with stop-and-wait, go-back-n, selective repeat, flow control, congestion control, TCP, unicast routing, multicast routing, router architecture, IP, IPv6, IP multicast, MAC protocols and LANs, Ethernet , wireless networks, and network security. Over the course of the quarter, students build web clients and servers, a fully compatible TCP/IP stack that can run them, and evaluate routing protocols in simulation.

  • This course satisfies the Systems breadth, Systems depth, and  project requirement.

PREREQUISITES: EECS 214 and (EECS 213 or EECS 205)


James Kurose and Keith Ross, Computer Networking: A Top-Down Approach Featuring the Internet, Addison Wesley, 6th edition (2012); ISBN-13: 978-0132856201, ISBN-10: 0132856204


Computer Networks - A Systems Approach , Third Edition, Larry L. Peterson and Bruce S. Davie, Morgan Kaufmann, 2003. Good supplementary material to the required textbooks.

Unix Network Programming (Volume 1, Third Edition, 2003 , and Volume 2, Second Edition, 1999) Richard Stevens, Prentice Hall. Describes the details of socket programming and IPC on Unix.

Advanced Programming in the Unix Environment , Richard. Stevens, Addison-Wesley, 1992. A basic book for anyone writing programs that run under Unix.

The C++ Programming Language, Special Edition, Bjarne Stroustrup, Addison-Wesley, 2000.

COURSE INSTRUCTOR: Prof. Alexandar Kuzmanovic

COURSE COORDINATORS: Prof. Yan ChenProf. Peter Dinda, and Prof. Alexandar Kuzmanovic


This course introduces the underlying concepts behind networking using the Internet and its protocols as examples. There are three goals: (1) to give you an understanding of how networks, especially the Internet, work, (2) to give you experience in “programming in the large”, and (3) to teach you network programming.

We will work our way down the network stack from the application layer to the physical layer. Concurrent with the lectures, you (in groups) will be building a functional TCP/IP stack and a small web server that will run on it. What you build will be “real” – your code will interoperate with other TCP/IP stacks and you'll be able to talk to your web server using any browser on any TCP/IP stack.

This is a learn-by-doing kind of class. You will get your hands dirty by examining parts of our Internet infrastructure and building other parts. It will be a lot of work, but it will also be a lot of fun.

After finishing the course, you will be able to do the following.

  • Understand the Internet protocols
  • Build implementations of the Internet protocols
  • Generalize this knowledge to other networking protocols.
  • Be a competent network and systems programmer.
  • Think like a networking practitioner
  • Read and judge articles on networking in trade magazines
  • Begin to read and judge research and technical articles on networking
  • Create simplicity and reliability out of complexity and unreliability
  • Structure and design software systems to achieve that simplicity and reliability

PREREQUISITES: EECS 214 and (EECS 213 or (EECS 205 and EECS 231))




Project 1: Web Client and Server

Project 2: TCP Implementation for Web Client and Server

Project 3: Routing Lab