Coursera course "Algorithms, Part I" by Princeton University