Data Communications and Networks


Fall 2003

Thursday 7:00 PM 9:00 PM WWH 109

Revision 8 (11-19-2003)

Instructor Information


Joseph P. Conron


WWH 401



Thursdays 6:00 - 6:50 by appointment please


TA Information

Lee-Ad Gottlieb


Jeremy Weinberger


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 begin by studying the exchange of data between two directly connected devices. In particular, we will examine aspects of data transmission, interfacing, and link control.

Once we understand how data can move reliably between two directly connected systems, we will examine the problems that are inherent in networks that are comprised of tens of millions of communicating devices.

A significant element of the course is protocol architecture and design. We will study both the OSI protocol model and the Internet Protocols (IP and TCP). 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.

We will be using a very nice network simulator for which you will write programs in C. The simulator will allow you to implement some of the algorithms we will study. Since most students seem to prefer programming assignments to question/answer assignments, you will write programs, particularly for the simulator. All of the of simulator programming will be done in C.

You will also write some simple socket programs, as well as programs that demonstrate your understanding of finite state machines, queues, and other structures commonly used in protocol development.

I will introduce you to socket programming (in C and in JAVA). Socket programming is the most widely used abstraction for building applications that exchange data with other applications. You will have one or two assignments in this area.

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





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 C). 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, 2nd Edition

James Kurose and Keith Ross, Addison Wesley, 2003, ISBN: 0201477114


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


The C-Net Simulator

Some of the assignments require that you use the C-Net Network Simulator.

      The documentation for C-Net is here

      The instructions to install C-Net in your home directory on the CS department Solaris network are here.


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 25



Assignment 2


Oct 16



Assignment 3


Nov 13 (by 6pm)



Assignment 4


Nov 23



Assignment 5 *


Dec 18



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

on Dec 18 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 000-00-0001 through 200-00-0000, then you are in Group A.

      If your student ID is 200-00-0001 through 999-99-9999, 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:


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