CSCI 362
Data Structures
Coordinator: Gary Zoppetti
Credits: 4.0
Description
Abstract data types, objects, algorithm design and analysis, trees, graphs, sorting and searching. Emphasis on ADT-based and object-oriented design, incremental development and testing, and comparison of data structure implementations. Offered in fall, spring.
Prerequisites
C- or higher in CSCI 140 and CSCI 162
Sample Textbooks
Course Outcomes
At the end of this course, a successful student will be able to
- implement elementary data structures such as linked lists, stacks, queues, and binary trees;
- apply a variety of more advanced data structures, such as hash tables, balanced search trees, and graphs, to solve problems;
- perform simple algorithm complexity analyses;
- formulate divide-and-conquer algorithms using recursion; and
- describe the importance and key points of a code of ethics.
Major Topics Covered
- Review
- Abstract data types
- Pointers and memory management
- Lists
- Stacks
- Queues
- Binary Trees
- Library support for data structures
- Extending basic data structures
- Variations on linked lists
- Header nodes
- Doubly linked lists
- Circular lists
- Priority queues
- N-ary trees
- Heaps
- Variations on linked lists
- Algorithm Design
- Recursive algorithms
- Divide and conquer algorithms
- Greedy algorithms
- Algorithm Complexity
- Complexity model
- Analyzing complexity
- Profiling program execution
- Trees
- Implementations
- Traversals
- Balanced trees (e.g. AVL, Red-Black, 2-3-4)
- Applications
- Associative data structures
- Sets
- Maps
- Hash Tables
- Applications
- Graphs
- Implementations
- Traversals: depth-first, breadth-first
- Path algorithms
- Applications (e.g. topological sort, minimum spanning tree, shortest path)
- Sorting
- Insertion sort
- Selection sort
- Quick sort
- Merge sort
- Heap sort
- Searching
- Linear search
- Binary search
- ACM code of ethics
Sample Laboratory Projects
- Write a short program that uses a Stack ADT to reverse an input string.
- Using a Binary Search Tree, write a program to build an index to a block of English text. Print the index and the resulting tree.
- Develop your own Binary Search Tree ADT. Link it to the program developed in Lab #2.
- Using a backtracking algorithm, develop a recursive solution to the Eight-Queens problem.
- Use the AVL algorithm to develop height-balanced trees. Use this ADT in place of the Binary Search Tree ADT of Lab #3. Compare the resulting binary tree using AVL balancing versus that obtained in Lab #3.
- Use hash tables with separate chaining to implement a spell checker. Compare the performance with using a balanced search tree.
- Implement a graph ADT.