Programming assignments for Distributed Systems