Fall 2009 CS 2321 Data Structures

Instructor:

Bill Siever

Chris Brown

Section:

R01: 12:05-12:55

R02: 1:05-1:55

Office:

211 Rekhi

106 Rekhi

Email:

bsiever at mtu dot edu

cdbrown at mtu dot edu



Schedule: Monday, Wednesday, Friday at 12:05 - 12:55 (R01) and 13:05-13:55 (R02)
Text: Data Structures and Algorithms in Java, 4th edition by Goodrich and Tamassia, Willey, ISBN 0-471-46983-1. The 4th edition is preferred, but the second and third editions will work.
Goals: Proficiency in data structures (including containers, trees, heaps, priority queues, hash tables and graphs) and algorithms for manipulating data (including sorts and tree traversals). Develop the ability to implement those data structures and analytic understanding of the time and space trade offs of different data structures and different implementations.
Prerequisite: Expertise in Java (either CS1122 or CS1131). Basic programming techniques and practices will not be taught.
Homework: There will be 10 homework assignments.

Programming assignments are to be done individually. Programs are graded on: A) completeness and correctness of implementation, B) correct documentation and analysis of algorithm complexity, and C) programming style.

  • Output:
    • Programs are expected to compile and run correctly. Submitted programs that do not compile receive no credit.
    • Data Structures will be tested on a variety of test cases and penalized for any failures (in proportion to the nature and cause of the failures).
  • Style & Comments:
    • Source code should conform to the example provided in the first homework as closely as possible. This includes appropriate use of comment blocks, JavaDoc usage, reasonable use of indentation, adequate commenting, and clear use of the TCJ and SCJ style comments justifying each algorithm's time and space complexity.
    • The header and comments in the program should justify your grade. They should clearly describe what your code is doing and how it works (the comments should clearly explain how your code works and convince the grader that you understand what you are doing). The grader is not responsible for “figuring out” your implementation. Incorrect comments describing implementation or complexity will be penalized in the assignment because they indicate a poor understanding.
  • Implementation:
    • You are to implement your own data structures, so you should not import java.util.*. Any assignments that allow the use of interfaces from java.util will explicitly relax the restriction.
    • Frequently the programming assignment grade is based on the complexity of the implementation.

You may not discuss the programs among yourselves. I encourage discussing the programs in class. Start work early on the programs so that in-class discussions are meaningful to you. For some programming assignments I may give you code to use, otherwise submission of program states that the work is your own. You may use any code in the assigned text or my examples.

All questions and concerns about the programming assignments and lab grades are handled by the grader via email correspondence, cs2321gr@mtu.edu. Please do not request a personal interview with the grader and allow at least one week for the grader to respond to your request.

Programs are to be submitted before the due date. NO EXTENSIONS WILL BE GIVEN, except for an excused absence (as defined in the Student Handbook) that prevents the student from submitting the assignments early. Note that a planned event occurring on the due date of the program does not prevent a student from completing and submitting early.

Complete requirements on writing, testing, and submitting programs can be found at Programming and Submitting.

Exams: There will be three exams covering data structure topics that may not be covered in the homework assignments (like appropriate choice of data structures, their time and space cost, etc.). I am responsible for grading exams, so please contact me directly with any concerns.
Course Grading: The course grade consists of two parts; homework assignments and exams. You must pass both parts to pass the course. Assignments are equal weight and worth 60% of your grade. The exams are each worth is worth 13.3% of the grade. Note that “borderline” grades such as AB and BC are not of equal intervals to standard grades, I determine those on an individual basis. Neither assignments nor exams are curved.
Code Sharing You may not:
  • Use code written by some one else, except code form the current course text book or web site
  • Discuss programming issues by writing or showing code to fellow students
  • Use downloaded code from any web site (except this course’s current web site)
  • Post your code on the web
You may:
  • Discuss the programming assignment without reference to code
  • Consult a learning center coach or instructor
  • Post questions to the course email list (if code is necessary, limit to 3 reasonable lines of code).
  • Discuss and ask about coding problems in class
E-mail List: All enrolled students are automatically members of a class mailing list. So that all students can benefit from your questions, request for assistance on the programming assignments should be mailed to the list; please do not email instructors directly except for confidential requests, or to set up an appointment. I expect that other students can and will answer your questions. I monitor the emails on the list, and from time to time will participate in the answer. You should not share extensive java code, but this course is not about java syntax, so short java code snipits (one to three lines long) maybe used to answer and ask about java syntax. If I believe that the java code mailed to the list is too extensive, I will advise the list and there will be no further penalty unless there is repeated offense or the offense is obviously gross. You may share sample input and output files including descriptions of your program results. Naturally use of the list is limited to course material and only professional language and attitudes should be used. Improper use of the list and/or language can be grounds for misconduct. Please see MTU computer use policy.
Lecture Participation: You are responsible for all material presented in class, which includes material that may not appear in web notes or the textbook, and verbal changes in assignments. My teaching style is frequently Socratic which encourages discussions, but proper behavior is expected from all students. Your behavior in class should not interfere with other students' ability to learn. If I determine that your behavior is disruptive during class, I maintain the right to deduct up to 2 percentage points from your final grade for each offense, without requiring notification. Students repeatedly disrupting the class will be dismissed from lectures and a report may be filed with the university.
Disabilities: Please let me know if you have a disability that requires special arrangements.