Design of Computer Programs A free course taught by Peter Norvig programming courses peter norvig 3 years ago