Princeton University Algorithms, Part I