Generar un diccionario el cual puede ser creado mediante un archivo de texto de texto o estructuras de memoria dinámicas.  El diccionario se debería implementar en forma distribuida utilizando al menos dos computadoras para ello (aquí se almacenaran las copias de los diccionarios). Se deberán de realizar tres operaciones: borrar para remover un elemento, listar para mostrar los miembros e insertar para agregar elementos. El objetivo es hacer el sistema altamente disponible, esto es, cualquier cliente (aquí también debería haber por lo menos dos clientes) podría ejecutar alguna de las tres operaciones en cualquier momento sin importar las operaciones que estén haciendo los demás clientes sobre los diccionarios.  La primera parte constaría de una aplicación con RPC  o java RMI donde se debe desarrollar la interfaz que funciona como cliente, por medio de esta interfaz los clientes deberán generar dichas operaciones. La implementación funciona procesando cada operación en un sólo nodo, donde cada nodo debe contar con una copia del diccionario.   En la segunda parte se debe generar tantos monitores como nodos  que almacenan los diccionarios existan, estos monitores se encargarán de verificar si en alguno de los diccionarios se ha realizado una operación de inserción o eliminación, ya que en caso afirmativo,  por medio de sockets (ya sean TCPs o UDPs), se deberán propagar las modificaciones a los demás nodos del sistema.