Understanding and implementing computer network protocols through a lab project

This paper describes a lab project in computer communications and networks for senior undergraduate students in computer science and engineering. Given detailed specifications, students are asked to implement a data link layer (DLL) that integrates correctly with other provided layers to obtain a complete working network stack. This lab gives the students the opportunity to learn how to read formal specifications for a network project and write a complete piece of source code. It provides a comprehensive environment for students to write software for a network protocol, test and debug it, and observe its working behavior. In this paper, the authors present a technical description of the project and a discussion of related educational issues.