Coursera "Introduction to Systematic Program Design - Part 1" looks good.
https://class.coursera.org/programdesign-001/lecture/indexIt uses
http://www.programbydesign.org/ .
I feel that this is a much needed course - to complement basic memorization of a programming language rules (which is absolutely not sufficient for learning programming).
I'll look more into it, but I am posting now because the course (8 weeks) has already started (2 weeks ago).
There is an option to take this officially (with certificate upon successful completion) - $39.
ETA
The course uses Racket programming language (Lisp family) - a simple language specifically designed for learning programming.
Racket is a 'functional' language, as opposed to 'imperative' (or 'procedural') language. The most widely currently used languages (C++,...) are 'procedural'. It is good to be exposed to 'functional programming' too.
https://en.wikipedia.org/wiki/Functional_programming .