Document Type

Technical Report

Publication Date


Technical Report Number



A quality education in contemporary computer science requires that students gain experience with realistic systems. Many efforts at bringing empirical computer science to undergraduates focus on rather old technologies, for example, building a compiler or simulating a disk scheduler. Although efforts are being made to use some newer technologies, the efforts are concentrating on teaching traditional material in a new medium. However, the medium itself -- networked workstations in a server environment -- is worthy of exploration by undergraduate students in a laboratory setting. At Dartmouth, we developed a Computer Network Laboratory to let students experiment with computer networks, protocols and distributed systems. Through this article, we wish to share our experiences in the design of the laboratory and give an example of how the laboratory was used in a computer network course.