

Ask HN: reading list for high school students interested in CS? - japhyr

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.<p>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.<p>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.<p>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?
======
tjr
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.

~~~
japhyr
_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.

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

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

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

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

------
sun123
[http://www.amazon.com/Code-Language-Computer-Hardware-
Softwa...](http://www.amazon.com/Code-Language-Computer-Hardware-
Software/dp/0735611319/ref=sr_1_1?ie=UTF8&qid=1344973287&sr=8-1&keywords=the+code+by+charles)

------
vitus
SICP!

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

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

------
ttrashh
Neuromancer and Snow Crash always inspired me.

