276 IEEE TRANSACTIONS ON EDUCATION, VOL. 45, NO. 3, AUGUST2002 Understanding and Implementing Computer Network Protocols Through a Lab Project Mohamed Watheq El-Kharashi, Student Member, IEEE, Glen Darling, Brent Marykuca, and Gholamali C. Shoja, Senior Member, IEEE Abstract—This paper describes a lab project in computer com- munications 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 in- tegrates 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 dis- cussion of related educational issues. Index Terms—Computer communications and networks educa- tion, data link layer (DLL), network architecture, network proto- cols, open systems interconnection (OSI) reference model. I. INTRODUCTION C OMPUTER communications and networks is a standard topic in undergraduate computer science and engineering curriculum. There has been an increasing interest in the course because of the growing popularity of the Internet and the importance of networking in business environments. A lab project for a computer communications and networks course that fourth-year undergraduate computer science and engi- neering students take at the University of Victoria, Victoria, BC, Canada, is described in this paper [1]. In the lab, the authors adopt a three-layer network architec- ture that consists of a physical layer, a data link layer (DLL), and an application layer. Provided with application and phys- ical layer software, students design and implement the logical link control software to interface between these two layers ac- cording to detailed specifications [1]. For simplicity, the logical link control software is referred to as the DLL. The project uses the Java network stack [2]–[4]. From the Java system point of view, the whole project is an application. However, a layer at the bottom of the project provides a simu- lated abstraction of an Ethernet LAN, a simulated media access control (SMAC) layer. Manuscript received June 28, 2001; revised February 19, 2002. M. W. El-Kharashi is with the Department of Electrical and Computer Engineering, University of Victoria, Victoria, BC V8W 3P6, Canada (e-mail: watheq@engr.uvic.ca). G. Darling is with Cisco Systems, San Jose, CA 95134 USA (e-mail: gdar- ling@cisco.com). B. Marykuca is with Art and Logic Software Engineering and Design, Glen- dale, CA 91203 USA (e-mail: brentm@telus.net). G.C. Shoja is with the Department of Computer Science, University of Vic- toria, Victoria, BC V8W 3P6, Canada (e-mail: gshoja@csc.uvic.ca). Publisher Item Identifier S 0018-9359(02)05048-3. The software implemented by students compensates for those communication errors not handled by the SMAC (or those intro- duced for testing purposes). That is, the SMAC can simulate un- reliable packet transmission by the physical layer by randomly discarding packets. It is up to the student’s DLL software to ac- count for the possibility that some packets may be lost. The application code (the Tester) acts as a client of the stu- dent’s DLL and is used to test the developed code. The Tester is also provided to the students. The paper is organized as follows. The course background necessary for the project is suggested in Section II. Section III gives an overview of the project and highlights the students’ tasks. The project technical specifications that students imple- ment are discussed in Section IV. Section V presents the envi- ronment in which the project is developed. The variety of tools students use to develop their projects are summarized in Sec- tion VI. Section VII shows how the project is scheduled and evaluated. Finally, conclusions are drawn in Section VIII. II. COURSE BACKGROUND The project described here aims at providing the experimental support for the computer communications and networks course that is taken by computer science and engineering students in the Faculty of Engineering, University of Victoria. The lab requires that the related network theory be covered in the classroom lecture before the implementation of the project is attempted. This theoretical background is expected to form the foundation of the generic network architecture targeted by the project and to clarify the expected operation of the relevant protocol stack. Topics with which the students need to be familiar before starting the project include basics of network hardware and soft- ware, layered architecture of different reference models, func- tionalities of different layers and the interaction between them, and example networks and data communication services. The pre-project stage also emphasizes the operation of the physical and data link layers, which fully prepares the students for the project. III. OVERVIEW In the open systems interconnection (OSI) reference model, specific network or communication services are grouped into layers according to their functions [5]–[7]. Fig. 1 compares the project model versus the IEEE 802.3 and OSI models [5]. In this project, the standard seven layers of the OSI model are compressed into just three layers. These three layers [shown in 0018-9359/02$17.00 © 2002 IEEE