I have dabbled with many resources before in hope of learning to program and learn basics of CS. I have looked at intro course sequences of schools like MIT, CMU, Stanford, etc. Most have partial resources locked down. I have dabbled with books and they felt like shit. Even the book Think Python by Allen Downey was all over the place.
The books and blogs at least taught me basic syntax constructs like variables, function definition, loops, etc. But I couldn't understand how to package them up (compose) to use them in solving problems.
Then I started studying through Berkeley's 3 course intro CS61A, CS61B, CS61C. They have all materials in the open and if you are following the most current iteration of the course, they even post solutions to the problems. It was godsend for me.
Now, I am confident to learn more CS topics using courses from CMU, MIT, Berkeley, Stanford, etc. The thing that was holding me back was the lack of confidence of programming and understanding really what a program was doing.
Here's my take: if you are interested in computer science, the combination of these classes is great. If you are interested in being a software developer or building things quickly to solve problems there are far better resources out there.