This book presents core concepts and algorithms of distributed computing, covering distributed graph algorithms; logical time and global states; mutual exclusion and resource allocation; high-level communication abstractions;distributed shared memory and more.