4 ms·
What I find makes teaching programming in JS challenging is that, by its very nature, there is a lack of a single canonical resource that you can go through to
by ChicagoBoy11 10y ago
What I find makes teaching programming in JS challenging is that, by its very nature, there is a lack of a single canonical resource that you can go through to build out your understanding from start to finish.
This isn't to say that such resources don't exist, but the fact that Javascript is the language of the web will simply make it impossibly difficult to follow a nice coherent pattern and you/the child will instead inevitably slowly drift to other things, and the risk is moving onto other concepts before the necessary scaffolding is in place and before they have a firm grasp of basic programming principles. Since the "web" is right there, it will be hard to fight the urge to start to do "engineering" while the focus should be on basic cs and programming concepts.
My advice (former school administrator) therefore is to teach programming to a kid using a canonical resource that they can use as a bible, but one also that will give them the freedom to build interesting things that they can share with others. I think Matthias Felleisen's HTDP is a fantastic book. You simply can't beat it when it comes to talking about patterns, design recipes, and overall how to test and think about an algorithm. And while the syntax may be challenging at first, functional programming and LISP in general actually offers less of a mental leap for kids who are used to algebraic expressions and function composition.
If this is a gifted 10-yr old, HTDP with some adult guidance will offer you the best bang for your buck long term. Some of the projects at the end even involve networked games, so there will be plenty there to motivate a hungry youngster.
- mwcampbell 10y agoThanks for sharing your perspective and advice. What do you think of Pyret (http://www.pyret.org/ http://www.pyret.org/) and the accompanying textbook (http://papl.cs.brown.edu/2015/ http://papl.cs.brown.edu/2015/)? That should meet your criterion of a canonical book to work through. And that book is written by one of the authors of HTDP. But Pyret has a more conventional syntax and runs in the browser.
- ChicagoBoy11 10y agoAshamed to admit I don't have any familiarity with it! I can vouch for other content of Shriram's that I came across, most notably some of his labs for his CS class at Brown -- they are absolutely awesome. So, I've got a feeling this is a prob. also an excellent book. EDIT: I forgot to add this: I mentioned that the syntax is challenging to kids at first BECAUSE there are so few rules, there is quite a bit they have to keep in their head as they write even very simple programs. You have to very quickly internalize the idea of function composition or else you are stuck, and that may be challenging for a young child at the beginning. But, at the same time, I think this is also a huge STRENGTH of the syntax. If he/she isn't getting this, it is pretty obvious and you simply cannot go anywhere until this happens, which isn't necessarily a bad thing. And, once they grasp this concept, then it is actually extremely easy because there aren't really any other syntactical rules to memorize and keep in order! This did require a lot of focus of kids, but I think there was something reassuring in the fact that they felt confident they understood all of the necessary principles of how the language was working, and that if they experienced issues, it was either in their own logic or in chasing some rogue parens. YMMV
- Beanus 10y agoWhat makes a canonical approach ideal? In my experience, there are few jobs worth having that provide a bible. I can see that a bible would be a convenient teaching aid, but it misses a great opportunity to teach research skills as well as critical thinking and discretion. Please let me know if I'm way off base.
- ChicagoBoy11 10y agoThe most valuable thing you could give a young learner is a solid foundation upon which to scaffold future learning. You are absolutely correct in saying that research skills and discretion are hugely important and valuable. However, someone who hasn't yet build a solid foundation of understanding will have a VERY hard time assimilating content he researches into a coherent mental model of how everything fits together. Therefore, my advice to begin with a single canonical resource is that this increases the likelihood that someone's introduction to this stuff will be coherent and well-reasoned, and will introduce him/her to solid fundamentals. As someone who has been involved with teaching kids and coding, it is unfortunately very much the norm that "coding" classes devolve quickly into copy and paste exercises, and the reason for that is that is that kids' gap in understanding ends up simply being replaced by pattern-matching. With programming, you have so many competing motivations/factors -- what you want to build, what you are learning, why you are building/learning, etc. -- that it becomes quite challenging to juggle everything coherently. I've always favored a single canonical resource to start because, more than anything, it is a way to drown out that noise. If you pick a good book, there is a rationale behind the order topics are introduced and there is reason to the increasing complexity and difficulty of the exercises presented in the book. If you hop around doing different things, you massively increase the chance that there is some basic concept you won't learn and that you will start creating an improper mental model of how things work. And, without this canonical resource, you may have a really hard time seeing that the reason you are struggling is because you lack some basic understanding. So, I agree with you that there are no jobs worth having where a "bible" is provided; but I think that a learner -- and especially a novice learner -- greatly benefits from a resource like that to ensure that they have solid fundamentals onto which they can then graft other knowledge they seek out themselves.