Algorithms, Part I - Princeton Un. and Coursera

This course covers the essential information that every serious
programmer needs to know about algorithms and data structures, with
emphasis on applications and scientific performance analysis of Java
implementations. Part I covers basic iterable data types, sorting, and
searching algorithms.