Instructor: Dimitrios Koutsonikolas, Associate Professor
Office: 311 Davis Hall
Wed 2:00 - 3:00 PM, Th 3:30 - 4:30 PM, or by appointment
Email: dimitrio [at] buffalo.edu
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, Obrian 112
- M, 6:00-6:50 PM, Cooke 114
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
At the end of this course, each student should be able 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
- 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
- Know how to do network programming in C/C++ under Unix.
- Know how to do basic performance analysis of popular
- Know how to use popular networking tools such as WireShark and iperf.
- Start reading more advanced/research-oriented networking
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.
- 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.
- 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%
- 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.
- 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.