Distributed System Lecture Notes