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 weekly assignments, a mid-term exam, and a final exam.
Pre-requisites: No formal pre-recs, however it would be helpful if you have a good working knowledge of Python and C/C++, as well as exposure to an operating systems undergraduate course.