Jim Kurose Homepage Home About Resources (for everyone) Online Video Lectures Powerpoint Wireshark Labs Knowledge Checks Interactive End-of-Chapter Problems Programming Assignments Instructor Resources More Authors Contact Publisher's Page Programming Assignments 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 kurose@cs.umass.edu. 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) These programming assignments are copyright 1993-2022, J.F. Kurose, K.W. Ross, All Rights Reserved. We gratefully acknowledge the programming and problem design work of John Broderick (UMass '21), which has really helped to substantially improve this site. Copyright © 2010-2023 J.F. Kurose, K.W. Ross Comments welcome and appreciated: kurose@cs.umass.edu