CS50x, which is available through the EdX platform, is a self-paced MOOC based on Harvard University’s successful introduction to computer science and programming. The course consists of videos of the lectures given at Harvard, supplementary tutorial videos on specific topics, and problem sets.
The course is marked based on achievement in problem sets and the submission of a final project. It’s run annually, with a new version of the course made available at the start of each year. You can progress through the course at your own pace, as long as you complete all the problem sets and submit a final project by the end of the year.
Unless you really do have a lot of spare time, I would suggest allowing at least 15 weeks to complete the course – 12 weeks to complete the course material and an extra three weeks for your final project. So, if you are planning on starting the course any later than the beginning of September, it is probably best to wait and start the course at the beginning of the following year.
The problem sets begin using the C language, but later include problems requiring HTML and PHP. One of the nice things about the way these are set up is that you install a virtual machine running the programming environment in Linux. This means everybody on the course gets the same experience, regardless of the hardware they are using.
Problem sets come in two flavours – the basic problem set (which is the one that is graded), and an advanced version (which is optional). The advanced versions are fun to try, but they do not contribute to your final grade, despite requiring a significant additional time commitment. For that reason, I would suggest working through all the basic versions and your final project first and then going back and tackling the advanced problem sets.
One of the most appealing things about CS50x is that, although it’s a rigorous course, the teaching style is a lot less dry than similar offerings from other educational institutes. Lecturer David Malan and his team do a fantastic job of introducing the course material in a fun and engaging way.
This is a course you could quite happily take on without any prior programming experience, provided you are prepared to put the hours in. I can’t recommend it enough.