Self-directed study from "Introduction to Algorithms" by Cormen, Leiserson, Rivest, and Stein