Data Communications and Networks


Fall 2005

Thursday 7:00 PM – 9:00 PM   WWH 109

Revision 4 (10-26-2005)

Instructor Information


Joseph P. Conron


WWH 401



Thursdays 6:00 - 6:50 by appointment please


TA Information

Nishith Krishna (nishith at cs dot nyu dot edu)   Office Hours by appointment – please send email

Sumit Chopra   (sumit at cs dot nyu dot edu)     Office Hours:  5:00PM - 6:00PM on Tuesdays



Course Description

This course is a one semester introductory course that introduces the student to a broad range of topics fundamental to computer communications.  A significant element of the course is protocol architecture and design.  We will use the Internet and its major protocols (IP and TCP) as the basis for most of our studies.   The student will become very familiar with the concept of protocol layers and packet formats.  We will look closely at how TCP handles the problems of flow control and congestion control as well as how routing algorithms and protocols work to deliver packets from end system to end system.

Packet “sniffers” are tools that allow us to “see” frame and packet data as it flows into and out of a computer system.  We will use the Ethereal Packet Sniffer to study examples of LAN and WAN protocols.

Homework will consist of some assignments based on lectures and readings in the course text, packet analysis using Ethereal, and some small programming assignments.  The programming assignments show you how to use sockets in UDP and TCP and will introduce you to the use of finite state machines in protocol design.  A final project will require the student to develop a program of modest size (about 1000 -1500 lines of code) to implement one of the protocols we will study.

All programming assignments will be written in JAVA, as will be the final project.

There will be no examinations and no final examination.  There will be moderate amount of homework, most of it in the form of program development and analysis of problems.

Topics we will cover are:

·      Fundamental Data Structures: queues, ring buffers, finite state machines

·      Data Encoding and Transmission

·      Data Link Control

·      Packet Switching

·      OSI and Internet Protocol Architecture

·      Congestion Control and Flow Control Methods

·      Internet Protocols (IP, ARP, UDP, TCP)

·      Network (packet) Routing Algorithms (OSPF, Distance Vector)

·      IP Multicast

·      Sockets

·      Multimedia Networking (RTP, RTSP, RSVP)




You must have completed Programming Languages AND Fundamental Algorithms (or have a working knowledge of data structures and associated algorithms and be proficient in either C or Java (preferably JAVA).  I will go over some fundamental data structures: FSM, Queues, Ring Buffers, that are common to communications protocol implementation, but it will help if you've had some exposure to them.


Required Text

We will be using the following book as our primary reference in class

Data & Computer Communications Seventh Edition,

William Stallings, Prentice Hall, 2003, ISBN 0131006819


NOTE: Changes and corrections to the text book are here: Errata


Recommended Texts

Other communications networking texts that you may find useful in your work or future studies:

Computer Networking: A Top-Down Approach Featuring the Internet, 3rd Edition

James Kurose and Keith Ross, Addison Wesley, 2004, ISBN: 0-321-22735-2


Computer Networks And Internets with Internet Applications, 3rd Edition,

Douglas Comer, Prentice Hall,  ISBN 0130914495


Internetworking with TCP/IP: Volume III: Client-Server Programming and Applications, BSD socket version,

Second Edition, Comer, D.E. and Stevens, D.L. Prentice Hall, ISBN 0-13-260969-X



Syllabus (the course Syllabus, including weekly readings)


Lectures (links to lectures)


Assignments and Student Evaluation

The course grade will be based on 5 homework assignments



Due Date

Group A

Group B

Assignment 1


Sep 29



Assignment 2


Oct 20



Assignment 3


Nov 17



Assignment 4





Assignment 5 *


Dec 22



* There is no late period for the final assignment.  It must be submitted by 11:59 PM on Dec 22 without exception.


Grades will be given according to the following schedule:

A     93 - 100

A-    90 - 92.9

B+    87 - 89.9

B     83 - 86.9

B-    80 - 82.9

C+    75 - 79.9

C     70 - 74.9

C-    60 - 69.9



Grading Group Assignments

I am defining two (2) grading groups, Group A and Group B.  You are assigned to one or the other group for the entire semester based upon your student ID as follows:

·      If your student ID is N10000000 through N15000000, then you are in Group A.

·      If your student ID is N15000001 through N19999999, then you are in Group B.

You must submit your assignment to the TA assigned to your group for the given assignment.  The TA assignments are listed in the assignments table above.


How to Submit Assignments

When a given assignment is due, you must email the required items to the grader for your group.  I will be grading the final assignment so EVERYONE will send that to me for grading.  When you submit an assignment by email you MUST write the subject as follows:

G22.2262 Assignment N

Where N is the assignment number [1 – 6]

If you are submitting attachments of any kind (source files, text files, any MS documents, etc), you MUST zip all of them up into one zip file.  The zip file should be named using your student ID and assignment number as follows:

Where 123456789 is your SID and n is the assignment number [1 – 6].

NOTE: ALL homework is due BEFORE midnight on the given due date.  This includes the final assignment.



Computer Accounts

You will be required to use the Solaris systems in CIMS network for some of your programming assignments.  All students taking graduate CS courses should have a CIMS network account.  If you do not already have one, please send an email to Maria Lucia Petagna ( to request one.  Include the following information:

·         Name

·         Student ID

·         Identify your degree program

·         List the courses in the CS department for which you've registered this semester.


Student Machines

There are three Solaris systems in the CS department that you are free to use for you coursework.  These are courses1, courses2, and courses3.


Rules for Working on Assignments

1.     Unless stated otherwise in the assignment, all assignments must be done individually (see Cheating below).

2.     Unless stated otherwise in the assignment, all writing and coding must be original.

3.     All assignments must be emailed to the appropriate grader.   To avoid problems with "lost emails" ("the Internet ate my homework") you should save a copy of your EMAIL (not simply the assignment itself).


Late Assignments

Late Assignments will be accepted UP TO ONE WEEK LATE, subject to a 10% penalty.  That is, if the maximum score for an assignment is N, then you will lose N/10 points.


Since we will go over the answers to assignments in class, NO credit will be given for ANY assignment submitted later than one week from the due date.  Late assignments MUST be submitted before the start of the next class following the due date.  This applies to the final assignment as well, even though we will not go over that assignment in class.


Cheating Policy

You should NOT:

  1. Copy any part of another student's homework answers.
  2. Allow another student to copy your homework.
  3. Copy any part of code found in a book, magazine, the Internet, or other resource.
  4. Present the work of another as your own.  If you use the idea of another in your work, you MUST provide appropriate attribution (that is, cite the work and the author).

The penalty for ANY cheating offense is a grade of F for the course.


Class Email List

All students should register themselves with the class list, which is used for all technical discussions concerning the course. To register, go to the following web page, and follow the instructions:

Please send your questions to this list (NOT TO ME) so that everyone may participate in the discussion.