Course Information

Lecture Time: Tuesday & Thursday, 5:00 PM - 6:20 PM
Location: Knox Hall, 110, North Campus
Final Exam Time: 5/7/2026, Thursday 7:15PM - 10:15PM
Semester: Spring 2026

Course Description

This course introduces the principles and practice of computer networking through a two-axis progression: from small, point-to-point communication to shared-medium LANs, multi-hop internetworking, and Internet-scale systems; and from the application layer down to the physical layer. Students build intuition from real network behavior, learn core protocol mechanisms and design trade-offs, and gain hands-on experience via programming and measurement-driven labs/projects using tools such as sockets, Wireshark/tcpdump, Mininet, and containerized environments (Python recommended; C as an advanced option).

The objective of the course is to enable students to develop a rigorous understanding of how networked systems are designed, implemented, and evaluated, and to acquire practical skills to build and diagnose networked applications and protocols across layers and at scale.

At the end of this course, each student should be able to:

  • Explain the Internet’s layered architecture and key design principles (e.g., encapsulation, end-to-end reasoning) and apply them to analyze new systems.
  • Implement client–server applications using socket programming, and reason about application-layer protocols such as HTTP/HTTPS and DNS.
  • Describe and evaluate reliable data transfer mechanisms (ACKs, timeouts, retransmissions), and explain TCP’s reliability, flow control, and congestion control at a conceptual and algorithmic level.
  • Perform IP addressing and subnetting, and explain packet forwarding, routing fundamentals, NAT, and ICMP in practical scenarios.
  • Explain link-layer services and mechanisms including framing, error detection, Ethernet switching, ARP, and Wi-Fi medium access (CSMA/CA) at an operational level.
  • Measure and interpret network performance (throughput, latency, loss, jitter), and use standard tools (e.g., ping, traceroute, iperf, Wireshark) to diagnose bottlenecks and failures.
  • Describe foundational security mechanisms (TLS, certificates, authentication) and recognize common network threats (e.g., spoofing, MITM, DoS) and basic mitigations.

Grading

  • Midterm: 20%
  • Final Exam: 20%
  • Course Project: 50%
  • Homework: 10%

Communication

Course communication will be conducted through Piazza, please join via this link. For Access Code: You should find it under the Announcements tab in UBLearns Brightspace.

Instructor & Teaching Assistants

Instructor

Yaxiong Xie

Assistant Professor

Email: yaxiongx@buffalo.edu

Office: Davis Hall 321

Office Hours: By appointment - please email to schedule

Chunming Qiao

SUNY Distinguished Professor

Email: qiao@buffalo.edu

Office: 312 Davis Hall

Office Hours:

Teaching Assistants

Currently, no teaching assistants are assigned to this course. Students should contact the instructor directly for questions and support.

Course Policies

Late policy: All assignments are due on the day and time posted.

  • You can submit an assignment up to 7 days late with a fixed daily penalty of 10% out of total points. Latest submission (7 days late) will receive at most 30% of max points even if it’s all correct; 0 points if more than 7 days late.
  • The workload is heavy, so start the assignments, especially the project assignments, early! Excuses that you did not have enough time for an assignment will not be considered. Extraordinary circumstances will be considered at the discretion of the instructor (not the TAs!), contact the instructor via E-mail if you think these apply to you.
  • Teams: Teams are allowed for the two programming project assignments only and will be grouped at the beginning of the semester and are NOT subject to change during the whole semester. If you do not satisfy with your team in the middle of the semester, send an email to the instructor and explain your situation. We may regroup your team and/or ask for an in-team peer review base on the situation
  • Exams: If you miss an exam because of sickness or similar reasons, visit a physician and obtain a note detailing the period during which you were medically incapable of taking the exam. Notify the instructor immediately via e-mail or telephone (voice mail) if you are going to miss an exam, before the exam takes place unless medically impossible. See the instructor as soon as you return to class. If you miss an exam without a valid excuse, you will receive a zero grade for that exam. No make-up exam will be available without a valid excuse.
  • No extra work in the next semester will be given to improve your grade.

Regrading policy:

  • Homework grades will be posted on UBLearns. You can look up graded homework/labs from the UBLearns. Questions about homework/report grades should be sent on piazza via private post within one week after the grade is posted on UBLearns. If you are not satisfied with the TA’s response, you should contact the instructor no later than 3 days after TA’s response.
  • Programming assignments (PA): Grades for the programming assignments will be posted on UBLearns. If you have questions about your grade, you should contact the TAs on piazza via private post or during their office hours within one week after the grade is posted on UBLearns. If you are not satisfied with the TA’s response, you should contact the instructor no later than 3 days after TA’s response.
  • Exams: Exams will NOT be returned. Exam grades will be posted on UBLearns, and you will be able to see your exam during the instructor’s office hours. If you have questions about your grade, you should contact the instructor by email or during office hours within the time period specified after the grade is posted on UBLearns.
  • No regrade requests will be considered after the deadlines mentioned above.

Academic Integrity

  • No tolerance on cheating!
    • All academic integrity violation cases will be reported to the department, school, and university, and recorded.
    • Fail the course on any homework assignment/lab, project, or exam even for fir st offense.
    • Team members are equally responsible.
    • Consult the Department and University Statements on Academic Integrity.
    • Group study/discussion is encouraged, but the submission must be your own work.
  • *Homeworks:** Homework reports must be written up individually. Use of reference materials in the library or online is allowed, providedthat the homework explicitly cites the references used. Note that copying the solutions from online sources or the previous semester is still considered cheating even if you cite the sources.
  • Programming assignments: Programming assignments can be done individually or in teams of up to 2 students. One submission per team, one grade per team. Engaging in discussions concerning concepts is permitted; however, sharing of source code is strictly prohibited. In instances where external resources have been consulted, such as online materials, the provided demonstration code, or Beej’s Socket Programming Guide, students must clearly annotate the relevant sections of their work with commentary, demarcating the beginning and termination of the referenced material. Importantly, under NO circumstances may students rely on the work of their peers, including but not limited to GitHub repositories or code submissions from previous academic terms. We reserve the right to make the ultimate determination regarding breaches of academic integrity policies.
  • Students who do share their work with others are as responsible for academic dishonesty as the student receiving the material. Students are not to show work to other students, in class or outside the class. Students are responsible for the security of their work and should ensure that printed copies are not left in accessible places, and that file/directory permissions are set to be unreadable to others.
  • Excuses such as “I was not sure” or “I did not know” will not be accepted. If you are not sure, ask the TAs and /or the instructor.
  • Any student may withdraw their submission (homework, lab, projects) any time, no questions asked, BEFORE any AI violation is discovered.

AI Tools

No use of AI Tools for any submissions

  • AI Tools like ChatGPT, Google Geimin, etc. are not allowed.
  • They can be used to understand the concepts and for clarifications.
  • Use of AI Tools for the submissions in any class work (Homeworks/Programming Assignments) will not be acceptable.

Medical Emergencies

Accommodation for medical emergencies will be made on a case-by-case basis. Requests for extensions based on medical emergencies must be accompanied by documentation of the emergency from http://www.buffalo.edu/studentlife/who-we-are/departments/health.html.

Accessibility Resources

If you have a diagnosed disability (physical, learning, or psychological) that will make it difficult for you to carry out the course work as outlined, or that requires accommodations such as recruiting note-takers, readers, or extended time on exams or assignments, please advise the instructor during the first two weeks of the course so that we may review possible arrangements for reasonable accommodations. In addition, if you have not yet done so, contact: https://www.buffalo.edu/studentlife/who-we-are/departments/accessibility.html.