Courses / DescriptionsEECS 340: Introduction to Computer Networking
Quarter OfferedWinter : 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.
REQUIRED TEXTBOOKS :
Computer Networks - A Systems Approach , Third Edition, Larry L. Peterson and Bruce S. Davie, Morgan Kaufmann, 2003. Good supplementary material to the required textbooks.
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
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))
PREREQUISITE FOR : EECS 440, 450, 465
HOMEWORK ASSIGNMENTS: Four
Project 1: Web Client and Server
Project 2: TCP Implementation for Web Client and Server
Project 3: Routing Lab