I’ve been reading a lot of complaints about the current state of computer science education lately. This post makes a reasonable attempt at summarizing the different ideas around what sort of graduates these programs should produce. I’ve been in industry long enough that my CS program hadn’t switched to using Java as the initial language when I started. I agree with Brian Hurt and Chris Cummer about the value of a computer science degree.
The right courses in a CS degree amount to a toolbox of concepts that you can use to solve whatever real-world problem you’re facing. The most recent example of this happened on the job. We had an issue where some text files being downloaded for storage in a database kept causing failures in a process. Because of how the process was implemented, there was no way to pin the cause of a failure on a particular line of the file. The files in question are regularly more than a gigabyte in size, so manual inspection wasn’t an option. The minimal understanding I have of how compilers work enabled me to direct my staff to build a parser, so we could validate the input file before running the process against it. Without a CS background, it’s highly likely that I don’t come up with a solution at all (or a really bad implementation of a parser).
If I had it to do over again, I would have spent more time in my CS program getting better depth in compilers, operating systems, and other areas.
Computer science isn’t perfect, but it’s relatively young as a field compared to disciplines like law or medicine. There are probably things that should be changed, but I think the fundamentals are good.