The emphasis in this course is on fundamental concepts in digital communication. In modern computer networks, data communication takes place by sending data from A to B via a layered architecture where each layer implements a different abstraction. The higher layers are responsible for handling web pages, emails and similar things, that are translated into packets, bits, and eventually digital signals on physical links (e.g., lightpulses, electrical signals in copper wires, radio waves). This layered architecture with increasing levels of abstraction and separation of concerns, is a fundamental approach that you will encounter in all aspects of computer science (and beyond). Within this architecture, we will concern ourselves with questions like: what route should the data follow through the network, what do we do when errors occur, how do we interconnect two networks that have completely different properties, etc. Following the IEEE/ACM Computer Science curriculum, topics to be discussed include: the layered network architecture, different types of networks (e.g., wired and wireless, LAN and WAN), multiplexing, error control, flow control, routing and forwarding, names and addresses, high-level architectures of networked applications (peer-to-peer, client/server, etc), performance issues, and scalability issues. These issues are discussed while exploring technology behind the Internet and its popular protocols (e.g., TCP, UDP, Ethernet, Wifi, etc.).
After successfully completing the Computer Networks course, you are able to: