Computação distribuída é o campo da informática que estuda a concepção e o comportamento de sistemas que envolvem muitos componentes pouco acoplados. Os componentes de tais sistemas distribuídos podem ser múltiplos fios num único programa, múltiplos processos numa única máquina, ou múltiplos processadores ligados através de uma memória partilhada ou uma rede. Os sistemas distribuídos são invulgarmente vulneráveis ao indeterminismo, onde o comportamento do sistema como um todo ou de componentes individuais é difícil de prever. Tal imprevisibilidade requer uma vasta gama de novas técnicas para além das utilizadas na computação tradicional.
Tal como outras áreas da informática, a computação distribuída abrange uma vasta gama de disciplinas desde a aplicada até à muito teórica. Do lado teórico, a computação distribuída é uma fonte rica de problemas matematicamente interessantes nos quais um algoritmo é colocado contra um adversário que representa os elementos imprevisíveis do sistema. A análise de algoritmos distribuídos tem frequentemente um forte sabor teórico-jogo, porque as execuções envolvem uma interacção complexa entre o comportamento do algoritmo e as respostas do sistema.
Michael Fischer é um dos investigadores pioneiros na teoria da computação distribuída. O seu trabalho na utilização de argumentos adversários para provar limites inferiores e resultados impossíveis moldou grande parte da investigação sobre a área. Actualmente está activamente envolvido no estudo de questões de segurança em sistemas distribuídos, incluindo ferramentas criptográficas e gestão de confiança.
James Aspnes A investigação de Aspnes enfatiza o uso da aleatorização para a resolução de problemas fundamentais na computação distribuída. Muitos problemas que se revelem difíceis ou impossíveis de resolver utilizando um algoritmo determinístico podem ser resolvidos se os processos puderem inverter as moedas. A análise dos algoritmos resultantes requer frequentemente o uso de técnicas não triviais da teoria da probabilidade.
A investigação de sistemas distribuídos em Yale inclui trabalho em ambas as linguagens de programação de suporte à computação distribuída, e no uso de técnicas de sistemas distribuídos para apoiar a programação paralela. Tal trabalho foi concebido para levantar parte da carga de compreensão de sistemas distribuídos complexos dos ombros dos desenhadores de sistemas distribuídos, deixando o compilador ou bibliotecas de tempo de execução tratar de questões de programação e comunicação.
O projecto FLINT de Zhong Shao centra-se no desenvolvimento de uma nova arquitectura de código móvel para suportar dados eficientes e migração de programas em plataformas de computação distribuída e heterogénea. O FLINT utiliza uma linguagem dactilográfica intermédia comum para apoiar a execução segura de código escrito em múltiplas linguagens de programação tais como Java, C, e ML.
David Gelernter O trabalho de desenvolvimento da linguagem de coordenação Linda e ferramentas relacionadas é um exemplo de utilização de técnicas de sistema distribuído para apoiar a programação paralela. Linda fornece um “espaço tuple” virtual através do qual os processos podem comunicar sem ter em conta a localização. O seu actual projecto Lifestreams simplifica de forma semelhante as tarefas de gestão de informação, libertando o utilizador de muitas das obrigações de escritório impostas pelos sistemas de ficheiros tradicionais. Avi Silberschatz especializa-se em técnicas de gestão de transacções, uma vez que estas se relacionam tanto com sistemas de bases de dados distribuídas, como com sistemas de bases de dados multidispartilhadas.