This thesis defines goals, identifies issues and proposes solutions for the design of such a middleware. It focuses on the problem's algorithmic aspects, and its contribution is threefold. First, it develops a way to create an efficient Peer-to-Peer overlay that links the participants. Second, it describes a mechanism to counter free-riding. Third, it examines the properties of suitable jobs and the distributed workflow. Experiments with a middleware prototype in live environments show that considerable acceleration can be attained through distributed computing on a Desktop Grid.