
Introduction to Computer Networks
Arvind Krishnamurthy, David Wetherall, John Zahorjan
The Internet is a computer network that millions of people use every day. Understand the design strategies used to solve computer networking problems while you learn how the Internet works.
About the Course
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.
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.
About the Instructor(s)



Recommended Background
We assume a rudimentary understanding of probability and computer system organization, and teach the course at the upper-undergraduate level. To participate in the optional projects you will need to program in Java, and to commit sufficient time for programming. Concurrent programming experience is useful for the projects.
Suggested Readings
A textbook is not required to keep up with the lectures or do the homeworks and projects. If you would like a reference or a detailed understanding of the material then we recommend Computer Networks (5th Edition, either U.S. or International version)
, by Tanenbaum and Wetherall
Course Format
The course consists of roughly two hours of video lectures per week, presented in short segments. There will be regular, required homeworks of textbook-style problems and hands-on exercises to cover the basics of the material. For students who want to gain a deep appreciation of computer networks, there is an optional sequence of Android programming projects. The course ends with a final exam.
Categories:
No comments:
Post a Comment