This course will provide a broad understanding of network design and implementation. Topics include techniques for building distributed applications, sockets programming, Remote Procedure Calls, scale-out distributed directories, distributed consensus and state management, fault tolerance, networked storage, indirection, overlay networks, load balancing, and datacenter design.
Activities: The course will include assignments, a mid-term exam, and a final exam.
Pre-requisites: CSE 30, CSE 101, CSE 110. You will be writing concurrent software, and so a working knowledge of threads, mutexes, and synchronization will be very helpful.