The primary topics in this course are: asymptotic ("Big-oh") notation, sorting and searching, divide and conquer (master method, recursion tree method), and randomized algorithms (QuickSort, contraction algorithm for min cuts), data structures (heaps, balanced search trees, hash tables, bloom filters), graph primitives (applications of breadth-first and depth-first search, connectivity, shortest paths), and their applications (ranging from deduplication to social network analysis).