Sure for mathematical problem solving skills, here is a good one: http://people.csail.mit.edu/moitra/854.html.
It requires minimal mathematical background (undergraduate level discrete math). But you will learn a bunch of relevant algorithmic concepts. And the problem sets are hard!