Instructor: Amin Vahdat
TA: Patrick Reynolds
Time: T, TH 10:55-12:15, Spring 2000
Location: D106 LSRC

Textbook: "Computer Networks: A Systems Approach" (2nd edition) by Peterson and Davie, and "Distributed Systems: Concepts and Design" by Coulouris, Dollimore, and Kindberg.
Optional: "Java in a Nutshell" by Flanagan.


CPS 196-1 is a new undergraduate course on networking and distributed systems. The continued exponential growth of the Internet has made the network an important part of our everyday lives. Companies use the network to conduct business, doctors to diagnose medical issues, etc. This course will provide a broad understanding of exactly how the network infrastructure supports distributed applications ranging from email to web browsing to electronic commerce. Topics covered in the course include the socket API, security, naming, network file systems, wireless networks, Internet routing, link layer protocols (such as Ethernet), and transport protocols (TCP). Hands-on programming assignments provide in-depth understanding of issues in distributed systems and networking.

The course will also provide a solid background for students pursuing advanced graduate courses in this area, such as CPS 210, 212, and 214.

Prerequisites for the course include CPS 110 and a strong programming background, with knowledge of C/C++ and Java.


Introduction and Packet-Switched Networks

Internet routing (link-state, distance vector, OSPF/BGP)

End-to-end protocols (TCP, congestion control, etc.)


Wireless Networks

Recap and Introduction to Distributed Systems

Naming (DNS)

Distributed Programming (Sockets, RPC, RMI)

Network File Systems (NFS, AFS)


Replication/Fault tolerance

Security (public/private key)