CSE 489/589: Modern Networking Concepts (Spring 2020)





[Course policies]

[Academic integrity]


Class Webpage


Teaching Staff

Instructor: Dimitrios Koutsonikolas, Associate Professor
                  Office: 311 Davis Hall
                  Office Hours: Wed 2:00 - 3:00 PM, Th 5:00 - 6:00 PM, or by appointment
                  Phone: 716-6454733
                  Email: dimitrio [at] buffalo.edu

Teaching Assistants:
                  Shivang Aggarwal
                  Office: 302 Davis Hall/300 Davis Hall Student Lounge
                  Office Hours: Tue 4:00 - 5:00 PM, Fri 11:00 am - 12:00 noon
                  Email: shivanga [at] buffalo.edu

Time and Location

  • Lectures: TTh, 2:00-3:20 PM, NSC 215
  • Recitations: M, 6:00-7:00, Clemen 120

Course Description

The course introduces basic elements of modern computer and telecommunication networks. The focus is on the four upper layers of the popular five-layer TCP/IP model. In each layer, the state-of-the-art hardware and software technologies are introduced. These include, for example, DNS, HTTP, SMTP, and P2P systems at the application layer, TCP/UDP protocols at the transport layer, routing and forwarding, intra-domain and inter-domain routing algorithms at the network layer, random access protocols at the MAC layer, and local area networks (Ethernet and WiFi). Advanced topics such as multipath TCP and software defined networking are also briefly discussed.

The objective of the course is to enable students to
  • gain fundamental knowledge of computer and telecommunications networks
  • understand various tradeoffs and choices in current networking technologies
  • learn basic network programming
  • prepare for studying advanced topics (e.g. CSE 620, CSE 630, CSE 646), and a career in the field of computer networking.
At the end of this course, each student should be able to:
  • Have a good overall picture of computer networking in general and the Internet in particular.
  • Have a rough idea of how various networking components (hardware/software) work and where they belong in the 5-layer protocol stack.
  • Know how to do network programming in C/C++ under Unix.
  • Know how to do basic performance analysis of popular networking protocols.
  • Know how to use popular networking tools such as WireShark and iperf.
  • Start reading more advanced/research-oriented networking materials.


Students need to have some basic knowledge of calculus and probability theory, data structures and algorithms (CSE 250 and either EAS 305 or MTH 411). In addition, they should be proficient in C or C++ programming.

Required Textbook

James F. F. Kurose and Keith W. Ross, "Computer Networking: A Top-Down Approach Featuring the Internet", 7th edition, Addison Wesley, 2017.

Reference Textbooks

  • Computer Networks: A Systems Approach, Larry Peterson and Bruce S. Davie.
  • UNIX Network Programming : Networking APIs : Sockets and XTI : Volume 1, Second Edition, W. Richard Stevens, Prentice Hall, Oct 1997, ISBN: 013490012X. Highly recommended!
  • Advanced Programming in the UNIX Evironment, W. Richard Stevens, Addison-Wesley, 1992, ISBN 0-201-56317-7.
  • Computer Networks, Andrew Tanenbaum, Prentice Hall PTR; 4 edition (August 9, 2002), 912pp.
  • Internetworking with TCP/IP, Volume 1: Principles, Protocols, and Architectures, Fourth Edition 4TH, Douglas E. Comer, Prentice Hall, Feb 2000, ISBN: 0130183806
  • The TCP/IP Illustrated, Volume 1: The Protocols, W. Richard Stevens and Gary R. Wright, Addison Wesley Longman, Dec 1993, ISBN: 0201633469
  • The TCP/IP Illustrated, Volume 2: The Implementation, W. Richard Stevens and Gary R. Wright, Addison Wesley Longman, Jan 1995, ISBN: 020163354X
  • Queueing Systems: Theory, Vol. 1, Leonard Kleinrock, Wiley, John & Sons, January 1975
  • Queueing Systems Volume 2: Computer Applications, Leonard Kleinrock (Editor), Wiley, John & Sons, April 1976


(Tentative and subject to change)
  • Midterm: 20%
  • Final: 20%
  • Homeworks/WireShark Labs: 20%
  • 3 Programming Assignments: 40% (12% + 12% + 16%)
  • Class Participation: 5%

Course Policies

  • Late policy: All assignments are due on the day and time posted.
    • Homeworks/WireShark Lab reports are due at the beginning of class. They may be submitted up to 1 day late, and late submissions will be scored out of 90 points instead of 100. No homework/report will be accepted more than 1 day after the assigned due date. Late day starts at the beginning of class when the homework/lab is due and ends 24 hours later.
    • Programming assignments: Students have 4 late days to spread across the programming assignments as they see fit. After the late time is used up, 10 points will be deducted from the assignment score per late day. No programming assignment will be accepted more than 7 days after the assigned due date.
    • Workload is heavy, so start 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 him if you think these apply to you.
  • 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:
    • Homeworks/WireShark Labs: Homework/Lab grades will be posted on UBLearns. You can pick grade homeworks/labs from the instructor's office. Questions about homework/report grades should be sent by email to the TAs 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 the TA's response.
    • Programming assignments: Grades for the programming assignments will be posted on UBLearns. If you have questions about your grade, you should contact the TAs by email 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 the 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 one week 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.
    • 0 in the particular assignment/exam if this is your first offense in any course.
    • Fail the course on the second 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/WireShark labs: Homeworks/lab reports must be written up individually or in teams of up to 3 students (highly recommended). One submission per team, one grade per team. Collaboration among teams or individuals is NOT allowed! Use of reference materials in the library or online is allowed, provided that the homework/report explicitly cites the references used. Note that copying the solutions from online sources is still considered cheating even if you cite the sources.
  • Programming assignments: Programming assignments must be done individually. Discussions of ideas are welcome, but exchanges of source codes are not allowed. Use of segments of code found online is allowed provided that the student explicitly cites the references used. Note that copying the whole solution from online sources and/or copying code from past year assignments is still considered cheating even if you cite the sources.
  • 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.

Dimitrios Koutsonikolas