As you may know, UBC is embarking on a pilot project to offer three MOOC courses next year (MOOCs are free, “massive, open online courses”). These are taught by UBC professors, but not for credit.
One of them is Introduction to Systematic Program Design, intended for people who aren’t experts in computer science.
Description: This course is about learning to program well: building programs that are elegant, well tested and easy to maintain. The course is intended for students with no programming experience, but many former students who already knew how to program have said it made them better programmers. The course structure allows you to choose a programming language to target.