Abstract data types
Complexity analysis
Big O notation
Stacks (linked lists and array implementations)
Recursion and analyzing recursive algorithms
Divide and conquer algorithms
Sorting algorithms (selection, insertion, merge, quick, bubble, heap, shell, radix, bucket)
Queue
Dequeuer
Priority queues (linked and array implementations of queues)
Linked list & its various types
Sorted linked list
Searching an unsorted array
Binary search for sorted arrays
Hashing and indexing
Open addressing and chaining
Trees and tree traversals
Binary search trees
Heaps
M-way tress
Balanced trees
Graphs
Breadth-first and depth-first traversal
Topological order
Shortest path
Adjacency matrix and adjacency list implementations
Memory management and garbage collection