This book surveys the mathematical theory of communication complexity, concentrating on the question of how much communication is necessary for any particular computing process. Applications of the theory include computer networks, VLSI circuits and data structures.