Data Structures
CSCIUA 0102001 (Honors), 002
Tuesday and Thursday, 2:003:15
Room WWH 102
Professor Ernest Davis
Reaching Me
 phone: (212) 9983123
 office: 329 Warren Weaver Hall
 Office hours: Monday 1012, Wed 34, or by appointment.
 Email:
Registration
Students who are taking this course for honors should register for section
001. Students who are not should register for section 002.
Recitation
The recitation section is section 003 of this course: CSCIUA.0102003.
It will meet Thursdays, 3:304:45, WWH 101. The instructor is
Azam Asl. Be sure to register
for this section in addition to 001/002.
Azam will hold office hours Tuesday, 3:304:30, Warren Weaver 328.
Prerequisites: CSCIUA 0101, Introduction to Computer Science
Required Textbook:
Data Structures and Algorithm Analysis in Java by Mark Allen
Weiss, Addison Wesley.
Topics
 Object oriented features in Java
 Abstract methods, interfaces, and generics
 Recursion
 Worst case asymptotic running time analysis
 Abstract Data Types
 Linked lists.
 Iterators
 Stacks
 FIFO Queues
 Trees
 Hashing and hash tables
 Priority Queues
 Sorting
 Graphs
Requirements
Weekly homeworks (10%)
Programming assignments (30%)
Midterm exam (20%)
Final exam (40%)
Submitting Assignments
Homework assignments should be emailed to Azam Asl,
aa2821 at nyu dot edu,
in either PDF, Word, or plain text. The subject should be
"Data_Structures_Problem_Set_N", substituting the number for N.
Honors versions of the problem set should have the subject
"DSHonors_Problem_Set_N".
Be sure to include your name at the top of the submission.
Homework assignments will not be collected in class.
Programming assignments should be emailed to Ashish Singla,
as5396 at nyu dot edu. Generally, these will just be one or more java files.
The subject should be "Data_Structures_Assignment_N".
Honors versions of the problem set should have the subject
"DSHonors_Assignment_N".
Be sure to
include your name as a comment at the top of the submission.
All assignments are due at the start of the class period on the due date.
Homework assignments will be accepted late until the next class meeting
(that is, if they are due on a Tuesday, they will be accepted until
Thursday, and vice versa.) Programming assignments will be accepted
up to one week late. Any late submission will have a penalty of 1 point out of
10.
Grading of Programming Assignments
In general, the programming assignments will be graded on the following basis:
 Compiling, running correctly on the specified examples,
and following the specifications: 60%.
Zero credit will be given for a submission that does not compile; does
not give the correct answer for the example specified in the assignment;
or does not follow the assignment specifications (e.g. you submit an
iterative program for an assignment that specifies a recursive program.)
 Running correctly on the grader's test examples: 25%.
 Wellstructured, wellwritten, commented code: 15%.
Individual assignments may specify further, or different, grading criteria.
Honors
Students taking the course for honors will be required to complete
additional problems on the homeworks and more
challenging forms of the programming assignments.
Java Notes
Additional help with Java, by Fred Swartz. Azam recommends this site.
Class email list
Link to
the class email web page and follow the instructions there for
subscribing.
Assignments

Homework 1 due Sept. 13. Associated files:
Rectangle.java ,
LocatedRect.java ,
Person.java ,
Sexes.java , and
Hwk1Ex3.java .
Solution Set 1

Programming Assignment 1 due Sept. 27.
Associated files:
NNAbs.java and
NNInt.java.
Also mentioned is the paper
80 Million Tiny Images by A. Torralba, R. Fergus, and W. Freeman.
(There is no need at all for you to read this; it's just there for general
interest.)

Solutions to programming assignment 1:
NNAbs.java,
NNInt.java,
NNAbsHonors.java,
and
NNIntHonors.java.

Homework 2 due Sept. 20. Associated files:
Definition of Node Class (thanks to Prof. Korth).
For further reading as regard the ``Hailstone number'' discussed in the
honors problem see the Wikipedia article on
Collatz conjecture
("Hailstone number" redirects here.)

Solution Set 2

Homework 3 due Sept. 27.

Solution Set 3

Homework 4 due Oct. 4. Associated files:
CircularArray.java .
GOrderedList.java .
MyHashTable.java .

Solution Set 4

Programming Assignment 2 due Oct. 25.
Example of reading from terminal:
wc.java .
Example of reading from file:
wcFile.java .

Homework 5 due Oct. 25.
 Solution set 5 .

Homework 6 due Nov. 1.
 Solution set 6 .

Programming Assignment 3 due Nov. 15.
 Homework 7 due Nov. 8.
 Solution set is on the class Blackboard site, because one of the problems
is taken out of Weiss.

Programming Assignment 4 due Dec. 6.
 Homework 8 due Nov. 22.
 Solution set 8 .
Midterm exam
The midterm exam will be Thursday, Oct. 13, in class.
Outline of midterm exam
Sample midterm
Solutions to sample midterm
Final exam
The final exam will be given Tuesday, Dec. 20, 2:003:50 in room 102.
Outline of final exam
Objects, References, etc.
Sample questions from the second half of the course.
Solutions to sample questions from the
second half of the course.
Cheating
You may discuss any of the assignments with your classmates (or anyone else)
but all work for all assignments must be
entirely your own. Any sharing or copying of assignments will be
considered cheating. By the rules of the College of Arts and Science,
I am required to report any incidents of cheating to the department.
My policy is that the first incident of cheating will result in the
student getting a grade of F for the course.
The second incident, by CAS rules, will result in a onesemester suspension
from the College.