I wanted to share a great talk about teaching computational thinking by Brown Univ. professor Shriram Krishnamurthi.
https://www.youtube.com/watch?v=rM_E2IwlprY▾
Also excited to see @Max Kreminski here. Your post on problem-solution ordering (https://mkremins.github.io/blog/doors-headaches-intellectual-need/) has strongly influenced how I think about learning and teaching programming. In this talk Prof. Krishnamurthi adds an insight about inductive learning where you go from concrete instances to a generalized understanding (problem-solution ordering) - it is difficult to transfer a concept thus learned to other instances of the same underlying problem. So while inductive learning is essential to understand a problem in the first place, students also need to examine the problem purely in abstract so that they are able to transfer it to any other instance.