Lab Projects

These projects were prepared for use in connection with earlier editions (Ed 3 and Ed 4) of the book. They are offered here ‘as is’ because no newer exercises are available. Section references and links are to Ed 4 of the book and website.

The six projects currently offered here were designed as laboratory work for students studying various topics presented in the book. All of the projects have been tested in teaching at Queen Mary and Westfield College.

Project 1. The design and implementation of RMI using Java

This project is intended to reinforce the material in Section 5.2.5 on the implementation of RMI and the material in Section 4.3 on marshalling and Java object serialisation. It also gives students experience in the use of the Java API to TCP sockets (Section 4.2.4) and of the use of reflection in Java.

This project is available as a set of Browsable pages on the book web site. It is also available as a downloadable Archive of html pages. We allow 3-4 afternoons for this project. This project was designed for third year undergraduates.

Project 2. The design and implementation of a sequencer multicast protocol using Java

This project reinforces the material in Section 12.4.3 on how to achieve total ordering with a sequencer. It also gives students experience in the use of the Java API to IP multicast (Section 4.5.1). We allow 3-4 afternoons for this project. This project is available as a set of Browsable pages on the book web site. This project was designed for third year undergraduates.

Project 3. The design and implementation of a Task Bag server using CORBA or Java RMI

This project is loosely based on the Linda model for parallel computation and consolidates the knowledge from Chapter 12 about synchronization in servers. If the CORBA variant is chosen, it gives students experience in the use of CORBA which is presented in Chapter 17. This project is available as a single Browsable page on the book web site. We allow 3 half days for this project. This project was designed for masters degree students.

Project 4. The use of the Unix interface to UDP sockets to implement a simple RPC framework in C++

This project consolidates the basic knowledge about RPC implementation in Chapters 4 and 5 and gives students experience in constructing programs that use Unix sockets with UDP. This project is available as a Browsable page on the book web site, together with a sample program and a downloadable PDF file containing notes on Sockets in Unix. We allow 3-4 afternoons for this project. This project was designed for third year undergraduates.

Project 5. Operating systems experiments

This project is designed to exemplify and explore some of the issues raised in Chapter 6. Ideally the experiments should be undertaken before the study of Chapter 6. They require an understanding of the basics of operating systems and interprocess communication. There are two sets of experiments, we allow two afternoons for each set. This project is available as a Browsable page on the book web site. This project was designed for masters degree students.

Project 6. A prototype for a stateless file server and its cache mechanisms

This project is designed by Kohei Honda of the Department of Computer Science at Queen Mary, London University. It illustrates the concepts about file servers and caching described in Chapter 8 by requiring the student to make a stateless file server and a client library that implements caching. This project is available as a set of Browsable Pages on the book web page. This project is designed to be carried out by individuals, taking about 3-4 afternoons. This project was designed for third year undergraduates.