Recently I completed “Algorithms: Design and Analysis, Part 2” course at Coursera. It was offered by Professor Tim Roughgarden of Stanford University and was incredible, extremely informative and the professor was just too good.
The course covered greedy algorithms, including applications to minimum spanning trees and Huffman codes; dynamic programming, including applications to sequence alignment and shortest-path problems; and exact and approximate algorithms for NP-complete problems.
It had weekly quizzes and programming assignments, which reciprocated the lecture content, tested understanding of the material and required some creativity and ingenuity on the student’s part. I would highly recommend this course to all CS people.