The document discusses divide-and-conquer algorithms. It describes divide-and-conquer as a design strategy that involves dividing a problem into smaller subproblems, solving the subproblems recursively, and combining the solutions to solve the original problem. Examples of divide-and-conquer algorithms covered include mergesort, quicksort, binary tree traversals, and integer multiplication. Asymptotic analysis using recurrences and the master theorem is applied to determine the time complexity of various divide-and-conquer algorithms.