Also, FWIW, I completed MIT’s Intro to Programming with Python on edX before I took CS50, and recommend that learners get a decent grasp of programming principles with a higher-level language (spending a week with Scratch doesn’t really count) before diving into C with its pointers, manual memory management, etc.
Honestly, although in a self-paced MOOC format you can probably get away with it, the MIT 6.001 course really isn't the place to learn programming, programming environments, etc. for the first time either. It doesn't ostensibly require programming background, but it's at a far different pace and level than the actual "intro to programming" course I took way back when in college--and I had even had a programming course in high school which was fairly unusual at the time.
ADDED: I'm also not sure what to think about C in an intro course in this day and age. Sure, as a CS major, or even as part of a good programming curriculum, understanding some of what's going on under the covers is important. But that feels like a Level 2-ish topic at this point.
You’re actually right, I had also taken very basic “intro” courses locally before taking the MIT course, and Grimson was the first person to explain Big O to me. Having already done some Python and C++ probably helped get more out of that course, as well.
But some people can’t drop thousands or even hundreds of dollars to have a prof or TA hold their hand as they learn programming essentials. They might have to put in more time on their own to do well in a course like 6.001, but that may be their only option. They could do Udemy courses, but the quality there seems to vary quite a bit (whereas with edX there’s some built-in vetting), and a complete beginner may be overwhelmed by the number of choices.
I really liked 6.001 but I already have a fair bit of programming experience although I don't do it professionally and am not a CS major--so I got a lot out of it. MIT has a doubtless deserved reputation as being a bit of a firehose but even so, I can't imagine showing up on campus (during normal times) and learning the basics of programming including even the basics of using a command line on the side while taking not only 6.001 but an otherwise full course load.
Charles Severance's Intro course from U Michigan is a nice Intro to Python MOOC course that's geared to genuine beginners.
Thanks for recommending the Michigan course! I have mentored/tutored in the past but am currently too busy. If people contact me regarding lessons, I can politely redirect them to that course.