COMP_SCI 340: Introduction to Computer Networking

Quarter Offered

Fall : 9:30-10:50 TuTh ; Carisimo
Winter : 12:30-1:50 TuTh ; Kuzmanovic


COMP_SCI 214 and (COMP_SCI 213 or COMP_ENG 205)


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 & project requirement.


James Kurose and Keith Ross, Computer Networking: A Top-Down Approach, Addison Wesley, 8th edition (2020); (Digital) ISBN-13: 978-0135928608. (Electronic Book) ISBN-13: 978-0135928615. (Paper) ISBN-13: 978-0135928790.

COURSE INSTRUCTOR: Esteban Carisimo (Fall), Prof. Kuzmanovic (Winter)

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




Project 1: Web Client and Server

Project 2: TCP Implementation for Web Client and Server

Project 3: Routing Lab