This document summarizes chapters 21-23 of the book "How to Design Programs". Chapter 21 discusses designing abstractions from examples by abstracting differences and using templates. It also covers abstract list functions. Chapter 22 covers designing abstractions using first-class functions and functions as values. It introduces graphical user interfaces. Chapter 23 applies programming concepts to mathematical examples involving sequences, series, integration and slope.