Sunday, February 04, 2007

The Death Of CS in Education

I came across this article by way of Slashdot this evening, and while agree that the professor with regard to where computing may go in the future, I disagree with his notion that there won’t be a need for a classical computer science education. Yes, the tools are getting smarter, and it is possible to write complex web applications and end up writing very little code, but I would like to ask, who wrote the frameworks that made those things possible? Certainly, computers are getting faster, and operating systems are getting smarter. Indeed, most people really can treat the computer as a black box that makes life easier. However, it seems to me that we still have a lot of work to do. If we didn’t have students studying computer science, computer engineering, and electrical engineering would we be able to purchase dual core processors today? I sat in a lecture given by Alan Kay last year, and his major point wasn’t that computer science education was dead, it was that computer scientists have become complacent with the tools that they have, and that rather than trying to push the limits of what we can do, we’ve accepted the status quo, and aren’t really progressing.

As someone who is about finished with a bachelor’s degree in computer science, from a school that still has some rigor in the program, I really question the crowd that claims we should turn computer science into a vocational degree. Some of this comes from personal bias having studied the theory, and done the proofs. I am a computer scientist before I am a software engineer, and I think that it is because I am a computer scientist that I am a good software engineer. When I set out to write software, I understand what I am doing, how it works, and why implementing a function in a given way gives me the results that I want. That isn’t to say that the vocational programmer doesn’t understand some of these things, but it is far too often in practice that I find a vocational programmer that has significant problems with his program because he doesn’t understand what the code he has written is actually doing at the machine level.

Universities and professors worry about a drop in CS enrollment, industry worries about it too but for different reasons. I believe that the one of the largest hurdles in the US is that math and science aren’t rigorously taught in the schools. It’s seen as something ‘geeks’ do because it is taught so poorly in the public system, that if you’re not a geek, it simply doesn’t make sense. So, you have a child who loves computers and loves to play games. This child may even think that it’s something that they would like to study. The problem is that when they look at all of the science and math prerequisites for a CS degree they get scared off, because their background simply isn’t strong enough. Many CS programs have taken the approach of lightening the math/science requirements of their degrees, or offering courses in game development as a last ditch effort to bring more people into the fold. I don’t think this is the real answer.

By removing the theory from a CS program, all you’re left with is a vocational degree, and just as the professor said, then all we do is use frameworks and programs that have already been built to solve out problems, all the while not really accomplishing anything new or novel along the way. We could get into a huge discussion here about what a business should do build or buy, create their own new framework or use one already in existence, but that isn’t germane to the point tonight.

If computer systems are to continue to get smarter, and do more to make our lives easier, the world needs bright people with classical backgrounds in computer science; people who understand where the field has been, who can also dream about how it should be in the future; people who are willing to step outside of the box and solve the hard problems that vocational programmers simply can’t understand.

I agree with the point that as computing moves into the future it will become more specialized. This point almost goes without saying. To steal a thought from Alan Kay again, in the early days of biology there was one biology department at a university, and it studied everything that there was to study about biology. However, as research as widened our knowledge of biology it has become necessary to split biology into different departments, each covering a specialty so that the research can keep moving forward. Certainly something like this could and should happen with computer science. There are so many things to learn now, it really is impossible to survey the field with any depth in four years, and as noted in the article, each computers are used in every discipline, so once one has a basic understanding of how the computer works, there is additional domain knowledge that is necessary to make an application function in any area.

I don’t think computer science education is dead. I think that it is currently struggling under its own weight. In a century, more has been written than anyone could learn in a lifetime. This doesn’t mean we should stop teaching it, or turn it into a vocational discipline. It means that we need to adjust our curriculum, distill the important parts, and teach the theory that will be applicable to the tasks we need to solve. We must challenge ourselves to do things in new and different ways, things must continue to evolve, and they simply can’t if practitioners of the field don’t have the background. Computing is still math and algorithms. If someone doesn’t understand that, it’s going to be hard to innovate.

We are at the beginning of a new era, but rather than thinking that computer science isn’t going to be important to academia and business in this era, I would argue that will be at the heart of every new advancement to come our way. Computers have worked their way into the daily environment of billions of people. It’s just very hard to think that you wouldn’t want very smart and educated people working on those systems to continually make them better. That can’t be done without computer science.

1 comment:

Anonymous said...

Excellent topic and great insight to the easy way out rather than gearing up eduaction so that the US can compete in the future.