Computer and Networking

Computer and Networking

Computer networks from ISPs to WiFi and cellular networks are a key part of the information economy. These networks are the foundation for the Web, and they enable companies such as Google, Facebook and Amazon. This course introduces the fundamental problems of computer networking, from sending bits over wires to running distributed applications. For each problem, we explore the design strategies that have proven valuable in practice. Topics include error detection and correction, multiple-access, bandwidth allocation, routing, internetworking, reliability, quality of service, naming, content delivery, and security. As we cover these topics, you will learn how the internals of the Internet work to support the Web and other networked applications. You will develop a detailed understanding of widely-used networking technologies such as TCP/IP, HTTP, 802.11, Ethernet, and DNS. The course includes an optional sequence of projects that provide concrete experience with networked software implementation. The projects culminate in a peer-to-peer social networking application. As many of the problems the Internet must solve to achieve its core functionality must be addressed again by higher layers, the project experience reinforces the lessons of the core course material and relates it to networked application development. The projects target Android phones, although desktop hosting is also supported.