Implementing Parallel and Distributed Systems