Is Computer Science Dead?

I enjoyed studying Computer Science in school.

Today’s editorial was originally published on Apr 27, 2007. It is being re-run as Steve is at SQL Server Connections.

There are less people entering Computer Science in colleges and less people interested in traditional computer science practices. There’s concern among adademians and one questions: “Is Computer Science Dead?

I heard something similar from my brother-in-law about 8 years ago. At the time he was a mail admin for a large company in Texas, running multiple mail servers handling somewhere in the 50,000 account range. At the time, that stressed a lot of the mail servers out there and it was a challenging job. But he worried about advances in automation and better software and thought that sysadmins would be mostly outdated in the next 5 years.

It’s 8 years later and I see DBAs and even SMS guys finding work in companies with less than 100 employees. So much for automation.

I took computer classes in high school in the early 80s and spent 2 years in a Comp Sci degree and two additional years in computer engineering and while I haven’t done a lot of programming, I’ve written enough software and been involved with developers to know that most of the fundamentals I learned with BASIC and Pascal still apply. Some of the C techniques involved with optimizing code and being very structured in your development still apply today in .NET, Ruby on Rails, or LISP. Even LISP, which I’ve never used outside of a academic world, still taught me how to program better.

Because it taught me to think about computing. And algorithms, and how things are processed.

I think CompSci is still a good major, as good as any other. I also think that we should require C programming to incoming students, force them to work with memory, understand pointers, solve the Tower of Hanoi, and other things without all the benefits you get from frameworks like .NET and J2EE. I don’t believe that much has changed in computer programming in 30 years. We have Procedural and OOP programming and the concepts in either can be applied to any environment. Maybe you could learn relational logic and SQL on top of that, but everything else is new ways of combining these old techniques.

All the rest is just syntax.

About way0utwest

Editor, SQLServerCentral
This entry was posted in Editorial and tagged . Bookmark the permalink.

4 Responses to Is Computer Science Dead?

  1. foreachdev says:

    If it is all the same, and that is a big if. Why not teach college students useful skills like SQL, Web Programming, and GUI programming? Why waste time teaching them a C which they would only use at a small number of framework companies like Microsoft, Oracle, etc. The lack of time spent on SQL in college compared to amount of time I spend teaching college graduates professionally is criminal. No wonder CS degrees are not important. They have nothing to do with most professionally addressable work doing programming. Why waste your time on a degree that irrelevant?

  2. way0utwest says:

    I’d disagree with some of that. College isn’t there to prepare you directly to work with a particular technology. It doesn’t prepare you to be a teacher, a doctor, an engineer, without a good amount of training and learning from the first company you work for.

    College is there to expose you widely to a variety of techniques, and teach you to think and analyze things. You learn a lot of languages, but what you should be learning is the common pattern of programming, problem analysis etc, and then learn to quickly adapt to new syntax. SQL makes some sense as a generic since it’s used more and more by developers and they should understand the set based nature of working with SQL.

    C is good, IMHO, because it forces you to do everything yourself, and develop and appreciation for the basics of how the computer processes things. Once you can do that, then the C#, the Java, etc is easier to work within, and you’ll have built some good habits.

  3. foreachdev says:

    To use your words: You can learn common pattern of programming, probelm analysis, capability analysis or not in any language. If we can agree that is true why not learn relevant technologies instead of 20 year old technology? Relevance should be more important than making sure every CS major knows the pit falls of different string class implementations or any other number dust bunnies of pure theory based study. You could instead make sure everyone understands deeply the architecture of a production system such as SQL Server, My SQL, Oracle and off that they can learn any other database architecture. See how I used your argument with a relevant technology instead of a inrellavant technology like C. Colleges should teach the state of the art and be pushing the evelope not living like it is 1979 at UC at Berkley.

  4. way0utwest says:

    Possibly. I’m not enough of an expert in the Java area, but I think that the hand holding that comes with C#, VB.NET, etc. encourages sloppy work. Too much is handled for you without you being forced to be careful in how you code.

    I don’t want to only teach C, but rather that it should be a grounding, base course. Once through this, adding in modern languages, ignoring pointers and garbage collection,etc. makes sense.

    On the side of databases, we certainly don’t do a good job of explaining relational stuff, or requiring in depth work. Not sure how the NoSQL style databases are taught, but both should be required with some good grounding in the technology.

    However, college isn’t an industry prep school. I’d rather see vocational type schools that teach C#, or Java, or Oracle, or other stuff that someone wants to learn. I’d think college CS should be at a deeper, theoretical level.

Comments are closed.