Hacker News new | past | comments | ask | show | jobs | submit login

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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: