Symbolic Programming of Distributed Cyber-Physical Systems