Does Learning Computer Science help anything else?

When something I think about a good deal turns up in two or more blogs written by other people my feeling is that this is a sign that I should blog about it. Blogging helps me get my thoughts in order. So when Mark Guzdial writes “Computer Science as a Path to Computer Application Efficacy” which discusses if learning computer science translates to people being better at using computer applications and CSTA Vice President Steve Cooper, writing in the CSTA blog, writes “Program or be Programmed” which talks about making computer science learning relevant and helpful for other subjects I know I have a topic.

My friend David Klappholz tells me that there is a lot of research that shows that various subjects have far less transference than we in education would like to think. For example the theory that learning Latin helps learn English turns out to be pretty much a myth. Learning problems solving in math tends not to transfer to problem solving in other subjects as much as we wish it might. Now Dave is a very smart guy and has done a ton more research than I have ever or will ever do in my life. So perhaps I should assume that there is not much transference between computer science and anything else. But I’m stubborn. And like most people I tend to believe what I want to believe. So here is what I think about learning computer science.

I think it does transfer to learning and using computer software. Now that is a big thing because we all use software more and more. I talked to a former student of mine some time ago. He’s a blacksmith now. Yeah, hammer, hot iron and an anvil sort of work. But he uses CAD software to design a lot of his custom iron work. He told me that he feels that having had some computer science helps him understand new CAD software better. Mark Guzdial’s post (address) contains similar talk from students. Now antidotal evidence is not proof but it is enough to start some working theories.

My first thought was that learning computer science helps understand how computers and computing works and so helps understand the limitations and abilities of software. I think it is a probability. But I wonder if another piece is that learning computer science helps one understand how programmers think. A lot of programmers think differently. From each other and from the rest of society. Some of that is personality and some of that is dealing with the constraints of the hardware and software. Some of it may also be the culture of thinking that CS has developed and which is perpetuated by how we teach computer science. But for what ever reasoning for these thought patterns they shape how software works and so understanding the mindset may help. It’s a theory. Feel free to shoot it full of holes.

On a more mundane but main stream way of thinking I believe that using many applications is easier if one understands computer science concepts. Using a database tool is easier if one understands Boolean searches for example. Even using an internet search engine (I use Bing to do my googling Smile) is better if you know how to use Boolean commands. Using a spreadsheet is better if you have a grasp of conditionals and how computers like to see formulas expressed. There is also a matter of understanding ones results in the context of how literal computers and computer software can be. And probably more as well.

Maybe learning computational thinking for/with computer science doesn’t transfer to more general problems solving. But maybe it does. My gut tells me that if we teach it correctly, not always easy, it will transfer. I think this because computer science is, to me, a lot of understanding thought, learning, and thinking. Not just how we do it or even just how the machine does it but how the two work together. Or don’t as the case may be. I think that computer science expands how we think. And wishful thinking or not I believe that this is something that transfers to other areas. Now go ahead, confuse the issue with facts.

Oh BTW also closely related to this post of mine is Mark Guzdial’s post “Computing Education Research vs Real Education Research