Computer Science is not just algorithms. Generally speaking, Comp Sci consists of:
Algorithms/Data Structures
Computational Complexity
Discrete Math
Programming Languages (both application and the concepts behind them)
System Architecture
Networks
Compilers
Operating Systems
Databases
Parallel Programming
Artificial Intelligence
Graphics
As for what to learn, here is THE BEST link: http://matt.might.net/articles/what-cs-majors-should-know/. It covers all the topics I mentioned, and then some, and provides links to books/resources about everything. If you're serious about self studying Comp sci, that page has all the links and info you need to start.
I was going to come in here announcing some random algorithm book, but you know, you're right. When I'm writing code for speed, I have to start thinking about how the data is laid out in memory (even in languages that abstract much of this away from you, like Java); and I start thinking about how long different operations take in their assembly form. These are both pretty important things to know, especially as you get close to the metal in languages like C. Discrete Math is useful, too; as is at least a basic understanding of networking and compilers; and, nowadays, knowing how to work with ~at least~ SQL databases is greatly beneficial. Most of that whole list is useful :)
To be thorough, you might include Sound Synthesis if you're going to include Graphics. Or you might swap one for the other depending on your interests. While Graphics will have you learn applied linear algebra, Sound Synthesis will have you learn digital signal processing, which includes Sampling Theory, Filter Theory, Fourier Analysis and Synthesis Methods.
Which university? I can tell you that's not true of my university (Northwestern) and most of the peer institutions.
To a certain extent I agree with Joel Spolsky's old article on Java schools[1]. The one gripe I would have to make is that I believe that there are many useful tasks which are hard more than for the sake of being hard. My compiler's course was quite difficult but at the same time very informative. One thing we didn't do is write a parser. When I asked my professor (now advisor) why not, he responded that writing a parser is more of a character-building exercise. I tend to agree. While very tricky, I find that in the context of university classes so much time is spent writing a parser that more interesting topics in compilers are completely omitted. There's always benefit in deeper understanding, but one must try to identify the richest areas for learning.
A sample size of 1 is not representative. If the university is more interested in teaching "programming," then that's fine, but if you want a solid grasp of computer science, then most of those subjects are still necessary.
It doesn't really matter what universities do or don't teach. If a subject is of interest you should learn it. I thought everything you and the linked article listed made sense.
Yeah... so one thing I love about being self taught was that I've learned because I wanted to do a project, and I learned the most simple tools to accomplish those projects. I'm sure I missed some stuff beacuse I was never forced to do it in a class. I think what would be most helpful is - what are the topics that made you most well rounded, that you would be a crappier coder without, that you took during a CS degree. Also, what are some important theoretical things that paradigm shifted your brain cells for the benefit of every following line of code.
Algorithms/Data Structures
Computational Complexity
Discrete Math
Programming Languages (both application and the concepts behind them)
System Architecture
Networks
Compilers
Operating Systems
Databases
Parallel Programming
Artificial Intelligence
Graphics
As for what to learn, here is THE BEST link: http://matt.might.net/articles/what-cs-majors-should-know/. It covers all the topics I mentioned, and then some, and provides links to books/resources about everything. If you're serious about self studying Comp sci, that page has all the links and info you need to start.