|Instructor||William Conner (firstname.lastname@example.org)|
This course focuses on the history, theory, and implementation of computer networks. Topics include everything from low-level technologies (e.g., Ethernet, Wi-Fi) to high-level applications (e.g., Web, email). By the end of this course, you should have a better understanding of the underlying network protocols used by the computers, smart phones, and other network-enabled devices that you depend on every day.
• Computer Networking History
• Applications (HTTP, DNS, email)
• Transport Layer (TCP, UDP, QUIC)
• Network Layer (IPv4, IPv6, ICMP)
• Link Layer (Ethernet)
• Wireless and Mobile Computing
• Security (Cryptography, SSL/TLS, Web vulnerabilities)
Weekly homeworks, two exams, and three projects. These will be a series of hands-on programming and design tasks. Based on provided specifications (e.g., the protocol standard) you will implement different network servers or clients (e.g., a simple web server or a simple network router). Note that class attendance is mandatory.
Computer Networking: A Top-Down Approach (7th Edition) by James F. Kurose and Keith W. Ross
Please note this is the new 7th edition; previous iterations of this course used the 6th edition.
Core Programming (completed or concurrently enrolled with a Pass on the programming placement exam).
Familiarity with C, Java, and/or Python
Experience with concurrent programming (threads, synchronization)
Recommended (but not required): UNIX Bootcamp