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