This book presents common techniques used in numerous models algorithms and tools developed during the last decade to implement desktop grid computing. These techniques enable the solution of many important sub-problems for middleware design including scheduling data management security load balancing result certification and fault tolerance. Each chapter presents the sub-problems discusses theoretical and practical issues offers details about implementation and experiments and includes references to further reading and notes.