

Ask HN: Computer Science for a kid - throwaway127

Hello,
I'm 15 years old. I've been programming for years and just got into node.JS. I've aspired to study CS @ uni but I really wan't to learn it now but I can't find any resources suitable for kids.
I really want to learn some CS Algorithms and how I can implement one.
What is your advice?
======
tptacek
What do you like doing with computers? The best way to learn CS is to program,
and the best way to learn programming is to pick something you're interested
in and write little programs to solve problems for yourself. I learned
programming by writing tiny little Unix utilities when I was a teenager.

A standard progression of learning algorithms would be to do basic searching
(ie, implement a hash table, a binary tree, a heap, a splay tree, a trie, a
balanced binary tree) and then sorting and then basic graph theory (ie, learn
how to turn a directed graph into a minimum-cost spanning tree, or to find the
shortest path from A to B).

If you've got searching, sorting, and graph traversal and reduction down,
you're already better than 60% of working programmers, and you'll also have a
really good idea where you want to go next.

Don't look for kid-centered resources (you don't need any math at all to get
as far as I'm talking abot in CS), but do think about kid-centered projects.

The Wikipedia pages for most of those algorithms are as good as the material
you'll get in books.

Since you're 15 and you don't know what you don't know and you don't have to
worry about how marketable your skills are, consider learning C. I started
coding in C (we didn't have Javascript when I started); my friends who were
smarter than me not only coded in C as young teenagers, but write protected
mode kernels in it so they could run their 3D engines under MS-DOS. Another
nice benefit of starting in C: just getting basic stuff working, like reading
in a file and spitting out the lines that match a string, will feel like an
accomplishment. Node.js does _so much_ for you that it's easy to take for
granted how much you're actually getting accomplished with each line of code
you write. You won't have that problem with C. Also you'll know how to use a
debugger.

15-18 is kind of a magical run of years for teaching yourself stuff, before
the world gets in the way and starts to establish boundaries for you. Try to
get to college having written a compiler.

------
josephpmay
Don't think of yourself as a kid. As long as you have the algebra background,
you can learn CS from the same resources as anyone else. How you go about
studying CS really depends on your situation and learning style. Does your
secondary school/sixth form (I'm guessing you're British from your writing
style, else high school) offer computer science courses? If so, I'd highly
recommend you take them from your school. Even if they don't have great
teachers, they'll give you a structured form to learn CS principles. If your
school doesn't offer CS courses or you want to supplement your learning, I'd
highly recommend you take Coursiva/EdX courses for the topics you would like
to learn. This, of course, takes patience and discipline, but you'll end up
being very prepared to study computer science at university.

Source: I'm a 17 year old CS student

------
nodemaker
Rather than trying to learn CS algorithms in general, why dont you come up
with a problem you want solved and then try to find what is the best
algorithmic approach to it.

Say you want to have a text box that autocompletes? How can you make this
really fast over a network connection?

Also you are not really a kid at 15 btw!

------
LarryMade2
Well, kiddo, there are these ancient things... they called em "books" (heh,
couldn't resist).

But seriously, used bookstores and the library are a great start look for
classics such as Knuth Art of Computer Programming. Also check with the
college course catalogs and see what CS classes are using as textbooks.

------
helen842000
What about Udacity.com - there are a few CS courses on there including one on
algorithms. It might be a good starting point.

------
skadamat
Here are your 3 friends:

Coursera.com Udacity.com Teamtreehouse.com

------
seiji
These are absolutely the best:

CS1 - <http://www.youtube.com/course?list=EC6B940F08B9773B9F>

CS2 - <http://www.youtube.com/course?list=ECE621E25B3BF8B9D1>

CS3 - <http://www.youtube.com/playlist?list=PLC3E93EF6B9645D9D>

For a more read-your-own self study, HTDP is pretty amazing too:
<http://www.ccs.neu.edu/home/matthias/HtDP2e/>

