There Is More To Computing Than Computer Science
Last week Doug Peterson pointed me to an article called “Let’s not call it computer science if we really mean computer programming.” My initial reaction was “Let’s not call it computer programming if we really mean software engineering.” Really the author was talking more about the difference between CS and SE than much else.The ACM has a great Computing Careers web site which lists a number of computing fields and degrees. I recommend this series to teachers and guidance councilors all the time. They list five different degree paths:
- Computer Engineering
Typically involves software and hardware and the development of systems that involve software, hardware, and communications. - Computer Science
Currently the most popular of the computing disciplines; tends to be relatively broad and with an emphasis on the underlying science aspects. - Information Systems
Essentially, this is computing in an organizational context, typically in businesses. - Information Technology
Focuses on computing infrastructure and needs of individual users; tends to involve a study of systems (perhaps just software systems, but perhaps also systems in support of learning, of information dissemination, etc.). - Software Engineering
Focuses on large-scale software systems; employs certain ideas from the world of engineering in building reliable software systems.
For many of us we tend to focus on computer science as if it were the single area. It is the area that most research institutions focus on of course but it’s not everything. I do like the analogy for the article I lead off with that “Computer programming is like writing and performing music, and computer science is like music theory.” Like many analogies you have to be very careful about taking it too far. I think that you’ll find a great many musicians who find that a solid knowledge of theory helps them write and perform music. While there are for sure talented musicians who have not studied theory and there are talented programmers who have not studied computer science I don’t think you can take that as evidence that theory is unnecessary.
I hear things like this “I meet thousands of software developers every year, and the majority are self-taught. I cannot tell the difference by watching them develop software.” taken from the article I referenced all the time. Well I’m sorry the author can’t tell the difference but generally speaking I can. I’m not saying the self-taught are worse, though often they are, or that the CS degreed are always better, sometimes they are not, but they are different. They look at problems differently and they tend to use tools differently. There is value in both but it takes a special sort of person to derive on their own what they could have learned in school. And if you want to be a programmer than study software engineering. Real software engineering is where the self-taught really show up – and not in a good way either!
I think that in high school we are fine talking about computer science and squeezing a tiny bit of software engineering in with our programming, some computer engineering into our discussions, and at least reference IT and IS. The goal in high school is to build interest and expose students to their options. Sure computer science is more theoretical than software engineering and SE is more “practical” by some definitions of practical than CS. That doesn’t make one better than the other though. Sheldon Cooper on TV’s The Big Bang Theory may deride experimental physicists as less serious/important than theoretical physicists but in the real world of education we should avoid such petty comparisons.
As long as we make it clear to students that things open up a bit when they get to college let’s talk about and teach real computer science concepts. They’re going to need these basics no matter which division of computing they eventually wind up in. In fact they will benefit from them even if they go into a completely different field.
Comments
Anonymous
June 04, 2012
Sorry, I have worked with people with degrees up to PHD, and self taught engineers. The self taught ones win hands down almost every time. If they had a degree it was for show or title. The practical application of software engineering has little to do with computer science. Some of the smartest people in computer science I know with PHDs have accomplished literally nothing. Their resumes pale in comparison to my own. Unless I wanted a job teaching out of books. Since this is MSDN I forgive you...no real engineer would even bother with this tripe of a blog.Anonymous
June 05, 2012
The comment has been removedAnonymous
June 05, 2012
Maybe I've just been lucky in working for good companies with good hiring practices. The PhDs I have worked with have been just amazing. At the same time I've seen people who were self taught go to the degreed people for advice time and again because they know they need to know something they would have learned in school. Of course the other problem we are facing in the industry is that there just are not enough people period. Self taught people who make it to professional grade are very rare. Oh sure they are out there and they get a lot of attention but there will never be enough of them. The initial learning curve is, for most people, to steep to go it on ones own unless you are VERY motivated. Few people are when there are easier paths.Anonymous
June 05, 2012
The blog ate my comment! Here's take two: There argument about roads to careers is a red herring. People get to their careers in all sorts of ways, believe me, I think I've met them all: the ones who prove the "rule", the ones who prove that rules are meant to be broken, and ones who turn the rules on their heads and take them for a dance around the park. The question however, should be what we teach in K-12 schools. And not just to the few seniors who are already heading that way. I'm talking about making mastery over the computer a required part of all education starting in elementary school. So really, I don't care about this list of careers or if we get the semantics right. We need kids to have relevant experiences with programming as early as possible. The problem is, as David Perkins explains so well in "Making Learning Whole" is that we fall into patterns when we teach kids. These patterns fractures the experience into unrecognizable parts that do not add up to a whole. Two terms he uses are "elementitis" and "aboutitis". In what passes for computer science in most schools, there is too much focus on the parts and pieces - like teaching Boolean logic, parts of the computer, or using the Google. We make that worse by teaching "about" computers, such as computer careers, vocabulary words, the history of computers, or how to use applications. The idea that kids need these disconnected "basics" before they are allowed to do anything interesting is hogwash. The "whole game" of programming can be taught if the teacher is willing to allow kids to program things that are relevant and important to them. And that is not easy, it takes skill as a teacher to challenge and inspire kids. But when it happens they exceed all expectations.Anonymous
June 05, 2012
The comment has been removedAnonymous
June 05, 2012
The comment has been removedAnonymous
June 05, 2012
RE: Two Points Yes there are more bbusiness teachers than CS teachers in HS SOme of the business teachers do teach some IT, especially systems and network management. Others teach a lot of web development and intro programming. The new AP CS Principles couse and the new exploring comptuer science curriculum are a lot more than just programming. IN fact both are pretty much language independent and you don't see a lot of them using Java.