The design and analysis of efficient algorithms for important computational problems. Paradigms for algorithm design including Divide and Conquer, Greedy Algorithms, Dynamic Programming; and, the use ...