Data Communications and Networks


Fall 2006

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

Revision 9 (11-06-2006)

Instructor Information


Joseph P. Conron


WWH 401



Thursdays 6:00 - 7:00


TA Information

Jeremy Weinberger (TA)

            Email                jeremy at cs dot nyu dot edu

            Office Hour        Mondays 3-5 PM 719 Broadway, MRL (on the 12th floor)


Nguyen Tran Dinh (TA)

Email:               trandinh  at cs dot nyu dot edu

Office Hour        Wednesdays 5-6 PM 719 Broadway, 704


           Abid Abbas (Grader)     maa385 at nyu dot edu


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 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 to end.

We will use a packet sniffer to help us visualize the concept of “layering”.  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 or more of the protocols and/or algorithms we will study.

Although I prefer that students write their programming assignments using JAVA, I will try, where possible, to allow development in either JAVA or C.

Topics we will cover are:

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

·         Data Encoding and Transmission

·         Local Area Networks and Data Link Control

·         Wireless Communications

·         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




You should 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.

If you are new to JAVA, the following text is a good JAVA introduction and reference. Be warned though, that it does not teach object-oriented programming.

The Java Programming Language, Third Edition, Ken Arnold, James Gosling, David Holmes Addison-Wesley Pub Co; ISBN: 0201704331

If you need a JAVA tutorial that includes an introduction to object oriented programming, try the free JAVA Tutorial at


Required Text

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

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

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



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:

Data & Computer Communications Seventh Edition,

William Stallings, Prentice Hall, 2003, ISBN 0131006819

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

Your final grade will be determined by your scores on a series of homework assignment and your class participation. There a total of five (5) assignments.  These assignments will consist of:

o        problems similar to those in the text

o        small (less than 500 lines of code) programs

o        packet analysis using Ethereal packet sniffer

 Since some assignments will be more difficult than others, the percent that each represents of your final grade will vary.

About class participation:

 I will ask questions during each lecture and I expect that over time you will attempt to answer these questions.  I also expect that you will ask questions of me (of relevance to the topic) during our meetings.  I will make note of who “participates”  in the class for each meeting.  At the end of the year, I will add up to 3 points to your average score from the written assignments depending upon your level of participation.


Grading Group Assignments

I am defining three (3) grading groups, A ,  B, and C.  You are assigned to one of these groups for the entire semester, based upon your student ID as follows:

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

·      If your student ID is N13120001 through N15400000, then you are in Group B.

·         If your student ID is N15400001 through N19999999, then you are in Group C.

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.




Due Date

Group A

Group B

Group C

Assignment 1






Assignment 2






Assignment 3






Assignment 4






Assignment 5







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.

If you are submitting attachments of any kind (source files, text files, any MS documents, etc),  I prefer that you put all attachments into a WinZip file else they may rejected by the virus scanner.

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:


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 not be accepted.  So, even if you have not finished your assignment, you should submit whatever you have completed by the due date.  The due date for all assignments will be posted on this web page.


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.

The Computer Science Department has published a policy for Academic Integrity here.  Be sure to read it carefully and follow the rules it presents.  If you have ANY question at all about how you should address an assignment within these guidelines, PLEASE contact me immediately and I will advise you.


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.