Hacker News new | ask | show | jobs
Ask HN: what should a CS student always remember?
17 points by fooboy 5515 days ago
Throwaway account.

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).

9 comments

I got an ugrad in CS, but from a non-engr-focused school, and then got into one of the top grad schools. I quickly realized I had neither the mathematical pedigree for CS theory, nor anything resembling experience designing OS and microprocessor internals for systems, that the MIT, CMU, and Berkeley students did. (my OS class was literally a history course!)

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.

Undergrad CS programs vary greatly. So I would suggest having a look at recent course descriptions for the degree program and recommended books.

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!

Hah, very true.

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.

Mathematicians go to great lengths to make careful distinctions between objects, notions and concepts. With those skills you will have no problems with any Object Oriented Analysis - Design - Programming.

Wishing you all the very best of success with your graduate program.

Off the top of my head:

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.

A wise man once said: "Learn everything; then forget everything."
I'm currently finishing up my CS undergrad while working fulltime.

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"

I am in the same position,have got admission to a CS grad course with an undergrad in something else.Earlier had thought that it would be doable thought now it seems pretty daunting.I am almost thinking of not taking it up as I think of the nightmarish scenarios of not being able to do well.
Well honestly, schools are decent at identifying whether you can succeed in their program or not. Whether you actually succeed is a different story, but I bet its a function (maybe exponential) of the effort you put in.
Work hard? It's never more fun than grad school. Sigh.
I'm in the same boat as you. What have you been doing thus far to prepare?
Stepping up work on personal projects (website, OSS). I want to implement some algorithms in C once those outstanding projects are done.

What about you?

work to build portfolio ,devote time on side projects.