This course aims to illustrate how computer networks are implemented and how they are treated within computer programs. Students will be introduced to the layered approach to data communication over these networks. They will be exposed to the details of the protocols of some of the higher layers, where they would probably already be familiar with the names of the protocols (e.g., HTTP for Web pages and SMTP for email) from their own use of the Internet. It is expected that students will become aware of the issues involved with deploying a computer network, and with developing software to work with networks. Finally, through exposure to the state of the art in networking technologies, students will gain an appreciation for how the principles for deploying them remain relevant even as the technologies themselves evolve.