Certainly, if all you're after is a degree (the certificate), not much effort is needed. On the other hand, if you want to, you can get more out of college. Which brings me back to my "good computer science education": it depends a lot on the aims of the student and how she approached her learning. That is not to say that there are no computer science programs that is basically vocational training, nor that there are programs that are very theoretical in nature, of course, but if you want, you can get more value for your money than a degree.
> Would you think someone needs a CS degree if they already have a good understanding of the books?
To be a programmer? No. But, at least to me, programming related matters is but a small part of computer science. Which makes Knuth's books such a great resource: it goes into detail in that small, yet quite large, field of programming.
You can say the it's up to the student to put in the effort but that really just sounds like confirmation that it's not part of a college education. If you want more out of an education you have to do it yourself, don't expect much from college.
I guess what I'm saying is that an undergraduate CS degree is just a vocational degree. College does not prepare you to read TAoCP. If you want a solid CS foundation you have to self study.
> I guess what I'm saying is that an undergraduate CS degree is just a vocational degree.
I think my undergraduate CS degree contained exactly four courses that I would classify as pure vocational in nature: the first class everyone had to take was to learn to program in Delphi; a class on functional programming; a class on GUI programming; and a class on object oriented programming. After that, all classes were either:
- mathematics, from analysis, statistics, writing/reading proofs, to loads of discrete mathematics
- formal methods, from proving correctness of programs, modeling, to different methods to analyze complex systems
- theory, from automata theory, language theory, compiler theory, database theory, relational algebra, to complexity and computability
- odds and ends, such as ethics, philosophy, history
Then, each trimester, we also had an engineering project where we would have to apply theory. There were no vocational classes associated. If we had to, or wanted to, use a tool, language, system, we had to learn it by ourselves first. Nevertheless, these engineering projects can be seen as vocational in nature too, of course. Still, that makes for about one vocational class a year (of about 15), and three engineering projects a year.
So, when people talk about undergraduate computer science degrees, I always assume their experiences are not dissimilar to mine.
> Would you think someone needs a CS degree if they already have a good understanding of the books?
To be a programmer? No. But, at least to me, programming related matters is but a small part of computer science. Which makes Knuth's books such a great resource: it goes into detail in that small, yet quite large, field of programming.