Coordination, considered abstractly, is an ubiquitous notion in computer science: for example, programming languages coordinate elementary instructions; operating systems coordinate accesses to hardware resources; database transaction schedulers coordinate accesses to shared data; etc. All these situations have some common features, which can be identified at the abstract level as "coordination mechanisms". This book focuses on a class of coordination models where multiple pieces of software coordinate their activities through some shared dataspace. The book has three parts. Part 1 presents the main coordination models studied in this book (Gamma, LO, TAO, LambdaN). Part 2 focuses on various semantics aspects of coordination, applied mainly to Gamma. Part 3 presents actual implementations of coordination models and an application.