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
Tomassio and Goodrich,
Data Structures and Algorithms in Java
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:20 to 4:30 Pm in Room Ms204 and 5:50 to 7:10 Pm in my office
TR
:
4:00 to 4:25 Pm in my office , 5:45 to 5 :55 Pm in room MS 204 and 7:15 to 7:40 Pm in my office
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