

Ask HN: What should I learn to become a computer scientist? - frodwith

My 14-year-old cousin came over to my place, woke me up, and asked me (a career software developer) "What should I learn now to become a computer scientist?"  I didn't have a really good answer for him. I told him to pay attention to algebra, take a class in symbolic logic if he could find one, and take any programming classes he could find.  I started learning to program in college (not counting little games in BASIC and hello-world level stuff in C growing up).  I'm sure there's plenty of good teach-yourself-to-program books aimed at people his age, but I don't know what they are.<p>TL;DR: What does HN recommend as a course of study for an aspiring young pre-CS student?
======
pook
MIT's OpenCourseWare is an excellent way for him to study CS on his own while
in high school.

I would recommend, at 14, getting him utterly hooked on the mindset of CS and
related subjects. Godel, Escher, Bach, etc. If you can get him fascinated with
the field, he'll find all the information he needs on his own better than any
list of required reading you'll get.

<http://ocw.mit.edu/OcwWeb/web/home/home/index.htm>

<http://www.amazon.com/dp/0465026567>

------
amock
Does he want to study computer science or software engineering? If he wants to
study computer science he should take lots of math, particularly courses that
involve proofs. I recommend algebra, graph theory, and combinatorics in
particular. I'd recommend Haskell or SML as programming languages since they
have so much theory behind them. Haskell has a great community and is really
nice to use, but SML is simpler to start with and has a concise definition.

~~~
j_baker
Erm.... this is all well and good, but is this really something you'd want to
start a 14 year old out with?

~~~
mquander
How is 14 early to take courses on graph theory or combinatorics, or learn
SML? He sounds like a bright kid, or else he wouldn't be asking his cousin how
to study computer science. He might or might not actually be interested in
these things, but if he's interested in them, then he should learn them.

~~~
Amanjeev
I think if a kid wants to learn something is asking about it, then there
should be a way. I think instead of starting straight with high school Math,
he/she can be started with some basic stuff of upcoming classes.

------
j_baker
I'd recommend the little schemer: <http://www.ccs.neu.edu/home/matthias/BTLS/>

I think if I'd seen this book when I was about that age, I'd have _loved_
computer science.

~~~
GrowWebs
Another ebook I recently came across is: <http://inventwithpython.com/>

It teaches python through building basic computer games. A fun way to learn.

~~~
dkberktas
seems very nice!

------
bmalicoat
Get a TI calculator and try making some simple games for it in TI Basic. The
calculator is nice because you can program in your not-so-great history
classes or whatever.

Also start messing around with Python, there is no overhead and you can get
started quickly.

Paying attention to math is important, but more important is honing your
problem solving skills.

(Addressed everything to the OPs cousin for readability)

~~~
elcron
This is basically what I did in 8th grade, then in 9th grade I joined the
FIRST robotics team in our high school, which I would strongly recommend if
there is one available.

------
CyberFonic
Well maybe he doesn't understand the differences between: computer scientist

computer programmer

software engineer

You might think they are the same thing but they're not. A computer scientist
would end up in academia doing research. A computer programmer writing
programs and a software engineer design then building systems.

Learning to program for a budding computer scientist is the worst possible
thing to do. It contaminates the mind with what ever preconceptions the chosen
language may provide. Ok, maybe Lisp and Scheme not so much - but still ...

------
10ren
For a computer _scientist_ (as opposed to developer), study maths.

~~~
one010101
Yes.

