Distributed Computing ist das Gebiet der Informatik, das den Entwurf und das Verhalten von Systemen mit vielen lose gekoppelten Komponenten untersucht. Die Komponenten solcher verteilten Systeme können mehrere Threads in einem einzigen Programm, mehrere Prozesse auf einer einzigen Maschine oder mehrere Prozessoren sein, die über einen gemeinsamen Speicher oder ein Netzwerk verbunden sind. Verteilte Systeme sind ungewöhnlich anfällig für Nondeterminismus, bei dem das Verhalten des Systems als Ganzes oder einzelner Komponenten schwer vorherzusagen ist. Diese Unvorhersehbarkeit erfordert eine breite Palette neuer Techniken, die über die der traditionellen Informatik hinausgehen.
Wie auch andere Bereiche der Informatik umfasst das verteilte Rechnen ein breites Spektrum an Themen, von der Anwendung bis hin zur Theorie. Auf der theoretischen Seite ist das verteilte Rechnen eine reichhaltige Quelle für mathematisch interessante Probleme, bei denen ein Algorithmus gegen einen Gegner antritt, der die unvorhersehbaren Elemente des Systems repräsentiert. Die Analyse verteilter Algorithmen hat oft einen starken spieltheoretischen Beigeschmack, da die Ausführungen eine komplexe Interaktion zwischen dem Verhalten des Algorithmus und den Reaktionen des Systems beinhalten.
Michael Fischer ist einer der Pioniere auf dem Gebiet der Theorie des verteilten Rechnens. Seine Arbeit über die Verwendung von Gegenargumenten zum Beweis von unteren Schranken und Unmöglichkeitsergebnissen hat einen Großteil der Forschung in diesem Bereich geprägt. Derzeit beschäftigt er sich aktiv mit der Untersuchung von Sicherheitsfragen in verteilten Systemen, einschließlich kryptographischer Werkzeuge und Vertrauensmanagement.
James Aspnes Forschung betont die Verwendung von Randomisierung zur Lösung fundamentaler Probleme im verteilten Rechnen. Viele Probleme, die sich mit einem deterministischen Algorithmus als schwierig oder unmöglich erweisen, können gelöst werden, wenn Prozesse Münzen werfen können. Die Analyse der resultierenden Algorithmen erfordert oft die Anwendung nicht-trivialer Techniken aus der Wahrscheinlichkeitstheorie.
Die Forschung im Bereich verteilter Systeme in Yale umfasst sowohl Arbeiten zur Unterstützung von Programmiersprachen für verteiltes Rechnen als auch zur Verwendung von Techniken verteilter Systeme zur Unterstützung paralleler Programmierung. Diese Arbeiten sollen den Designern verteilter Systeme einen Teil der Last des Verständnisses komplexer verteilter Systeme abnehmen, indem der Compiler oder die Laufzeitbibliotheken Fragen des Schedulings und der Kommunikation behandeln.
Zhong Shaos FLINT-Projekt konzentriert sich auf die Entwicklung einer neuen Architektur für mobilen Code, um eine effiziente Daten- und Programmmigration auf verteilten und heterogenen Computerplattformen zu unterstützen. FLINT verwendet eine gemeinsame typisierte Zwischensprache, um die sichere Ausführung von Code zu unterstützen, der in mehreren Programmiersprachen wie Java, C und ML geschrieben wurde.
David Gelernters Arbeit an der Entwicklung der Koordinationssprache Linda und zugehöriger Werkzeuge ist ein Beispiel für die Verwendung von Techniken für verteilte Systeme zur Unterstützung der parallelen Programmierung. Linda bietet einen virtuellen „Tupelraum“, über den Prozesse ortsunabhängig kommunizieren können. Sein aktuelles Projekt Lifestreams vereinfacht in ähnlicher Weise Aufgaben der Informationsverwaltung, indem es den Benutzer von vielen der bürokratischen Aufgaben befreit, die von traditionellen Dateisystemen auferlegt werden. Avi Silberschatz hat sich auf Techniken der Transaktionsverwaltung spezialisiert, die sich sowohl auf verteilte Datenbanksysteme als auch auf Multidatenbanksysteme beziehen.