CS 2321 Data Structures Syllabus

Spring 2016


Instructor:

Ruihong Zhang

Office:

Rekhi 302

Office Hours:

MF 2:00pm-3:00pm Thurs 9:00am - 11:00am

Email:

ruihong at mtu dot edu

______________________

______________________

Teaching Assistant:

Bochao Li

Teaching Assistant's Office Hours:

Wed 2:00pm - 4:00pm in Rekhi 111

Teaching Assistant's Email :

 bochaol at mtu dot edu





Schedule:

Monday, Wednesday, Friday at 11:05 - 11:55 in Minerals & Materials Engr Bldg U113 (R01) and 13:05-13:55 (R02) in Fisher 328

Text:

Data Structures and Algorithms in Java, 6th edition by Goodrich and Tamassia, Willey.

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. Write larger programs that require interacting with a data structure.

Prerequisite:

Expertise in Java (either CS1122 or CS1131). Basic programming techniques and practices will not be taught. Know data structures at the level of arrays, linked lists, iterators, stacks and queues. Introduction to trees and heaps.

Homework:

There will be 8 programming assignments and 5 written homework. 

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 on the CS undergraduate lab machines. 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 grades are handled by the teaching assistant via email correspondence or office visit. Please notify the grader any grading questions within a week after the graded homework is returned.

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. Other reasons for late submissions will be handled on a case-by-case basis. Note that a planned event occurring on the due date of the program does not prevent a student from completing and submitting early.

Resubmit with 10% cut within 4 days after the due date is allowed for assignment 1,3,5,6,A. There is no resubmit for assignment 2, 4 and B.

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

The written homework is directly related to the concept and algorithm covered in lectures. The purpose of written homework is for student to practice the skills of choosing different data structures, describing the algorithm concisely with pseudo code and comparing the performance of different implementations. 

Exams:

There will be 3 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. There are two types of homework assignments: paper pencil assignment and programming assignment. Paper pencil assignments are equal weight and worth 10% of your grade. Programming assignments are equal weight and worth 50% of your grade. The exams are worth 40% of the grade, 20% for the first two in-class exam (each is 10%) and 20% for the final exam. 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 guaranteed to be curved.

  • Paper pencil assignments: 10%
  • Programming assignments: 50%
  • Two in class exams: 20%
  • Final exam: 20%

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 cs2321-sp16-l@mtu.edu. 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. 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. In class discussions will occur frequently. Your behavior in class should not interfere with other students' ability to learn.

Disabilities:

Please let me know if you have a disability that requires special arrangements.