As teachers, we've found that programming assignments are often a great way for students to cement their understanding of the principles and practice of networking. Students can "get their hands dirty," "learn by doing" and derive great satisfaction (and sometimes relief!) by building something that works.
This page contains programming assignment descriptions, and supplementary code fragments (when needed) do the programming assignments in our book. Most assignments are available in multiple languages, we recommend Python (which is the mostly used/taught) and C (which lets a student program closest to the underlying socket abstraction). Solutions to these assignments are available to instructors (only) here. If you're a faculty member who would like to access the solutions, contact one of the authors at firstname.lastname@example.org.
- A simple client/server simple socket program (Python,Java,C)
- Webserver (Python)
- UDP Pinger Lab (Python,Java)
- SMTP Lab (Python,Java)
- HTTP Web Proxy Server Lab (Python,Java)
- ICMP Pinger Lab (Python)
- Traceroute Lab (Python)
- Video Streaming with RTSP and RTP Lab (Python,Java)
- Reliable data transfer protocol (RDT) Lab (Python,C)
- Distance Vector Algorithm (C,Java)