Introduction to algorithm analysis and O-notation; Fundamental data structures
including lists, stacks, queues, priority queues, hash tables, binary trees,
search trees, balanced trees and graphs; searching and sorting algorithms;
recursive algorithms; basic graph algorithms; introduction to greedy algorithms
and divide and conquer strategy. Several programming assignments.