Udacity. Peter Norvig.
CS212 - Design of Computer Programs Improve your programming skills with new patterns and techniques.
The key to progressing from a novice programmer to an expert is mindful practice. In this class you will practice going from a problem description to a solution, using a series of assignments. With each problem you will learn new concepts, patterns, and methods that will expand your ability and help move you along the path from novice towards expertise.

