Yes, OP. This is a first-fruit of the CS degree. Might I suggest looking at threads and continuations and pondering the interrelation, as well as the pi-calculus & the Occam language?
Metacomment: incoming list of people saying cs education is for "sheeple" and any real hacker can get a job/learn it on his own.
And this is the metareply,
That's not the point of an education. Mistaking college for that is thinking college is trade school training. It generally hasn't been, it usually isn't, and it shouldn't be.
Loosely, the purpose of education ( as opposed to training ) is to provide (i) a broad base of understanding across a wide variety of areas nearly inaccessible without portals created by experts, (ii) a theoretical grasp of the field, providing a framework and sense of theoretical possibilities present, past, and future, (iii) a structured and systematic mechanism to go through these subject areas in ways that are (a) thought-through, (b) approximately complete, and (c) pedagogically competent, and finally, (iv) a standard way to attain a certain competence in the area that is generally agreed upon to provide a base understanding.
It would be disingenuous to suggest, imply, or to ignore the fact that many educational institutions do not fully live up to their promise. It would also be disingenuous to ignore the fact that a vast number of incoming students really just want to be trained for a job and go make a decent wage, which is an entirely morally acceptable desire. These facts are connected by the economics of supply and demand.
Generally there is no way for one degree to get you 'a broad base of understanding across a wide variety of areas'. Most degrees are going to get you a semi-deep understanding of only a couple area, and then a very shallow understanding of a few more.
My university went into a semi-deep understanding of complexity theory, graph theory, logic and a few areas relating to bioinformatics. I also got a shallow introduction to logic gates, assembler languages, java, etc etc.
Most university degrees are similar with the emphasis changing around a bit. I feel a university degree is still very important as it gives you something far greater than a few pieces of theory: an understanding of how to learn more.
Most self taught programmers will have gotten their knowledge from experimentation, books, Google searches, and sites like this one. In general, they aren't going to be able to grab academic research from the 60s in optimizing graphs and apply that to their code when needed as the type of language and math involved is going to push them away. Meanwhile, a CS grad has probably had to go through these types of papers for their degree and will understand how to approach them. The confidence of doing it before in their degree is also incredibly important when reading something that looks like Greek.
EDIT: And don't knock the knowledge you can gain from a paper written by some professor back in the 60s - the concepts, algorithms and recommendations are nearly always just as valid today.
"Most self taught programmers ... aren't going to be able to grab academic research from the 60s in optimizing graphs and apply that to their code when needed as the type of language and math involved is going to push them away."
The average person with a CS degree isn't familiar with the research literature either. That's the kind of background you usually get from doing a PhD.