First, design a strategy for building worms. The ideal is to package any program in the worm, and the worm will insure that the computation will complete. We would like to take any program, unmodified, and make it reliable. It may be that we have to make some small modifications to the program such as linking in special routines for initialization or completion. This project will involve a design, implementation, and evaluation of the implementation.
Worms are a case of life imitating art.
You can use our new Linux cluster for your experiments. After an initialization period, the two programs try to destroy each other. The programs run for a 2 minute initialization period before they start aggressive activities. Both programs are run under the same userid. In steady state, no more than one process from each program may run on a given host.