Algorithms course of Princeton.
Theory and Pactice.