El diseno de algoritmos es una parte fundamental en las tecnologias de informacion, como se ha visto reflejado por el gran numero de libros y articulos relacionados con el tema. La gran mayoria de los mismos, tratan los algoritmos en el contexto de una programacion secuencial, donde el flujo de control va siempre en una misma direccion y en cada paso del algoritmo se realiza una unica accion. El gran auge del concepto de redes de comunicacion, junto con los avances en la metodologia de programacion han conseguido que el concepto de comunicacion y de diseno de algoritmos distribuidos surjan como un nuevo aspecto en las tecnicas de desarrollo del software. Los algoritmos distribuidos, clasicamente, han sido desarrollados mediante el uso de sistemas imperativos a los que se les ha anadido determinadas primitivas de comunicacion, pero si nos fijamos en la filosofia de los lenguajes orientados a objetos, podemos ver la similitud existente entre procesos y objetos, comunicacion y metodos, y aun mas, incluso podriamos ver nuestra red de comunicaciones como un objeto mas en nuestro sistema. En este trabajo, consideramos dos clases de algoritmos distribuidos: la primera en la que trataremos los algoritmos basados en una arquitectura Cliente/Servidor y para la que usaremos una tecnica de invocacion de metodos remotos. Y una segunda, mas generica, en la que consideraremos un sistema distribuido como un conjunto de objetos o procesos conectados a traves de una red y que cooperan para la obtencion de un objeto comun. Para la resolucion de este tipo de problemas, consideraremos la red como un objeto mas del sistema que tiene metodos para el envio y recepcion de mensajes a traves de la misma. A lo largo del trabajo, se describiran ambas tecnicas y se implementaran varios algoritmos como ejemplo para su mejor comprension. Como lenguaje de soporte hemos usado Java debido al gran auge que esta teniendo en nuestros dias, asi por adaptarse a los requerimientos de orientacion a objetos e incluir un paquete para la invocacion de metodos remotos, y la clase jPVM (David A. Thurman) que embebe PVM en Java y que nos ha servido para modelar la red como un objeto del sistema.