Should I drop out or not?
Ezra: You're mistaking the first term of university with the University™ that everyone else is talking about retrospectively.What they mean by University™ is usually "the last 2 years of university".Year one, if your experience is like mine was, is where you get the breadth part of your education in.  My first year was 20% philosophy, 20% English, 20% math, 20% CS, and 20% political studies.And it was all mostly tripe.  The math was basic calculus; the English was Donne, Gawain, Shakespeare, and some other BS; the philosophy was Socrates and Aristotle; the CS was basic "this is a for loop", and the politics was Locke, JS Mill, Engels, etc. ...All extremely basic.  The first year is unlearning what your retard HS teachers told you, giving you some basis in the "you're supposed to know this text"-texts in each field, and getting everybody up to a base level to continue from.Of course you're going to be bored...  the three golden rules to surviving are 1) finding out what profs are good, and then taking their classes, 2) not scheduling a lecture before noon (at my school they put nearly all the first year math classes at 8:30 ... brutal) and, most importantly, 3) playing Super Smash TV with the other smart kids.You don't learn anything because you (you being the average student) are a fucking retard.  This becomes especially clear years later when you (you being the smart kid) serve as a TA for some first year class.This problem is especially apparent in CS, because there is, depending on where you live, and what school you went to, either a) absolutely no curriculum at all, or b) some retard teaching kids goto in BASIC on crappy 80's computers, or worse.  You can learn decent CS in HS, but that's far from typical.And when you put the kids with no exposure whatsoever to programming in the same class as people with a decade of experience ... of course the smart kids are going to be bored; you're supposed to be.So, in first year you get the hammer.The second year is more interesting because you actually might learn something.  Or, at any rate, will be required to work.  This year is usually when they separate the people who think they want to be an X, from the people who actually do.This year you take 30% math, 50% cs, some physics or chemistry, and (if you're like me) more philosophy.  In your CS, if it's like where I went (when I went), you a bunch of new stuff... I went from a shaky understanding one and a half programming languages, to being pretty good in a few ... if you make it through.Also, by this time you've learned all about requirements engineering if your professors are as "evil" as mine were.
http://portal.acm.org/citation.cfm?id=1121475Still, you're not learning anything that interesting, doing (relatively) toy apps in assembly, prolog, Eiffel; but you learn more advanced procedural and OO stuff at this point, and can begin to postulate on the pros and cons of multiple inheritance, and tail v. head recursion, for instance.Again, nothing ground-shaking, but you learn how to swing that hammer you got earlier in a useful manner.Third and fourth year are where you begin to specialize, and most of the classes are awesome.  Also, by this time, you're old enough to drink (in Canada).  You're taking 60% CS, 10% math, and pursuing your interest in X with the other 30%.All of your classes are taught by pretty much the most intelligent and passionate people around, and everybody is there because they want to be, and interested in learning, and you're learning about stuff that's actually cool.And you spend all of your "free time" playing with robots (or kernels, if that's what you like, or compilers, or whatever), and building stuff with your friends.University's awesome. (I finished in October.)About the fourth year student thing ... some people are fucking dumb but manage to scrape by with "group projects" that their smart friends complete, and middling test scores... whatever.  This is not a phenomenon exclusive to ... anything, really.And I know tonnes of smart people who suck at programming contests ... they're not real.  It's kind of like having a waitress who's a world champion at stacking cups ... I can't really see it hurting, but I'd rather have someone who gets the orders right, and brings the food out while it's still warm (and flirts with the programmers!) than who can stack cups quickly.The biggest thing to realize is that even if you're at a shit university, there is someone there who's incredibly intelligent and passionate about what they do ... and they have a propensity to like others who are intelligent and passionate about what they do.They want to help you learn more than almost anything; the caveat being that you have to want to learn.Ask to help them out ... they might even give you money for it.Or, if that's not your alley, spend all day trying to break something, or create a monster (with your friends, of course).