Ask HN: Programming resources for a 9th grader?
I was chatting with one of the moms at my son's baseball game and she asked my advice for her 9th grade cousin. The kid is stuck for a semester learning FORTRAN from a wizened teacher that believes it is an absolute essential component of child's introduction to computer science.
This is how you make kids hate programming. No?
I am assembling a list of resources to forward to this kid, and wanted to get your input.
Where do you think he should start digging, and what should he do after that?
9 comments
[ 2.9 ms ] story [ 32.3 ms ] threadThere's also Scratch from MIT, but the IDE doesn't feel as polished: http://scratch.mit.edu/
Edit: One of the nice things about Small Basic is that they are also putting together some teacher curriculum and lesson plans. Very helpful, especially for home schoolers: http://www.teachingkidsprogramming.com/ http://computerscienceforkids.com/MicrosoftSmallBasicTutoria...
No affiliation with any of these companies or sites.
HTML might be good in this regard. Everyone hold your horses -- I know HTML is not a real programming language (no variables, conditions, control structures, etc.), but HTML is easy enough to understand and can teach an individual about the rewards that lie in programming, and HTML is a vital skill for most prospective programmers -- let's face it that most people who want to be programmers are not fantasizing about a job in the basement of an insurance company writing business logic, but creating exposed, useful, and beautiful software for others to use and enjoy. In many modern cases this falls back to websites.
You'll be teaching the kid some of the basic principles (a bit of perspiration and study = pride and rewards) that keep programmers going. As you continue to nourish this principle with progressively advanced topics, ensuring that you are almost always making something at least vaguely useful, the new programmer will develop a passion for experimentation and learning that is absolutely required to be a decent programmer. From here, he'll probably take care of himself and use you only as a reference material when necessary.
On your second paragraph, I disagree. HTML doesn't have the immediate feedback of "I can write something that makes my life better" in the same way that, for example, Python does. Python lets you write something you can use for your benefit six months in. Something that will actually save you significant amounts of time in some cases. There is a power and a promise there that I don't see being matched in HTML. HTML is made firstly for others to view on browsers, while the first Python script you write can be done just to make your life easier. "Scratch your own itch."
For your third paragraph, I am again in complete agreement as a relatively new(2nd year in high school) programmer.
I assume that the kid is on Windows. Using a UNIX-like system (Linux, BSD) is definitely a good way to understand computers better, especially because of the large amount of programming libraries available often by simply running one command. It's not required of course, but it might help him/her. Yet again, it might not. :-)
Once they've learned the dynamics of Python (or other) setting up a GitHub account might not be a bad idea.