| A lot of college introductory classes use python as a learning language, and I think that's a good thing. I would suggest heading to the library (whether public or high school's) and taking out a book on Python. There are a lot of online books, but I find that having a physical book you're learning from is a worthwhile experience. There's less distraction, and watching that bookmark move from the beginning to the end of the book is very satisfying. Also, I thnk it's extremely important that you be there to guide him, and foster inquisitiveness, as that's a very key property of some of the greatest computer scientists and hackers. I will echo Igas's suggestion also -- it would be great if he had something he wanted to build to channel this urge into. Even dinky little programs like text-based calculators feel impressive when you're starting out, and get you a feel for programming quickly. When he wants to cut his teeth on stuff that is "real world useful" you can show him a framework like Flask (which is wonderfully minimal), and have him make a web server on localhost. That would be a perfect segue into web tech (HTML/JS/CSS). That might also be a good time to introduce a second language, like Ruby (which is similar enough to python) to show how similar languages can be to each other. I would say this sets you up to introduce the most important parts of CS: the data structure & algorithmic underpinnings. This is the stuff that sticks with you for a very long time and is always useful, no matter the language. This might be wishful/meaningless thinking, but you could also introduce him to SICP classes by abelson and sussman. I say this for a few reasons: 1. Lisp is simple, yet powerful (they show this) 2. The realization that very little about computer science is actually "new" thought 3. Introduction to the plethora of college-level courses available for free, and getting used to being in charge of your own education (but using a more traditional medium) |