Computer Science W3134:
Data Structures in Java
Fall 2008
[Announcements] [General Information]
[Course Requirements] [Policies] [Syllabus and Homework]

Announcements
  • Welcome to Data Structures! Keep an eye on this space for late-breaking news about the class.
[Top]

General Information

Description

Data types and structures: arrays, stacks, singly and doubly linked lists, queues, trees, sets, and graphs. Programming techniques for processing such structures: sorting and searching, hashing, garbage collection. Storage management. Rudiments of the analysis of algorithms. Taught in Java. (Not intended for Computer Science majors.)
(Courtesy CS Bulletin)

Instructor: David Elson

  • dke4 at columbia
  • 212-939-7155
  • Office Hours: Mondays 11-1, 702 CEPSR/Schapiro, or by appointment. (When there are many students, we will move to the lab nearby, 7LE5 CEPSR).

TA #1: Thomas Berg

  • tb2324 at columbia
  • Office hours: Fridays 2-4, TA Room

TA #2: Vivian Wang

  • vw2144 at columbia
  • Office hours: Wednesdays 5-7, TA Room

TA #3: Vamsi Narla

  • vn2156 at columbia
  • Office hours: Tuesdays 10-12, TA Room

TA #4: Nipun Arora

  • na2271 at columbia
  • Office hours: Thursdays 10-12, TA Room

Lectures

  • Tuesday/Thursday 5:40-6:55, 833 Mudd

Prerequisites

  • COMS W1004/1007 or knowledge of Java programming, including familiarity with a development environment such as Eclipse, NetBeans or just plain Emacs (the IDE of champions).

Important Web Pages

[Top]

Course Requirements

Grade Breakdown

  • 50% Homework (5 assignments, each with theory and programming components)
  • 20% Midterm (closed book)
  • 30% Final (closed book)
There's no grade component for class participation, but you're strongly encouraged to attend and participate. It's never a bad idea to become acquainted with the instructor and TAs.

More formally, you're invited to write one or two questions about the lecture on a sheet of paper and give it to the instructor after class. We'll keep these sheets, and they will count positively toward your grade in case you are on the edge. Be sure to write your name if you want the credit (though anonymous feedback is also valuable).

Required Textbook

  • Data Structures and Algorithm Analysis in Java, 4th Edition, by Michael T. Goodrich and Roberto Tamassia (ISBN 0471738840).
  • Available at Amazon, CU Bookstore, etc.
[Top]

Policies

Homework Style Policy

There are 5 assignments. Each has a theory component and a programming component.

The programming component must be written in Java alone, and it must compile on a standard Cunix (CUIT) account, under Java 1.6. Programming submissions that do not compile get a zero. (On the other hand, partial credit will be given if a program compiles but is incomplete.) Code must be well documented with comments; not only is it an essential habit to get into, but in case the TAs need to track down a problem, it's going to keep you on their good side. Use descriptive variable names, and make sure indentation is correct (Eclipse has a "format source" command to fix all indentation).

The output format of your programs should match the sample output format given for each respective assignment. Points will be deducted for serous deviations from the output format.

Each programming submission must include a README file with the following information: (a) The student's name and email, (b) the assignment number, (c) a general description of the program, (d) a complete listing of each file and its purpose, (e) usage instructions (i.e., how to compile and run the program), (f) and additional comments as needed.

The name of the main "driver" class, and the usage in which it can be run from the command line, should not deviate from the description given in the homework assignment. In other words, the TAs should be able to run your program using the exact same command as in the sample output. Do type and range checking on the arguments.

Use multiple classes as needed. Any idea or concept that has associated data that differs from instance to instance should be modeled as its own class. Class structure will typically be suggested by the assignment. Do not do everything in the main() function of your driver class. Instead, move to the constructor or to other functions.

Homework Submission Policy

To submit your homework, follow these steps:
  1. Put all your homework files (source code, README, input text files as needed) in a directory. Nothing else should be in the directory. Be sure to cd into the directory.
  2. Type ~cs3134/submit. The submit script will confirm what files you would like to submit.
  3. Once you submit, you should receive a mail message with a list of files submitted. Keep this message as a submission receipt.

Homework Timing and Lateness Policy

The theory component of each homework is due at the beginning of class on the due date, in 833 Mudd. The programming component is due at 12:01 AM on the due date, that is, well before the beginning of class.

Each student is given 5 late days at the beginning of the semester. These late days may be used for any homework assignment. When one late day is applied to a homework, both theory and programming components are due at 5:40 the day after the due date (24 hours after the beginning of lecture), with no score penalty. If a second or third late day is applied to an assignment, the assignment is still due at 5:40 PM on the appropriate day. For days where there is no class, take the theory portion to the instructor's office (702 CEPSR) and slide it under the door.

Every weekday is counted in the late day policy. Weekends and University holidays are automatically given. For example, if an assignment is due on Thursday, you can turn it in on Friday at 5:40 with one late day, or Monday at 5:40 with two late days. Late days cannot be prorated -- if a programming or theory component is turned in only a few hours late, it still counts as a late day. Once the three late days are expired, late homework receives a score penalty of 10% for each day late. This, too, is rounded up to the nearest day. Extra credit, if any, is also penalized accordingly.

The lateness policy is not broken down across programming and theory components; if one is on time but one is late, the entire assignment is considered late. The number of late days given for an assignment is thus the maximum of theory and programming late days.

The late days are not designed to be "procrastination days" but, rather, extensions available in the case of conflicts such as family obligations, extracurricular conflicts, and illnesses. Students should take care to not spend them frivolously. Special circumstances should be discussed with the instructor as soon as possible.

Extra credit may come up periodically and will be awarded to your score outside the curve.

Homework Grievance Policy

If you believe that a TA has given you an unfair grade on an assignment, your first step is to contact the TA and present your case. If you and the TA are unable to come to an agreement about a grading issue, present your case to the instructor in writing. (Writing does not include e-mail.) Mention all the circumstances surrounding the issue and why you believe the grade should be adjusted.

Academic Honesty Policy

This is an important course in your CS education, and it will introduce you to both practical tools and ways of thinking that you will use often in the field. If you need help, feel free to make full use of lectures, office hours, and the Web board. However, both programming and theory assignments are for individual work only, not for pairs or groups, and your grade should reflect your own work only. It's acceptable to discuss homework questions with fellow students at a high level, but it is not acceptable to copy another student's answers, collaborate on writing specific answers or programs, or turn in multiple copies of work as though done individually.

Copying or paraphrasing homework in part or in whole, whether theory or code, or allowing your own work to be copied or paraphrased, in part or in whole, is not allowed, and all parties involved will receive a zero for the entire assignment (both theory and programming). Posting homework answers, or significant portions of answers, on the Web board is also not allowed. Copying or paraphrasing during the midterm or exam will result in a zero for the test and referral to the Dean's office.

Repeated infractions may incur additional penalties. (If you haven't already, please read the Department policy on academic honesty, which applies to this course.)

Open Door Policy

Feel free to make use of our office hours, both the instructor and the TAs. Content-related questions and comments or suggestions about the course itself are both welcome.


[Top]

Syllabus

Date Topics Readings Notes & Handouts Assignments
Tuesday, 9/2 Class Intro; Java Review I Goodrich & Tamassia: Chapter 1 An Introduction to CUNIX
Another Introduction to CUNIX, by Chris Murphy (PDF)
HW 0 out
Thursday, 9/4 Java Review II G&T: Chapter 2 Car example
Java FAQ
Prof. Hershkop's Java slides: 1, 2, 3
HW0 due
HW1 out
Tuesday, 9/9 Java Review III, Running Times G&T: Chapter 4, Chapter 3.1 (pp. 96-114)
Additional Big-Oh reading
Notes
Eclipse demo code we wrote in class
Thursday, 9/11 Running Times II; Iteration G&T: Chapter 3.5 (pp. 134-148) Notes
Tuesday, 9/16 Recursion Notes
Lightning round
Thursday, 9/18 Linked Lists I G&T: Chapter 3.2-3.4 (pp. 115-133) Notes
DNA Sequence example
HW1 due
HW2 out
Tuesday, 9/23 Linked Lists II Notes
Our class LL implementation
Thursday, 9/25 Doubly Linked Lists, Stacks & Queues G&T: Chapter 5.1 (pp. 188-203) Notes
Tuesday, 9/30 Stacks & Queues II Notes
Thursday, 10/2 Stacks & Queues III, Trees I Notes HW2 due
HW3 out
Tuesday, 10/7 Trees II G&T Chapter 7 until template patterns (pp. 266-302) Notes
Thursday, 10/9 Trees III (BSTs) G&T pp. 418-439 Notes
Tuesday, 10/14 AVL trees G&T pp. 334-355 Notes
Thursday, 10/16 Priority queues (heaps), Sorting I G&T: pp. 103-106 (again); pp. 332-333 Notes HW3 due
Tuesday, 10/21 Catch-up, Midterm Review Shell sort reading Notes
Thursday, 10/23 Midterm
Tuesday, 10/28 Sorting II (Shell, merge) G&T pp. 488-500 Notes
Thursday, 10/30 Sorting III (quick) G&T pp. 501-512 Notes HW4 out
Tuesday, 11/4 No Lecture: Election Day
Thursday, 11/6 Sorting IV, Hash tables I G&T pp. 513-514, 368-378 Notes
Histogram example
Tuesday, 11/11 Hash tables II G&T pp. 379-388 Notes
Thursday, 11/13 Hash tables III Notes HW4 due
HW5 out
Tuesday, 11/18 Graphs I G&T pp. 580-592 Notes
Thursday, 11/20 Graphs II G&T pp. 593-618 Notes
Tuesday, 11/25 Graphs III G&T pp. 618-638 Notes
Thursday, 11/27 No Lecture: Thanksgiving
Tuesday, 12/2 Greedy Algorithms, NP Completeness Greedy/NP reading Notes
Thursday, 12/4 NP Completeness II, Preview of AI, Final Review Notes HW5 due
Thursday, 12/18
4:10-7pm
Final Exam




[3134 Main Page]


dke4 [who is at] columbia [dot] edu