Thanks Meta for a very comprehensive course.Not only are fundamental computer science topics taught, but the job-ready skills needed for Python by covering it in breadth, but also depth.
This course is very close to being excellent in many respects, but it has some very serious issues that make it a frustrating experience. The production quality is very good and the course includes some material that most Python courses completely overlook. In particular, I am very impressed that the course dedicates a week to talking about different programming paradigms.
Here are the issues. The single greatest problem I have is the speed at which very technical and complex aspects of Python get introduced. You'll have a 3-4 minute video that gives one or two quickly glossed over examples of something without any serious explanation and then the video will conclude with "and now you know how X works." If any of this is even remotely new to you, you'll have points where the course glosses over crucial information without providing you serious explanations about how and why something is done a certain way. You won't progress easily by just rewatching the videos over and over because they don't tell you very much. It's also a serious flaw of the course that really important information just gets dumped into the readings for the course when a lot of that material deserves to be in video form. When you get stuck, the suggestion is to just go and read more elsewhere, but there's a point at which this gets ridiculous--the course itself should be suffient to learn the material.
Second, I think the programming exercises are overcomplicated and needlessly so. I never felt prepared for what I was tackling in these exercises because they often involved doing things that were more complicated than any of the examples given in any of the videos. There's a difficulty gap here, and I think it's a serious flaw of the course. The exercises are also pretty long, and usually involve writing lots of functions based on pseudocode directions that are ambiguous enough that you may very well misinterpret what is expected of you, do a bunch of unnecessary work, and then have to redo it all once you realize that you mistook what the intended problem was. This is so frustrating. It feels like you lose a lot of time and it doesn't really help you learn anything.
Third, when you get stuck because you can't figure out how to do something that wasn't explained very clearly, you'll inevitably turn to the forum. But the forum for every exercise is filled with people posting the answers. Most of these posts have been up for weeks or months, and nobody maintaining the course seems to care. Once you've seen any of these posts (which are unavoidable), it feels like the challenge of the exercise is wasted and it's no longer a serious learning opportunity. I'm personally pretty torn by this. If you aren't prepared to do the exercise because the material wasn't sufficient for you to understand what you are doing, it seems like it's the course designer's fault that you are stuck and you can't get any meaningful feedback. It sort of pushes people to just go looking for the answers to the exercises to figure out why they are stuck. It may still be a valuable learning experience if the learner really tries to understand and does adequate research, but the easy path of just copying and pasting things from the course forum will probably undermine the effectiveness of the exercises for most people. When was the last time anyone you knew in school learned anything in a class when they had access to the answer key the whole time? Again, the exercises can be designed better so that people aren't steered into the direction of just looking for the answers.
Finally, I think there are noticeable errors in the videos. The forums are filled with people pointing them out. One noticeable one was the palindrome example in the video. The code in the video doesn't actually check if the word is a palindrome because it doesn't iterate through the whole string. It simply just checks the first and last characters. The problem is that it is presented as if it is a solution to a problem and it's just not. This kind of stuff is really annoying to anyone who has programmed before, but it's seriously confusing to new programmers and people will waste tons of time trying to figure out what is going on.
You can make this course a lot better. Fix the mistakes and provide more video content with worked out examples. You can even make it optional content. Doing this would very much fill in the gap between the videos and the exercises.
