2 comments

[ 4.5 ms ] story [ 22.9 ms ] thread
I think "computer science" is trying to be two things, and it needs to only be one thing.

"Computer science" should be about the theory of programming. It should be a department in the college of science, like, say, chemistry. "Software engineering" should be a separate department in the college of engineering, like chemical engineering.

And just as chemical engineers need to know a fair amount of chemistry, so software engineers need to know a fair amount of computer science. But just as a chemistry degree, by itself, does not really prepare one to be a chemical engineer, so I fear that a computer science degree, by itself, does not really prepare one to be a software engineer.

What is software engineering? It is efficiently creating, at scale, programs that work. I don't thing computer science departments teach this well (if at all). What's the largest program that someone ever has to deal with in a four year CS degree? Probably writing a compiler, which might run to 10,000 lines. I'd like to see a class where you have to add features to a 200,000-line program. They'll learn that a 200,000-line program isn't just 20 times the problems of a 10,000-line program - it has new problems at that scale, problems that are the domain of software engineering rather than CS.

I think, as programming is practiced in the world outside academia, software engineering is at least as relevant as CS, and I think our CS programs are doing an inadequate job of teaching it.

"I asked on Twitter yesterday how helpful people found computer science in writing software."

should be corrected to:

"I asked [a bunch of nerds who read an uber nerd's Twitter ]on Twitter yesterday how helpful people found computer science in writing software."

Let's be honest, you can get pretty far without even knowing O(n), what the hell a linked list is, and how to implement your own hash table. It sure helps to swing that big graph search DFS dick on Hacker News though.*

*For LoB applications