Ignore the intro programming classes and take higher-level courses. Treat prerequisites as suggestions, and don't be able to ask for permission (if needed) to skip courses or take grad courses. Grad-level cryptography, machine learning, PL theory, etc. can be great. Choose classes based on how good the professor is. Try to do some research work as soon as you can find a good professor. Working alongside upperclassmen and grad students is a great chance to learn and get tips from them. Chances are, you don't know as much about algorithms/unix/Lisp/HPC/graph-theory as you thought.
The fact that you can skip or breeze through some of the basic undergrad classes gives you flexibility to really explore new things. Hell, get that linguistics/history/art second degree you've always wanted. Go on backpacking trips or play intramural lacrosse or whatever. You should be the least concerned about the piece of paper at the end (but make sure you get it anyways).