Fundamentals of mathematics; Programming and languages; Data structures; String-searching algorithms; Recursion; Sorting algorithms; Graph algorithms; Algorithm design and analysis: brute force, greedy, divide and conquer, dynamic programming, backtracking, amortized analysis, approximation, randomized; and Selected topics.