I read your essay about computer science and some ideas you had bothered me so I wrote an article in which I try to set some things straight. Since I study computer science writing essays is not really my strength so it might lack some structure here and there.
Let me start off by saying that I don't think universities are a better place for learning culture than any other location with bright and interesting people. If you have time and interest you can learn as much as you want about any aspect of the collective human knowledge no matter what your daily occupancy is. If you really want to learn as much of the breadth and depth of the great human achievements as you can then work very hard for a few years and after that go travel around the world! Take an e-book reader with you with all the popular scientists and philosophers, poets and artists. If you think going to a university will just automatically teach you these things you are wrong. If you are lazy and you don't like to read or learn about culture, all you will learn at a university is what it is like to sit on your ass all day playing video games, and hang in a bar all night getting drunk as fuck. It will end eventually with either you dropping out or with you aging a bit, manning up and doing what it takes to actually get that degree.
So why would you go to a university and study computer science if it has no added cultural value? The answer is simple. Because you're interested in Computer Science. You've learned how to program at high school. You can make websites for shops or businesses. You could make them back-ends or optimize their data entry applications. You can use some abstract languages like PHP or Ruby, or even Java or C#. Or perhaps you're the kind of guy that works in C or C++, and you contribute patches to drivers and software you use on your linux operating system. These things are nice, and being able to do them will land you a nice job, but that is not enough for you. You might want to know what it takes to make a user interface that allows any person to use a device irrespective of complexity. You might want to know what it takes to design an operating system from the ground up. You might be interested in how to rigorously proof that a multithreaded application that monitors and controls a nuclear reactor is correct beyond a shadow of a doubt.
Do they teach you how to be a better programmer at a university? Yes and no, and probably not more than you would learn at a decent employer. A proper university will introduce you to some high level language, like Java and to test driven development using something like JUnit. The reason many universities chose Java for their introductory programming courses is not because they want to prepare you for 'the industry' or whatever organization might be giving them money. It's because java is a very strict and explicit language and that makes it an easy tool for explaining the concepts they are trying to teach. This is why software engineering courses might require you to use Java. Operating systems courses might require you to use c/c++ and functional programming courses might be in Haskell or whatever the professor thinks is appropriate. There is perhaps some truth in Zed Shaw's statement that you might be lucky if they teach you more than one language. In a computer organization course I followed the teacher explained how computer memory worked and then gave an assignment in C without a full introduction to the complicated art of C programming. He just assumed that you would be able to program in C after you had learned Java and heard about how memory access works. This is because languages are just tools. It is more about what and how you implement than in which language you do it, or using what process. (Although there is a branch of computer science that focuses on the development process, if you're interested in that!).
The difference in programming ability comes from another angle. If you strictly follow everything the university tries to teach you, you might not be the greatest programmer. You might not have heard of BDD and you might not be a master of Vim. And you might not have increased your productivity by having tried out many different programming languages and finding one that suits you and your needs. These things you will have to find out by yourself. What you do get is the knowledge to tackle any computer science problem in the field you specialized in. You might be able to design and implement an operating system from the ground up. You might know how to design a full blown programming language with JIT compiler and all. You might know how to implement a realtime 3d engine for a game or simulation. You might know how to design artificial intelligence for robots that explore the surface of far away planets autonomously. And not only might this land you a nicer job with a better pay when you decide to leave the academic world, it might also give you the satisfaction of having a thorough understanding of your field and science in general.
I would like to add that Computer Science is in no way more 'solved' than Physics was when Newton wrote down the laws of motion and universal gravitation. Just that all hip languages that come out have features that were discovered in the 70s doesn't mean Ruby, Python and Haskell are perfect languages and no one will ever come up with something better than LISP. In all the different fields of computer science discoveries and new conclusions are made daily. And just like discoveries in physics might not always look like they are useful to man kind. So might the abstract ideas in the specialized fields seem a bit far away from practice. But as you are happy that our knowledge of quantum mechanics allows your GPS to get your location down to a meter or so, so might you be happy that the flood gates to your country have been proven to work correctly.
The whole argument about paradoxes just makes no sense. When mathematicians thought mathematics was pure and had no paradoxes they were very happy and without worry would go on and research many interesting theories and theorems. When Goedel came along and ruined everything by proving quite paradoxically that mathematics had paradoxes at its very core, many mathematicians were very upset indeed. However it did not at all influence the scientificness or interestingness of mathematics. Beside that, Computer Science is widely regarded as a field in mathematics and mathematics are a rather large part of the Computer Science curriculum. If you are a prospective student don't let this scare you. Even if you don't like mathematics now, you'll probably find that the more advanced mathematics are actually pretty interesting and that might motivate you to understand them and get good grades for the tests even if you weren't that great at it in high school.
I will close my rant/essay with the following thought. When in the industry some corporation makes a new toy that everyone goes crazy over you might not realize that it is an implementation of an idea a computer scientist had 10 to 20 years ago. An idea that was cool back then, but electronics were too large and computers too slow to make it financially feasible. It is now that all these ideas become feasible as computers are starting to be really incredibly fast and small. It is now when you can be a computer scientist, have a crazy idea, inspired by the recent implementations of older ideas, implement it and have it run immediately too! It is a luxury scientists of old did not have.
So go out and study the computer science you like the most and lay the foundation for the awesome software we will use tomorrow!
Yours sincerely, Tinco Andringa
p.s.: This all assuming you go to a real proper university, not some place where you "Study something serious for four years after grade 12." without any academic value. If you live in a country where it's hard to get a decent education if you don't have money and/or didn't score too well at your final tests like the United States (or so I've heard) then perhaps work for a few years to save up that money and then go try it, I think it'll be worth it!