I share your enthusiasm for the Nand2Tetris courses.
. It covers the basics of Python, but not the object orientation features (which are covered in a later course in the series). You can audit this course for free but getting your problem solutions graded is not. Sadly, this is the direction of most MOOCs these days.
If I were beginning to learn programming all over again, though, I'd learn C first. In fact, back in 1988, this was the first language with which I actually became somewhat proficient. C was originally devised to create an operating system (Unix), so it's consequently pretty low-level (for a high-level language
) and forces you to understand how computer main memory operates at the "address" level.
If you're looking for probably the best MOOC for an introduction to programming, and computer science in general, I'd recommend David Malan's (Harvard) CS50x's Introduction to Computer Science
, also available for audit on edX. The current version of this course introduces programming progressively in Scratch (a lot of fun), then C, and finally Python. It's been around since the beginning of the edX platform and has steadily improved with each new (now yearly) version. The course delivers the same material that is contained in the on-campus CS50 course offered for non-CS beginning students at Harvard. In fact, in the original version, video lectures were recorded in the actual CS50 class. Current production values are very high, and David Malan is an extremely gifted lecturer. If you want to know what's expected of a freshman student at Harvard, you can find out by taking this course. HarvardX also offers a number of other CS50 variants, including one called CS50's Introduction to Programming with Python
, also taught by Malan and also recommended.
I wish you continued success with your Nand2Tetris adventure.