

Ask HN: what should a CS student always remember? - fooboy

Throwaway account.<p>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.<p>If you'd rather not share in public, I would love to hear from you on Gmail (fooboyHN).
======
ren-n-stimpy
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.

------
CyberFonic
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!

~~~
fooboy
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.

~~~
CyberFonic
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.

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

------
xcallemjudasx
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"

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

~~~
fooboy
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.

------
hrasm
A wise man once said: "Learn everything; then forget everything."

------
queensnake
Work hard? It's never more fun than grad school. Sigh.

------
barapa
I'm in the same boat as you. What have you been doing thus far to prepare?

~~~
fooboy
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?

------
kodeshpa
work to build portfolio ,devote time on side projects.

