Design and Analysis of Algorithms, O,o,ω,Ω,Θ Notations, Lower and Upper Bound Theory, Divide and Conquer Algorithms, Recurrences, Dynamic Programming, Complexity of Sorting and Searching Algorithms, Greedy Algorithms, Greedy Algorithms vs. Dynamic Programming, Elementary Graph Algorithms, NP-Completeness