Discusses asynchronous systems, their description using concurrent and distributed programming languages and their verification. Topics include concurrent programming using shared memory and message passing, formal semantics of communication, reliability and concurrent algorithms.