Students enrolling in this class must have a working knowledge of fundamental data structures and associated algorithms. For some of the practical aspects of the course, a working knowledge of an object-oriented programming language (e.g., C++, C#, or preferably Java) is expected. An undergraduate course in data communication and networks is helpful but not required. Prior exposure to some of the fundamental data structures that are common to communications protocol implementations (e.g., FSM, Ring Buffers, etc.) is a plus.

If you are new to Java, the following text is a good introduction to the Java programming language. However, please note that the book is not designed to teach object-oriented programming:

There will be one required lecture each week. Readings will be
assigned at the end of each lecture.
There will be assignments and projects throughout the course.
The due date will be specified on each given assignment. Assignments may consist of problems similar to those in the textbook, small (less than 500 lines of code) programs, and packet analysis using the Ethereal packet sniffer. Some assignments may be more difficult than others and therefore their respective weights towards the final grade will vary accordingly. Homework
will be generally due right before class the day the assignments are due.
The due dates for the assignments will be announced when the assignments are assigned.
The submission method (i.e. electronic submission, paper submissions, the format, etc.) will
be specified in each assignment. Late homework will not be accepted
without the instructor's prior permission. Extensions are available
only in the case of dire emergencies.

There is a final exam in this class, which wil be
either in-class or take-home. No make-up exam will be scheduled.
Class participation will be measured based on individual student's ability to answer questions asked during class over time as well as ask questions related to the material covered in the course. If you have a conflict with the exam date, you should not be taking this class
without making prior arrangements with the instructor.

A class mailing list has been setup to facilitate communication with the
class pertaining to questions, assignments, grades, changes in requirements
etc. The class Web page is at http://www.nyu.edu/classes/jcf/CSCI-GA.2262-001/.
This page will have further links to pages with announcements, handouts, etc.
Students are required to log in and check the page at least once a
week to make sure they are up to date with any information pertaining
to the course.

The Web site is the primary means of getting information
outside of class. The mailing list will be used for urgent messages,
such a updates and hints for the homeworks.

If you have any questions, issues that you want to
discuss, or things that you would like to have clarified, please see the
instructor as soon as possible.

The final grade for the course will
be determined as follows:

Assignments 25%

Projects 30%

Attendance and class participation 10%

Final 35%

Extra credit will be granted periodically for
particular clever or creative solutions.

To receive a passing grade, you must complete satisfactory work in
every area. In other words, you must receive passing grades for your
homework (cumulatively) and a passing grade on the final.

If you have any concerns about your grade or about the grading, please
feel free to see the instructor.

You are required to do the assignments and projects by yourself;
collaborating with other students or copying their work will not be
tolerated. Anyone found copying or using another persons work will be
dealt with under NYU's procedures for cheating. The consequences range
from receiving a failing grade for the assignment to expulsion.
Please consult the department's academic integrity policy for more details.

However, we do strongly encourage students to discuss the materials
covered in class. It is also acceptable to help or receive help from
other students concerning features of Windows, Linux, or the UNIX operating system,
or any other application that you use. There is a fine line
between discussion and cheating. If you feel uncertain about whether
you are crossing the line feel free to discuss these issues with the
instructor before you do so.

We would like the course to run smoothly and enjoyably. Feel free to
let the instructor know what you find good and interesting about the course.
Let the instructor know sooner about the reverse. See the instructor, leave
him a note, or send him an email.