I created a visual course for Python: https://foundationsofpython.co...
It's a series of puzzles and tutorials. By completing the puzzles, you will learn computer science programming theory.
It shows you how the interpreter interprets python code step by step, visually. It starts from the very basics and goes on to explain harder concepts like higher order functions, closures, classes, etc..
It's all free. You won't be asked for an email. You won't be tracked. I do not gain any financial reward from this website.
I've been teaching computer programming for 3 years. My classes used to be project heavy. The advanced learners really loved it, but the beginners didn't have the knowledge they needed to engage with the projects in a meaningful way. Even worse, the more the beginners practised on projects, the more they became attached to their misconceptions and their misconceptions increased. It's hard to convince a student who has built a few projects that their way of thinking is wrong.
I've completely changed my way of teaching since then and I've created thousands of exercises, which I've published on https://wakata.io/ . I now teach the theory and reinforce correct thought patterns through exercise drills. The exercises are varied and challenging. Only when my students have a solid theoretical understanding of the material do I let them build projects. The learning outcomes in my classes have improved substantially.
The only drawback is that sometimes the more advanced students complain that they want to drill less and build more projects. If you want to cater to the smartest students in the class, project heavy instruction might be a good option. If you want to give beginners a fighting chance, do them a favour and let them drill the fundamentals and build their understanding of the subject step by step through guided exercises.
Unfortunately, many ideas such as problem based learning are influential in education even though there is little to no evidence to their efficacy [1] [2].
1. Kirschner, Paul A., John Sweller, and Richard E. Clark. "Why minimal guidance during instruction does not work: An analysis of the failure of constructivist, discovery, problem-based, experiential, and inquiry-based teaching." Educational psychologist 41.2 (2006): 75-86.
2. Reiser, Robert A., and John V. Dempsey, eds. Trends and issues in instructional design and technology. Boston: Pearson, 2012.
"Plan to throw one away. You will anyway." - Fred Brooks, "The Mythical Man Month"