Data Communications and Networks


G22.2262-001

Fall 2004

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


Revision 3 (10-13-2004)

Instructor Information

Instructor:   

Joseph P. Conron

Office:   

WWH 401

Email:   

jconron@cs.nyu.edu

Hours:   

Thursdays 6:00 - 6:50 by appointment please

 

TA Information

Jeremy Weinberger (jeremy at cs)

        

Course Description

This course is a one semester introductory course that introduces the student to a broad range of topics fundamental to computer communications.  We will approach the subject by taking a top-down approach - introducing some important application-level protocols, then proceeding down the stack to from the transport to the data  

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.

Multimedia applications have certain performance requirements that the Internet does not inherently handle very well.  We'll see how new protocols and algorithms have been developed to provide performance "guarantees" over an unpredictable network.  We will contrast this approach to that of circuit switched networks when we look at the ATM model.

Homework will consist of some written assignments based upon problems from the book 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 fairly complete implementation of RFC 793.

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

There will be no examinations and no final examination.

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)

 

 

 

Prerequisites

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.

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 http://www.javasoft.com/docs/books/tutorial.

 

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

The course grade will be based on 5 homework assignments

Assignment

Percentage

Due Date

Group A

Group B

Assignment 1

15

Sep 27

 

 

Assignment 2

15

Oct 14

Jeremy

Professor

Assignment 3

15

Oct 28

Professor

Jeremy

Assignment 4

15

Nov 18

Jeremy

Professor

Assignment 5 *

40

Dec 16

Professor

Professor

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

 on Dec 16 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:

These groups are organized alphabetically as follows:

 

Group A:  LAST name begins with letters Aa through Hr

Group B:  LAST name begins with letters Hs through Zz

You must submit your assignment to the grader assigned to your group for the given assignment.  The grader 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 – 5]

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.  If you do not already have one, please send an email to Maria Lucia Petagna (petagna@cs.nyu.edu) 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.

 

 

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 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.  Assignments will not be accepted later than one week from the due date.

 

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:

http://cs.nyu.edu/mailman/listinfo/g22_2262_001_fa04

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