The document discusses the divide-and-conquer algorithm design paradigm and several examples that use this paradigm. It begins by outlining the three main steps of divide-and-conquer: 1) divide the problem into subproblems, 2) conquer the subproblems recursively, and 3) combine the subproblem solutions. It then provides examples that use divide-and-conquer, including merge sort, binary search, powering a number, computing Fibonacci numbers, and matrix multiplication. For each example, it describes how the problem is divided and conquered recursively and analyzes the running time.