Distributed Computing Systems (DCS) have become competitive in providing the power of a super machine with a small cost. A major problem arises with such system is how to assign tasks of a given application on the available processors of the system so as to achieve one or more objectives. This book tackles such task assignment problem. It first provides a brief overview on the proposed approaches. It then presents four mathematical models to the task assignment problem. Finally, three different algorithms are proposed to solve the mentioned problem. The first algorithm is derived from the Branch-and-Bound (BB) technique. The second algorithm is derived from the Simulated Annealing (SA). The third algorithm is a two phase hybrid approach combining both the SA and the BB techniques. The performance behaviors of the proposed algorithms are evaluated through experimental studies and compared with the most recent leading techniques. This book is targeted at practicing professionals, researchers, and students.