Programming in Distributed & Concurrent Environments