CS is proofs (recursion), algorithms (recursion), languages (lambda calculus), operating systems (pointers), compilers (lambda calculus) -- and so the bottom line is that a JavaSchool that won't teach C and won't teach Scheme is not really teaching computer science, either. As useless as the concept of function currying may be to the real world, it's obviously a prereq for CS grad school. I can't understand why the professors on the curriculum committees at CS schools have allowed their programs to be dumbed down to the point where not only can't they produce working programmers, they can't even produce CS grad students who might get PhDs and compete for their jobs. Oh wait. Never mind. Maybe I do understand.
If you think something's supposed to hurt, you're less likely to notice if you're doing it wrong. That about sums up my experience of graduate school.


I can't agree with Joel's point of view; it seems elitist to me. The fact of the matter is that the majority of CS students aren't interested in TCS or in going to grad school; they just want to be able to get jobs doing business applications for XYZ company. The fact that Java is "easy enough" for them to do just that is, indeed, one of the design features of the Java language.
True, a lot of these students might not be able to "get" the theory, but so what? I'd be a lot more interested in figuring out how to show the joys of TCS to budding physicists and mathematicians and others who might not be aware of the field, than trying to force it on those CS students whose goal is to become technicians and not theorists.
Posted by: Kurt | January 31, 2006 at 10:21 AM