A very interesting post by Mark Guzdial of Georgia Tech today on the relationship between computer science and problem solving. I love the line below.
Computer science is about solving practical and impractical problems with the most creative material humans have ever invented.
We often bring up problem solving as a justification for teaching computer science. But really as Mark points out there is more to it than that. Most subjects and professions involve solving problems but computer science lets us look at problems in a new and different way. The rules are different and are in fact more constrained by our own imaginations than by physical laws. It's a bit like philosophy that way.
One of the most amazing programmers I have ever known was an outstanding philosophy student. His professors wanted him to stay in that field because he was just so good at it. I have run into a number of other outstanding programmers who were originally philosophy students. Perhaps in some ways we would be better teaching problem solving and critical thinking through the teaching of philosophy. But I think we would have trouble getting that through as well. And based on my own course work in philosophy I think we'd need to use a different pedagogy to teach philosophy because few seem to be teaching that subject in a way that modern high school students would find it relevant and approachable. And forget about middle school students!
This thinking stuff can be hard. 🙂