CS176B is the second leg of the networking sequence in computer science. We focus on getting our hands dirty by developing real-world networking applications, with the goal of providing students with the tools and the knowledge needed to develop scalable, efficient and secure network-based applications.
CS176B targets a deeper understanding of Internet protocol and design of networked systems, going beyond questions of what to why. We discuss a wide range of systems and protocols from classical transport protocols, to today's decentralized systems, anonymous systems, data centers, and mobile devices.
Nothing beats the first hand experience of building networking protocols and applications from the ground up. 176B students will build a range of networking projects ranging widely in complexity from basic networking protocol clients to complex networked systems.
Significant advances emerge every few years to reshape the field of networking. The final 176B project is redesigned every year (or two) to give students experience on the newest applications and protocols. Projects in recent years have included P2P web servers, multi-hop Chaum-mix anonymous networks, censorship-resistant social networks, and mobile news aggregation clients.