Algorithms and Data Structures

Course Description

Algorithms and data structures emphasizes the following topics: data structures, abstract data types, recursive algorithms, algorithm analysis, sorting and searching, and problem-solving strategies. Labs alternate weeks.

Course Objectives

Introduce the student to the concept of data structures through abstract data structures including lists, sorted lists, stacks, queues, deques, sets/maps, directed acyclic graphs, and graphs; and implementations including the use of linked lists, arrays, binary search trees, M-way search trees, hash tables, complete trees, and adjacency matrices and lists.
Introduce the student to algorithms design including greedy, divide-and-conquer, random and backtracking algorithms and dynamic programming; and specific algorithms including, for example, resizing arrays, balancing search trees, shortest path, and spanning trees.

Suggested Texts and Readings

Cormen, Leiserson, Rivest, and Stein (CLRS), Introduction to Algorithms, 2nd Ed., MIT Press, 2001.
Mark Allen Weiss, Data Structures and Algorithm Analysis in C++, 3rd Ed., Addison Wesley, 2006.
For a free online reference to C++, consider Bruce Eckel's Thinking in C++ 2nd Ed., Volumes 1 and 2. You will find a link to a download site. Of course, if you like the book, you always have the option of purchasing it. Other online resources are at

Download Power Point Slides

1. Introduction and Review

2. Algorithm Analysis

3. Lists, Stacks, and Queues

4. Trees

5. Priority Queues

6. Hash Tables

7. Sorting Algorithms

8. Disjoint Sets

9. Graph Algorithms

10. Algorithm Design

11. Additional Topics

Concluding Remarks

    No comments: