I'm a high-schooler and will be applying for colleges this fall. I've slacked a bit in high school (you know, working through SICP instead of doing homework), so my GPA is neither good nor bad (4.1), while my standardized tests are a little above average, but nothing extraordinary.
I'd love to go to someplace like MIT or Caltech but these are now unrealistic aspirations (for undergrad). I'd also love to go to a liberal arts college that does CS, like Harvey Mudd, but even if I was accepted I'm not sure I'd be able to afford it.
I know I can get an education anywhere, but I'd like to go to a school with interesting/intelligent people, or, at least, not be surrounded by apathy. Do you have any suggestions for schools I should shoot for?
Also think of the relationships between schools to get in the "back" door at places where the competition might be higher. For instance, at the Univ of Pittsburgh you can take one course every semester at Carnegie Mellon. The Pitt credits are cheaper but you get the instructors and knowledge at CMU. Of course, your degree would be from Pitt. Still, knowledge matters. I think the same is true of Tufts and MIT/Harvard.
A third option is going to a local state school and getting your grades in order to transfer after a year or two. You'll probably be in school a semester or two longer (cause all credits won't transfer), but your degree will have more of a "name" and you'll benefit from increased competition/knowledge.
EDIT: Sorry if this sounds disparaging of Pitt. I had a great experience there in a combined cogneuro Ph.D. program with CMU. But I know nothing of Pitt's CS department even as the cross-over of the communities made a lasting impression. You'd likely to have to work a bit harder to make those connections as an undergrad. But it is possible.