A Course on Programming and Problem Solving
Swapneel Sheth, Christian Murphy, Kenneth Andrew Ross, Dennis E. Shasha · 2016
At its core, Computer Science is the study of algorithmic problem solving. Although it is necessary to teach programming, data structures, computer organization, etc., students should ultimately learn to use these things to solve problems, understand what is good and bad about their solutions, and share their solutions with others.