Distributed computing is het gebied in de computerwetenschap dat het ontwerp en het gedrag van systemen bestudeert die veel losjes gekoppelde componenten bevatten. De componenten van dergelijke gedistribueerde systemen kunnen meerdere threads in een enkel programma zijn, meerdere processen op een enkele machine, of meerdere processoren verbonden via een gedeeld geheugen of een netwerk. Gedistribueerde systemen zijn ongewoon kwetsbaar voor nondeterminisme, waarbij het gedrag van het systeem als geheel of van afzonderlijke componenten moeilijk te voorspellen is. Deze onvoorspelbaarheid vereist een breed scala van nieuwe technieken die verder gaan dan die welke in de traditionele informatica worden gebruikt.
Net als andere gebieden in de informatica bestrijkt gedistribueerde informatica een breed scala van onderwerpen, van toegepaste tot zeer theoretische. Aan de theoretische kant is gedistribueerde computerverwerking een rijke bron van wiskundig interessante problemen waarin een algoritme het moet opnemen tegen een tegenstander die de onvoorspelbare elementen van het systeem vertegenwoordigt. De analyse van gedistribueerde algoritmen heeft vaak een sterk speltheoretisch tintje, omdat er bij de uitvoering sprake is van een complexe interactie tussen het gedrag van het algoritme en de reacties van het systeem.
Michael Fischer is een van de pioniers op het gebied van de theorie van gedistribueerd computergebruik. Zijn werk over het gebruik van argumenten van tegenstanders om ondergrenzen en onmogelijkheidsresultaten te bewijzen heeft veel van het onderzoek op dit gebied gevormd. Hij is momenteel actief betrokken bij de studie van veiligheidskwesties in gedistribueerde systemen, waaronder cryptografische hulpmiddelen en vertrouwensbeheer.
James Aspnes’ onderzoek legt de nadruk op het gebruik van randomisatie voor het oplossen van fundamentele problemen in gedistribueerd computergebruik. Veel problemen die moeilijk of niet op te lossen blijken met een deterministisch algoritme, kunnen worden opgelost als processen munten kunnen opgooien. Het analyseren van de resulterende algoritmen vereist vaak het gebruik van niet-triviale technieken uit de waarschijnlijkheidstheorie.
Distributed systems research at Yale includes work in both programming language support for distributed computing, and in the use of distributed systems techniques to support parallel programming. Dergelijk werk is bedoeld om een deel van de last van het begrijpen van complexe gedistribueerde systemen van de schouders van de ontwerpers van gedistribueerde systemen te halen door de compiler of run-time bibliotheken kwesties als planning en communicatie te laten afhandelen.
Zhong Shao’s FLINT project richt zich op het ontwikkelen van een nieuwe mobiele-code architectuur om efficiënte data en programma migratie op gedistribueerde en heterogene computerplatforms te ondersteunen. FLINT maakt gebruik van een gemeenschappelijk getypte tussentaal om de veilige uitvoering van code geschreven in meerdere programmeertalen zoals Java, C, en ML te ondersteunen.
David Gelernter’s werk aan de ontwikkeling van de Linda coördinatietaal en gerelateerde tools is een voorbeeld van het gebruik van gedistribueerde systeemtechnieken om parallel programmeren te ondersteunen. Linda biedt een virtuele “tuple space” waardoor processen kunnen communiceren zonder rekening te houden met de locatie. Zijn huidige Lifestreams-project vereenvoudigt op vergelijkbare wijze informatie-management taken, door de gebruiker te bevrijden van veel van de administratieve taken die door traditionele bestandssystemen worden opgelegd. Avi Silberschatz is gespecialiseerd in technieken voor transactiebeheer, zowel met betrekking tot gedistribueerde databasesystemen als multidatabasesystemen.