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





[Course Blog]

Class Webpage


Teaching Staff

Instructor: Dimitrios Koutsonikolas, Assistant Professor
                  Office: 311 Davis Hall
                  Office Hours: M 1:30-2:30 PM, W 2:30-3:30 PM, or by appointment
                  Phone: 716-6454733
                  Email: dimitrio [at] buffalo

Teaching Assistants:
                  Nikhil Londhe
                  Office: 302 Davis Hall/300 Davis Hall Student Lounge
                  Office Hours: Tuesday/Thursday 5:00-6:00 PM
                  Email: nikhillo [at] buffalo.edu

                  Ramanujan Sheshadri
                  Office: 302 Davis Hall/300 Davis Hall Student Lounge
                  Office Hours: Monday 4:30-5:30 PM
                  Email: ramanuja [at] buffalo

Time and Location

  • Lectures: TTh, 2:00-3:20 PM, Hoch 114
  • Recitations:
    • M, 6:00-6:50 PM, Bell 337

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 in the application layer, TCP/UDP protocols in the transport layer, routing and forwarding, intra-domain and inter-domain routing algorithms in the network layer, random access protocols in the MAC layer, and local area networks (especially Ethernet and WiFi). If time permits, topics in multimedia communications, quality of service, and network security will also be briefly discussed.

The objective of the course is to enable students to
  • gain fundamental knowledge of computer and telecommunications networks
  • appreciate 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 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 operating systems, calculus and probability theory, data structures and algorithms. In addition, they should be proficient in C/C++ programming.

Required Textbook

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

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: 35%
  • Class Participation: 10%

Course Policies

  • Late policy: All assignments are due on the day and time posted, at the beginning of class.
    • Homeworks/WireShark Lab reports 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, 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 your 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 your 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: Graded homeworks/reports will be returned during lecture and grades will be posted on UBLearns. If you don't pick them up during that time, it is your responsibility to pick them up from the instructor during office hours as soon as possible. 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 me no more than 3 days after the grader's response.
    • Programming assignments: Programming assignments will not be returned. 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 me no more than 3 days after the TA's response.
    • Exams: Exams will not be returned. Exam grades will be posted on UBLearns. If you have questions about your grade, you should contact me by email or during my office hours within one week after the grade is posted on UBLearns.
    • No regrade requests will be considered after the deadlines mentioned above.

Academic Honesty

  • No tolerance on cheating!
  • Group study/discussion is encouraged, but the submission must be your own work.
  • For the homeworks/WireShark labs: Homeworks/lab reports must be written up individually. Collaboration and/or use of reference materials in the library or online is allowed, provided that the homework/report explicitly states who collaboration was done with or cites the references used, and that the homework is written up completely independently (i.e. no sharing/copying of text, solutions, etc.). Note that copying the solutions from online sources is still considered cheating even if you cite the sources.
  • For the programming assignments: 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.


  • HW5 posted. Due on 05/08 at the beginning of class.
  • 04/15: HW4 posted. Due on 04/28/2014 at the beginning of recitation (BELL 337). Late submission due: 04/29 at the end of Nikhil's office hours. Submissions in my office will only be accepted until 04/28, 4:00 pm.
  • 04/15: Wireshark LAB5 posted. Due on 04/24.
  • 04/07: PA3 posted. Due on 05/02.
  • 04/03: Wireshark LAB4 posted. Due on 04/10 at the beginning of class.
  • 04/01: HW3 posted. Due on 04/17 at the beginning of class.
  • 03/27: Extra office hours tomorrow, Friday, 03/28, 10:30-12:00 and 3:30-4:30.
  • 03/06: Wireshark LAB3 posted. Due on 04/03 at the beginning of class.
  • 03/03: PA2 posted. Due on 04/04.
  • 02/25: HW2 posted. Due on 03/11 at the beginning of class. No late day for this homework. Solutions will be posted immediately after class.
  • 02/20: WireShark LAB2 posted. Due on 03/04 at the beginning of class.
  • 02/11: WireShark LAB1 posted. Due on 02/18 at the beginning of class.
  • 02/04: Zilong is no longer a TA for CSE 4/589. He will not hold office hours this Friday.
  • 02/04: HW1 posted. Due on 02/25 at the beginning of class.
  • 01/30: PA1 posted. Due on 02/28.
  • 01/30: WireShark LAB0 posted. Due on 02/06. Not Graded!
  • 01/28: Nikhil's new office hours: Tuesday, 3:30-4:30 PM
  • 01/22: Course webpage is up.

Dimitrios Koutsonikolas