Moving Past Tutorials: a course on problem solving for programmers

In my experience working with programmers at beginner and intermediate levels, the most difficult part of programming is putting the pieces of the program together and knowing which pieces to actually use. And, most programming courses don’t teach that part. They teach the pieces individually and then expect students to put the pieces together. So, I’m building a multimedia course that will focus entirely on problem solving, how to move past tutorials, and why certain choices should be made when you’re programming.
This course will take the format of a DEV series, so it will be totally free and accessible to anyone. I will be releasing a new post each week so that I have time to get any feedback from the previous week’s post and incorporate it into the next post, as well as balance creating content and the rest of my work.
I’m a strong believer in making content accessible to people with different learning styles, so this course will be very interactive and use different mediums to reinforce the material. Most of the concepts will be written and diagrammed. Then there will be example problems within the concept for you to solve, finally there will be videos explaining how to solve the practice problems after you attempt them yourself.
This course will be mostly language agnostic, though I will be solving my problems in Python since it’s pretty understandable if you know a different programming language. This course won’t teach the fundamentals of programming, though. Before starting, I would learn the fundamentals at least at a basic capacity. The fundamentals needed prior to this course are: variables, lists/arrays, hash tables/dictionaries/objects (whatever they’re called in your programming language of choice), loops, conditionals, and functions. If you’re looking to get started, here’s a list of free resources for learning those.
The topics will include breaking down problems both for coding puzzles and for more realistic business problems, debugging, thinking abstractly, pseudocoding, what to think about when optimizing code, refactoring, approaching problems, edge cases, and what to learn outside of code that will help you code.
I’m really excited to work on this project, and would love your ideas and feedback through out. Feel free to comment below!