CS 501
Foundations of Computer Science: Course outline
Catalog data Software design for structuring and
manipulating data. Topics include tree structures, graphs, data abstraction and
external sorting.
Prerequisites CS 152 or CS 500.
Textbook Robert Lafore
"Data Structures & Algorithms in JAVA", Waite Group Press, CA.
Instructor: Fatemeh Abdollahzadeh, Ph.D., Professor of Computer Science.
Office MS303. Phone (860) 832-2714. E-mail abdollah@ccsu.edu
Office hours MW 4:45 to 5:10 and
6:30 to 8:05pm and TR 8:00 to 8:30 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.
Introduction to data
structures. Linear data
structures:
stacks, queues, linked lists and
sequences
(operations, implementations,
applications.)
Non-linear data structures: binary trees
and
general trees (operations,
implementations and
applications). Binary search trees.
Priority queues and heaps: using a heap to
implement
a priority queue.
Heap sort.
Dictionaries, AVL trees, and hash tables.
Balanced search trees: (2,4) and red-black trees.
Sets, selection, and sorting: merge and
quick sorts.
Caches and disks: external searching and
sorting.
Non-linear data structures: graphs
(representations,
implementations).
Path algorithms: depth-first and
breadth-first
search, transitive closure, topological
ordering).
Non-linear data structures: weighted
graphs. Minimum
spanning tree
algorithms. Shortest path algorithms.
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 team of 3
students may choose a
topic in graph theory. It is expected that the student will study 2 – 6
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. Every team will present their research project in class in a 10-15
minute talk. The project must also be
submitted in an appropriate form (10-15 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 and project 40 points
Tests 15 points
each
Final exam 30 points
1.
Write a class implementing a simplified graph ADT that has only methods
relevant to undirected graphs and does not include update methods, using the
adjacency matrix structure. Your class should include a constructor method that
take two containers (for example, sequence)--a container V of vertex elements
and a container E of pairs of vertex elements-- and produces the graph G that
these two containers represent.
2.
Implement the simplified graph ADT described in project 1, using the adjacency
list structure. .