@aparrish I think second is actually pretty much orthogonal to the first, and don't derive from it at all. Learning to break up and model problems abstractly can be learned with not programming at all. And perhaps it should? I learned in parallel, but recalling it, the classes in college where almost always independent. I learned basic programming and languages in some (like intro to programming) and modeling in others (like db, software engineering, algorithm analysis)