CS 253 Data Structures

Fall Semester, 2007

 

Instructor: Fatemeh Abdollahzadeh, Ph.D., Professor of Computer Science.

 

            Text:  Tomassio and Goodrich, Data Structures and Algorithms in Java.

 

            Office            MS303
            Phone             (860) 832-2714.
            E-mail            abdollah@ccsu.edu
            

            Office hours             TR         13:45- 15 Pm, WM  3:00- 3:30 and 4:45- 6:00 Pm

 

 

Course Objectives:  Having completed this course successfully, the student 

should:

   - Be familiar with the use of data structures as the foundational

     base for computer solutions to problems.

   - Become introduced to and investigate the differing logical relationships

     among various data items.

   - Understand the generic principles of computer programming as applied to

     sophisticated data structures. 

   - Comprehend alternative implementations using the differing logical

     relationships and appreciate the significance of choosing a particular

     logical relationship for implementation within real-world setting.

   - Demonstrate the ability to plan, design, execute and document

     sophisticated technical programs to handle various sorts of data

     structures. 

 

Topics in the course and number of lecture hours each:

 

     Introduction to algorithm analysis: pseudo code,

     algorithm efficiency (examples: sorting and searching

     problems), asymptotic and empirical analysis of

     algorithms.                                            3.0 hours

 

     Introduction to data structures. Linear data

     structures: stacks, queues, linked lists and

     sequences (operations, implementations,

     applications.)                                         6.0 hours

 

     Non-linear data structures: binary trees and

     general trees (operations, implementations and

     applications). Binary search trees.                    3.0 hours

 

     Priority queues and heaps: using a heap to implement

     a priority queue. Heap sort.                           3.0 hours

 

     Dictionaries, AVL trees, and hash tables.              3.0 hours

 

     Balanced search trees: (2,4) and red-black trees.      3.0 hours 

 

     Sets, selection, and sorting: merge and quick sorts.   4.5 hours

 

     Caches and disks: external searching and sorting.      1.5 hours

 

     Non-linear data structures: graphs (representations,

     implementations). Path algorithms: depth-first and

     breadth-first search, transitive closure, topological

     ordering).                                             4.5 hours

 

     Non-linear data structures: weighted graphs. Minimum

     spanning tree algorithms. Shortest path algorithms.    3.0 hours

 

     Strings. Pattern matching algorithms (brute-force,

     the KMP algorithm, the Boyer-Moore algorithm).

     Regular expression pattern matching.                   4.5 hours

 

     Tests.                                                 3.0 hours

 

     Student presentations.                                 3.0 hours

 

Programming assignments.  There will be at least 4 programming assignments and a

research project, which every student must perform individually. There will be a penalty for late submissions, but all assignments must be completed for a student to have a passing grade in the class.

 

Project.  For the research project, a student may choose any topic of interest for her/him for among those covered in the course. It is highly recommended to discuss the suitability of the topic with the instructor beforehand. It is expected that the student will study 2 - 4 references on the topic, develop an implementation of an algorithm(s) involved in a selected application context, and write a research paper summarizing the results. Everybody will present her/his research project in class in a 10 minute talk.  The project must also be submitted in an appropriate form (6 - 8 pages project description, and a program listing) for evaluation.

 

Tests.  There will be two tests during the semester and a final exam.

Grades

         Programming assignments                 5 points each

         Project                                15 points

         Tests                                  15 points each

         Final exam                          35  points

 

   Total points       Final grade

   ----------------       ----------------

    94 - 100                A

    90 - 93.99             A-

    87 - 89.99             B+

    84 - 86.99             B

    80 - 83.99             B-

    77 - 79.99             C+

    74 - 76.99             C

    70 - 73.99             C-

    67 - 69.99             D+

    64 - 66.99             D

    60 - 63.99             D-

    below 60               F