|
Data Communications and Networks
Fall 2006 Thursday 7:10 PM – 9:00 PM WWH 109
|
Instructor Information
|
Instructor: |
Joseph P. Conron |
|
Office: |
WWH 401 |
|
Email: |
|
|
Hours: |
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
Prerequisites
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 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)
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.
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.
|
Assignment |
Percentage |
Due Date |
Group A |
Group B |
Group C |
|
15 |
9/27/2006 |
Nguyen |
Jeremy |
Abid |
|
|
15 |
10/11/2006 |
Abid |
Nguyen |
Jeremy |
|
|
20 |
11/01/2006 |
Jeremy |
Abid |
Nguyen |
|
|
25 |
11/22/2006 |
Nguyen |
Jeremy |
Abid |
|
|
25 |
12/14/2006 |
Prof |
Prof |
Prof |
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.
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:
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 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.
You should NOT:
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:
http://cs.nyu.edu/mailman/listinfo/g22_2262_001_fa06
Please send your questions to this list (NOT TO ME) so that everyone may participate in the discussion.