> The upper level courses, even at the undergraduate level ... are usually being taught by people who have made it their entire life's work to study that field, and at that level of University are often some of the best people in that field. That kind of perspective, depth of knowledge, and passion don't necessarily translate well to teaching (I can think of some math professors that I had...), but it often does

I personally don't see why 'often does' would be the case, at least in technical fields. I'm also thinking about graduate student instructors (GSIs), the ones who taught discussions. Few were genuinely good at teaching the material either - I always had to 'shop around' to find the few who were capable of explaining the material properly. All of them were very smart, but I think that it was often a drawback because they often seemed unable to empathize with not quickly developing an understanding of the material. Others simply weren't interested in teaching or at least didn't seem interested. There were, though, a couple that were both brilliant and seemed to genuinely think and care about teaching. This paralleled my experience with professors.

I was actually talking with my girlfriend about this because she thought she had a lot of good / great professors during her time at Cal. However, she was also in the social science realm. I have two very rough hypotheses to try and explain this difference:

One, I think that it might have something to do with the fact that most of my professors were originally from countries other than the US. Accents were never a problem, but I would guess that when it came to explaining more difficult concepts, there may have been some gaps in communication.

Two, more importantly, I think that the research done in computer science attracts a different kind of person than research in the social sciences. My girlfriend noted that much of the research that her professors were doing necessarily involved a lot of human interaction that extended beyond the academic sphere. On the other hand, I'm guessing that CS research is a lot more insulated, which may result in worse communication skills.

> even if it doesn't those professors are usually /amazing/ resources outside of class if you want to know more about (subject of choice), what the current problems in that field are, what's considered important or valuable, etc.

Again, this isn't helpful when it comes to actually learning the course material. If you want to do research, this is great. But I'm talking exclusively about the undergraduate educational experience.

> I'd hesitate to make sweeping generalizations, but I think that if you didn't manage to take as many advanced courses (particularly graduate ones. Good undergrads at institutions like that can almost always handle the graduate courses they offer after they have the sufficient background) with as many top people in a field (or fields) as possible, you wasted an opportunity if you were at a school like that.

I took 6 upper division CS undergraduate courses + 1 graduate CS course. Most graduate classes were only for graduate students or, if anything, took only A+ / 4.0GPA undergrads, at least in the few fields I was interested in.