Hacker Timesnew | past | comments | ask | show | jobs | submitlogin
Ask HN: reading list for high school students interested in CS?
6 points by japhyr on Aug 14, 2012 | hide | past | favorite | 10 comments
I teach some intro programming classes, and I have a couple students so far who already know they want to go into software development. One is in high school, one is in middle school. More students will come to us this year as we steadily improve what we offer.

I would like to put together a reading list. The list will be much more complete if it comes from HN than if I just make my own list, and students will take the recommendations more seriously as well.

I imagine a mix of non-technical books that students can read, such as Just for Fun and Richard Stallman's essays, along with more technical books.

What books would you recommend to students who know they want to go into CS, but have no idea yet what they will end up focusing on?



I was about 17 when I encountered The Hacker's Dictionary. It hasn't been updated much for years, but I think it would still provide an easy-to-read gateway into the way programmers think and some interesting tidbits of history.

Reading or watching Guy Steele's Growing a Language talk could be fun.

The Little Schemer could be a good choice.

Van der Linden's Expert C Programming covers some serious C topics, but is also generally educational and enjoyable.

You could introduce them to Knuth's writings in an easily-digestible way, like maybe having them read and implement the Easter date algorithm in Volume 1.

Maybe have them read [excerpts from?] something like Philip and Alex's Guide to Web Publishing and put together a small database web application.


Reading or watching Guy Steele's Growing a Language talk could be fun.

This is a good suggestion; it would be really helpful for students if I put together a "Recommended Talks" list as well.


The Hackers Dictionary by ESR?


If they already have some experience with high level languages, I would introduce them to K&R's C Programming Language. It does a good job of introducing some low-level topics, like pointers and memory management.

I also second the books that teach using Scheme, like SICP. I think learning Lisp and C introduces many important concepts.

Also, learning a web stack is very educational. Learning how a web application works (Internet protocols, server side code, databases, etc) taught me a lot.


what programming languages do you teach? I ask because, I remember now back to when I first really started trying to program, and I think it would have been great to get introduced to interesting code bases back then. So guess, I'm just looking back now and will recommend what I wish I had had, maybe some of it help:)

As a teen, I fumbled around for a while before discovering linux and open source and that good feeling you get when you download the src and start perusing and firing up your debugger. Having said that if you teach js, I'd highly recommend dojo, underscore, I guess most c /c++ might be too advanced but if not Webkit, Redis, and glib are clean fun code bases and dissecting Lisp / Emacs was a blast. As far as answering you actual question goes, I really liked Gödel, Escher, Bach back then, also thinking recursively by Roberts. The only "technical" book I enjoyed reading was Modern Operating Systems by Tanenbaum ( don't know what current editions are like, the roughly 2000-2001 version was great though). Its was simple, very clear, humorous, and a gives a great overview of how the os works.


I start people off in Python. But I want students who are serious about pursuing a CS degree to also be thinking about C, and thinking about the web stack - django, html, css, javascript, sql...

As a teacher, it was pretty powerful to discover linux as well. I love having linux computers around for students to use, and watching them realize they can be completely in control of their own machines.



Not a book, but a great resource.

http://train.usaco.org/usacogate

There are readings, and problems which increase in difficulty as you progress. Covers general CS topics such as algorithms and data structures.


SICP!

http://mitpress.mit.edu/sicp/

Or, a prettier version that was on HN some time ago: https://github.com/ieure/sicp


Neuromancer and Snow Crash always inspired me.




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

Search: