In a post entitled CS Broke Joe Gregorio writes

Computer Science, at a deep and fundamental level, is broken, and that applies not only to software but to hardware. One of the reasons that I have this feeling is that after programming for the past 25 years the field hasn't really changed. The conversations aren't any different. You could substitute 'Windows API' or 'Borland CGI' for 'HTML and CSS' and you'd be having the same exact conversations I had 15 or 20 years ago. We still struggle with leaks, be it memory, or file handles, or threads, or whatever. We still have race conditions. We still struggle with software that grows linearly in features but exponentially in complexity.

Two things came to mind as I read this

  1. If your definition of computer science includes HTML & CSS or Win32 then you're doing it wrong. In the words of Edsger Dijkstra, computer science is no more about computers than astronomy is about telescopes.

  2. Even if you limit the discussion to computer programming, does it also mean that civil engineering is broken because people today still have to discuss and solve the same kinds problems faced by the builders of the great wall of China or the Roman aqueducts?

Note Now Playing: Ice Cube - Go to Church Note


Friday, December 12, 2008 7:11:22 PM (GMT Standard Time, UTC+00:00)
I couldn't agree more. I don't believe CS is broke (for those reasons). However, if CS programs are to turn out "useful" employees - then there IS a problem. But, perhaps that's the point anyway.
Saturday, December 13, 2008 3:03:22 AM (GMT Standard Time, UTC+00:00)
You're so right. CS has ABSOLUTELY NOTHING to do with the topics he refers to. I'd advise him to at least see what Computer Science is about and then open his mouth. And I'd advise every programmer in the world to take some basic CS and Discrete Maths classes, but one thing is programming and a whole different other is Computer Science, I know. I think there are just too much people thinking about <Insert proprietary product name here> API instead of algorithms.
But that's just me.
Saturday, December 13, 2008 12:06:34 PM (GMT Standard Time, UTC+00:00)
Spot on post, absolutely agree.
Sunday, December 14, 2008 9:33:37 AM (GMT Standard Time, UTC+00:00)
As a structural engineer and hobbyist programmer, I think your second point is interesting. I personally think Civil Engineering is broken exactly for the reason mentioned.

Engineers DO solve the same problem over and over again. It is so repetitive that you can design and build 95% of the structures without knowing what you are doing since there are building codes you can use as a cookbook and since gravity, concrete and steel has not changed for a very long time. An engineer can do fairly well just by knowing enough to design one building. Rinse Wash Repeat and you are set for your entire career. SAD.

I don't think (and hope) CS is not like this. What is cookie cutter code? Wbat programmer can just go to a cookbook to build a new product. How long will that programmer stay useful if he/she just keeps writing the same code over and over again.

Why CS is not broken is that when something gets repetitive, that thinking (the low level repetitive thinking), eventually gets abstracted out. Someone builds a framework or an api and the whole CS community move up that next wrung of the ladder.

Maybe the difference is that the sole Civil Engineers problem is build X to stay up. Once you solve that problem you are done do it again. Whereas CS the problem space is infinite: build X to run and make it blink and do my taxes too.
Monday, December 15, 2008 9:23:37 PM (GMT Standard Time, UTC+00:00)
A more specific discussion on what's broken, I refer back to a brief paper by Milner on Turing, Computing and Communication, which discusses how Turing machines are due for a replacement as the centre of the theory of computing with an "interaction machine". To my knowledge, this is a long standing debate among computational theorists that hasn't gone away (despite some adherents being called quacks, among other things).

Wednesday, December 17, 2008 12:48:50 AM (GMT Standard Time, UTC+00:00)
"And I'd advise every programmer in the world to take some basic CS and Discrete Maths classes"

Joe's a math grad. Maybe you're taking his examples too literally.
Bill de hÓra
Wednesday, December 17, 2008 11:43:42 AM (GMT Standard Time, UTC+00:00)
Absolutely, in fact programming is not computer science. It's about practical and theoretical problem solving. You need to be very creative and logical too.

The main areas are algorithms and data structures, programming and languages, software engineering, computer architecture, artificial intelligence, networking, databases, computer-human interaction, computer graphics, operating systems and more. Those are the research areas.

If you think of it as programming and using a spanner, then it's engineering and not science. If you're making observations, hypothesis to explain them, and then you test them, it's science because you're applying a scientific method.

I'm a much better scientist than I am an engineer, and we need each other.

Comments are closed.