Ask HN: reading list for high school students interested in CS?
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?
10 comments
[ 5.4 ms ] story [ 34.0 ms ] threadReading 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.
This is a good suggestion; it would be really helpful for students if I put together a "Recommended Talks" list as well.
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.
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.
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.
http://mitpress.mit.edu/sicp/
Or, a prettier version that was on HN some time ago: https://github.com/ieure/sicp
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.