ITCS 6166/8166: Computer Communications and Networks
Please note that this syllabus is subject to change over the course of the semester. Updates will be made available on the course website.
Course mode
Possible mode be
Face-to-Face
Hybrid = Face-to-Face (F2F) + Online Asynchronous Instructional Method
Online Asynchronous
What is online asynchronous? - "Not being delivered in person or in real time. Asynchronous learning allows you to take online courses on your own schedule. Instructors provide materials, lectures, tests, and assignments that can be accessed at any time."
Course Topics (tentative) and Syllabus
Introduction to networking, Internet structure, Network models, Application layer and protocols (e.g. HTTP, FTP, SMTP, POP3, IMAP, DNS), Transport layer (Transport-layer services, Multiplexing and demultiplexing, Connectionless transport: UDP, Principles of reliable data transfer and flow control, Go-Back-N (GBN), Selective Repeat (SR), TCP flow control, Principle of congestion control - AIMD, Slow Start, TCP congestion control (Tahoe, Reno), Network layer (Forwarding and routing, Internet Protocol (IP), DHCP, Fragmentation, NAT, IP addressing and subnet, routing algorithms - link sate and distance vector, RIP, OSPF, BGP, broadcast and multicasting routing), The link layer: links, ARP, access networks, and LANs (Error detection and correction techniques, Multiple access links and protocols, ALOHA, CSMA, CSMA/CD, Wireless and mobile networks - CSMA/CA, CDMA, P2P network (Chord, Bit torrent, and etc.) [optional], Quality of service, Cryptography & network security, Protocol understanding and implementation [optional], Study of research papers
Recommended Textbook(s)
Computer Networking: A Top-Down Approach (6th/7th Edition) [Textbook]
by James F. Kurose, Keith W. Ross
Data Communications and Networking [Recommended]
by Behrouz Forouzan
Tentative Grading Scheme (Check Canvas)
Homework 25%
Activity 10%
Quiz/ Online Test 20%
Midterm 10%
Research 20%
Final Exam 15%
Introduction and Prerequisites
Students must have solid background in programming languages, such as C/C++, Python, Java, or Prolog and must understand how computers work at a low level (as taught in the Computer Organizations and Systems courses), and must be able to apply basic mathematical concepts (as taught in the Discrete Math course). You will also be expected to master quite a bit of theoretical material and to apply knowledge to solve challenging problems.
Notes
This is an upper level computer science course. I assume you know how to program, how to debug. TA and Professor will help you but will not debug your code. You are expected to study materials, follow announcements, submit homework/project and take test on time. Assignments can be submitted to Canvas. Don't get behind in this class! And please feel free to contact TA and me, if you need help or further information.
Course Materials
Lectures and course materials, including presentations, tests, exams, outlines, and similar materials, are protected by copyright. You are free to take notes and make copies of course materials for your own educational use. However, you may not, nor must you allow others to reproduce or distribute lecture notes and course materials publicly without my express written consent.