I did not study CS in undergrad, but I've been admitted to a graduate CS program. What advice do you have for me? This question is intentionally open-ended and vague, since HNers are overflowing with experience + advice.
If you'd rather not share in public, I would love to hear from you on Gmail (fooboyHN).
Having lots of programming experience in Java, C#, PHP, etc will not be of much value unless you understand the underlying paradigms and concepts.
In most general terms, you'd at least need to know "Algorithms and Data Structures", the SICP book cover to cover, some LISP, C programming, basic operating systems, compilers, interpreters, discrete math, logic and a bit of digital electronics.
I'm intrigued as to how you got into a graduate program. Did you present an impressive background? Care to mention which Uni?? It's a throwaway account, so it can't be tracked back to you!
I won't mention the university, but they're in the northern Atlantic region (not MIT or CMU). My CS interests (machine learning and computational statistics) extend from my domain experience (applied statistics), and I also have a strong background in math. Finally, I bootstrapped my CS knowledge up to a certain level using online lectures from MIT, Stanford, and Harvard, and mentioned as much in my application.
Wishing you all the very best of success with your graduate program.
What about you?
Yet I now have a PhD and a Best Paper award.
The key: specialize.
Study a sub-discipline so deeply that you know every paper's references' references. the reference set will collapse to a strongly-connected graph. jettison weak connections to get a clear picture, and, really, a narrative of the field, as in a survey paper.
just naturally, you'll start to be able to quote author affiliations, and their publication list in time-order.
once you do that, you'll find yourself hearing/reading comments, and immediately saying: oh, shut up, that has been done! that sounds like A, said by X, and B, said by Y, and even a bit like C, said by Z. and, then, voila, you'll see that no one has said D yet, even tho it is just obviously a variant on C, or whatever. and then you write it/prove it/code it. then you publish it. and all of a sudden, even though you've (say) never lexed or parsed or emitted or reduced... you start seeing yourself in other people's references as "D said by You".
Then you win.
Know and understand commonly used algorithms and data structures, both what they are good for and what they are bad at. Most of the problems you'll solve reduce to something that's already been done plus maybe a little extra (My roommate loves this book for algorithms: http://www.cs.berkeley.edu/~vazirani/algorithms.html).
Work on personal projects. They're great practice, very rewarding, help familiarize you with the language(s) used, and show you the practical side of CS.
Always remember those times when you would spend 3 days straight coding with very minimal sleep in order to finish a project and still were able to get to class at 8am the next day. When you're at work remind yourself, "it can always be worse. I could be writing a parser in ANTLR that's due tomorrow and still barely understand the syntax"