Ask HN: Are there any good “coding for kids” books?
Like most of you I learned to code as a kid with adult resources. But my children are nearly ready to learn to code and I am considering that maybe there could be some better resources available now. However most of the books I've seen that are made for kids are too simple and obfuscate important details. So, are there actually any good kids coding books?
58 comments
What age are they? Big difference between a 6 or 7 year old and a 13 year old!
I've got two children (8 & 11) and done lots of volunteering teaching programming to children (and teach on a computer science degree as well!). I think a lot depends on the age and what you want them to learn.
Considerations: Do they read fluently? How is their typing? What sort of things do they actually want to programme? What is it that you want them to learn? Are you going to sit down with them and go through the book or just leave them to it?
There are a lot of resources these days that aren't books too which may be better. There are lots of online 'lessons' if you look at e.g. Code Club or Hour of Code. You've got games like CodeCombat and Erase All Kittens. There are lots of programmable toys of the robotic variety. You can get them doing stuff with Microbits or raspberry pis - the SenseHat is quite fun for example.
Not a programming book, but my older son really enjoyed Computational Fairy Tales by Jeremy Kubica.
I also wouldn't be too put off by some things being made simple. In a sense as a parent, you are trying to motivate them as much as teach them. And as a programmer yourself, you are in a good place if you want to say to them 'actually it's a bit more complicated than the book makes out'.
I've got two children (8 & 11) and done lots of volunteering teaching programming to children (and teach on a computer science degree as well!). I think a lot depends on the age and what you want them to learn.
Considerations: Do they read fluently? How is their typing? What sort of things do they actually want to programme? What is it that you want them to learn? Are you going to sit down with them and go through the book or just leave them to it?
There are a lot of resources these days that aren't books too which may be better. There are lots of online 'lessons' if you look at e.g. Code Club or Hour of Code. You've got games like CodeCombat and Erase All Kittens. There are lots of programmable toys of the robotic variety. You can get them doing stuff with Microbits or raspberry pis - the SenseHat is quite fun for example.
Not a programming book, but my older son really enjoyed Computational Fairy Tales by Jeremy Kubica.
I also wouldn't be too put off by some things being made simple. In a sense as a parent, you are trying to motivate them as much as teach them. And as a programmer yourself, you are in a good place if you want to say to them 'actually it's a bit more complicated than the book makes out'.
Just wanted to say I was taught to program by a volunteer teacher in a youth club. I was ten years old. It changed the entire course of my life.
This work makes a difference!
This work makes a difference!
This gets at something I was wondering. I grew up on books and love them, but that's when they were the best means for transmitting static information. Programming strikes me as a dynamic skill. I wouldn't recommend anybody learn to ride a bike via a book, and I suspect that programming is similarly best learned mainly through doing.
Thinking back, even in the dark ages one of my gateways to programming was a programmable toy: https://en.wikipedia.org/wiki/Big_Trak
Thinking back, even in the dark ages one of my gateways to programming was a programmable toy: https://en.wikipedia.org/wiki/Big_Trak
My learning was all for play/toys.
I just wanted to tell people about anime and make weird things like site counters that used letters instead of numbers or guest books so that people who couldn't code/afford the internet time for chat rooms could still talk about cool stuff. It turned out I had a knack for it and later I liked to help with things like emulation and make game mods or web stuff for fandom communities.
I wouldn't have read a computer science book as a kid (and I was a VERY nerdy child who was a hyperlexic mental calculator). I agree that learning by doing is good, especially since when you run into a programming problem, you usually don't solve it by finding a book on the problem. So starting with projects also lets them practice problem-solving, which is a HUGE part of programming.
I just wanted to tell people about anime and make weird things like site counters that used letters instead of numbers or guest books so that people who couldn't code/afford the internet time for chat rooms could still talk about cool stuff. It turned out I had a knack for it and later I liked to help with things like emulation and make game mods or web stuff for fandom communities.
I wouldn't have read a computer science book as a kid (and I was a VERY nerdy child who was a hyperlexic mental calculator). I agree that learning by doing is good, especially since when you run into a programming problem, you usually don't solve it by finding a book on the problem. So starting with projects also lets them practice problem-solving, which is a HUGE part of programming.
Maybe not what you asked for :-) but.. I wish I'd had The AWK Programming Language when I was 10 or so. Chapter 1 covers the essentials in a way a child could appreciate, I think. And already you can do very useful stuff. From there the step up to a proper, general language is not a big one. If there's a better-written programming book of any kind, I'd love to see it. There's so much to learn, not just from the content, but from the masterly, friendly way it's presented. And it goes as far as one could reasonably wish! instead of ending at the basic level where it started.
https://archive.org/details/pdfy-MgN0H1joIoDVoIC7
Dr. Johnson used to condemn me for putting Newbery’s books into children’s hands. “Babies do not want,” said he, “to hear about babies; they like to be told of giants and castles, and of somewhat which can stretch and stimulate their little minds.” When I would urge the numerous editions of Tommy Prudent or Goody Two Shoes; “Remember always,” said he, “that the parents buy the books, and that the children never read them. – Mrs Thrale, Anecdotes of the Late Samuel Johnson
https://archive.org/details/pdfy-MgN0H1joIoDVoIC7
Dr. Johnson used to condemn me for putting Newbery’s books into children’s hands. “Babies do not want,” said he, “to hear about babies; they like to be told of giants and castles, and of somewhat which can stretch and stimulate their little minds.” When I would urge the numerous editions of Tommy Prudent or Goody Two Shoes; “Remember always,” said he, “that the parents buy the books, and that the children never read them. – Mrs Thrale, Anecdotes of the Late Samuel Johnson
Hah, it would be pretty funny to give this to a child, but you know what? They'd probably love it if they're leaning towards computers anyways. I know I would have read this front to back if someone gave me this - my first programming book was Visual Basic Express Edition Starter Kit 2005, handed down to me by my dad in 3rd grade.
On the other hand, I now have a new book to read!
On the other hand, I now have a new book to read!
On second thoughts, maybe Chapter 1's tabulating income data wouldn't be the most exciting thing for a kid.. But, well, AWK is such a useful tool, it's never too early to learn!
I have strong personal belief that the trading card game Magic: The Gathering is a perfect introduction to programming
It’s got state, conditonals, loops, stacks, maybe even concurrency with multiplayer. All wrapped up in a fun game with cool art and lore.
If you can resolve a deep stack in Magic, that’s pretty much like keeping track of procedural code in your head.
Downside is it can get very expensive.
It’s got state, conditonals, loops, stacks, maybe even concurrency with multiplayer. All wrapped up in a fun game with cool art and lore.
If you can resolve a deep stack in Magic, that’s pretty much like keeping track of procedural code in your head.
Downside is it can get very expensive.
That's fascinating, I never made that connection having never played magic somehow but the connection seems so obvious now.
My two boys play Magic and I definitely agree that they've learned a lot from it. I think it does need a parent or other adult who plays to teach them (and who presumably has their own decks already from the expense perspective!). We play a lot of Commander. They've also really enjoyed reading some of the stories based on the lore.
The children's publisher Usborne has many titles on computers and coding:
https://usborne.com/gb/books/browse-by-category/science-and-...
The official Raspberry Pi magazine website make all their issues available free to download as PDFs. Each issue is full of tutorials. (Obviously requires a Raspberry Pi) :
https://magpi.raspberrypi.com/issues
https://usborne.com/gb/books/browse-by-category/science-and-...
The official Raspberry Pi magazine website make all their issues available free to download as PDFs. Each issue is full of tutorials. (Obviously requires a Raspberry Pi) :
https://magpi.raspberrypi.com/issues
> Like most of you I learned to code as a kid
I didn't start learning to code until I was 27. I think probably the most compelling reason to teach your kids to code is so that you can work on projects with them and have that shared interest.
But, of course, that could backfire. My dad was interested in antiques, opera, gothic architecture, etc and tried to force that down my throat. I couldn't stand it and that made me rebel hard against it.
Your kids might just want to be different people than their parents, or maybe they really are interested in the things you're interested. I don't know. I say try to expose them to a bunch of different things, not just what you like. Maybe they'll make great software engineers, or maybe they want to become marketeers or lawyers or designers. If you encourage good social, communication, and learning skills, they'll be successful in whatever career path most interests them.
Sorry, I get a little uppity when people start talking about teaching kids to code.
I didn't start learning to code until I was 27. I think probably the most compelling reason to teach your kids to code is so that you can work on projects with them and have that shared interest.
But, of course, that could backfire. My dad was interested in antiques, opera, gothic architecture, etc and tried to force that down my throat. I couldn't stand it and that made me rebel hard against it.
Your kids might just want to be different people than their parents, or maybe they really are interested in the things you're interested. I don't know. I say try to expose them to a bunch of different things, not just what you like. Maybe they'll make great software engineers, or maybe they want to become marketeers or lawyers or designers. If you encourage good social, communication, and learning skills, they'll be successful in whatever career path most interests them.
Sorry, I get a little uppity when people start talking about teaching kids to code.
To your point on working on projects and having a shared interest with your kid. My dad is a doctor and has been learning to code for the past few years for fun and to build tools to use in his work. I'm a highschool student and have been learning to code alongside him. I'm a bit more advanced than he is because I have more free time to learn so when he gets stuck I help him out. Helping him solve bugs in his code is really great bonding time and I highly recommend doing something like that with your child / parent.
When I was a kid, I learned to program in part from Ted Felix's QBASIC tutorial: http://tedfelix.com/qbasic/
Pretty outdated, of course, but still a surprisingly accessible way to learn.
Pretty outdated, of course, but still a surprisingly accessible way to learn.
Here are a few books on Logo: https://turtlespaces.org/books/
In particular, The Great Logo Adventure is great for kids: https://courses.cs.duke.edu//cps108/spring00/projects/slogo/...
In particular, The Great Logo Adventure is great for kids: https://courses.cs.duke.edu//cps108/spring00/projects/slogo/...
You can call me old school, but you can teach some basic to kids (Print statements, basic syntax), however, I would not start teaching concepts even like loops, or algorithms, until the child has basic grasp of algebra. In this case the math helps but it's not the math, but to ensure the child has organization, and ordering skills.
Of course a book about good or planning/organizing I think might make a great starter for a kid you want to become a good programmer. I have seen some a few already burn out (Even in childhood, often it's an adult pressure getting these kids into coding) however, without the organizational skills learned first, when things get even a little complex, the kids buried or set back by the lack of some formal reasoning or lack of organizational skill.
Of course a book about good or planning/organizing I think might make a great starter for a kid you want to become a good programmer. I have seen some a few already burn out (Even in childhood, often it's an adult pressure getting these kids into coding) however, without the organizational skills learned first, when things get even a little complex, the kids buried or set back by the lack of some formal reasoning or lack of organizational skill.
Most of the effort to date in the schools would disagree 100% with this. Teaching loops and algorithms actually improved math performance, as early as 1st grade. Teaching troubleshooting skills improved performance across all subjects, because it changed the attitude from "I was wrong" into, "Lets figure out where we went wrong."
Holy moly. It never occurred to me that starting programming young would cause that attitude. But that's a deep part of how I deal with the world and I started programming as a kid, so it totally makes sense in retrospect. TIL!
It's not a book, but check out things like Swift Playgrounds, Redstone in Minecraft, and Roblox (for Lua). Otherwise, work on projects with them.
I'm a child who learned to code with adult resources as well, and the only reason I stuck with it is that I was making things. Stupid, silly things, but it hooked me for life. I also liked the social aspect: I was a rural child who had nobody else around who liked nerd stuff other than my parents, and I was more than willing to learn to code if it meant I could have friends and not be bored like I was in school.
I can't recall ever using a book, actually. It was mostly documentation + discussions. I'd actually say it might be better to take them through projects and when you get stuck, show them how to look up the answer to their problem. That's what devs do in the real world.
I'm a child who learned to code with adult resources as well, and the only reason I stuck with it is that I was making things. Stupid, silly things, but it hooked me for life. I also liked the social aspect: I was a rural child who had nobody else around who liked nerd stuff other than my parents, and I was more than willing to learn to code if it meant I could have friends and not be bored like I was in school.
I can't recall ever using a book, actually. It was mostly documentation + discussions. I'd actually say it might be better to take them through projects and when you get stuck, show them how to look up the answer to their problem. That's what devs do in the real world.
Yes, the Swift Playgrounds that just came out looks very nice. I've only glanced at it so far, but the tutorial material appears to be very well done.
One new feature is that it lets you build apps and submit them to the App Store with just an iPad. No Mac required.
One new feature is that it lets you build apps and submit them to the App Store with just an iPad. No Mac required.
The best are still these Usborne books:
https://www.rockpapershotgun.com/amp/usborne-coding-books
Nothing else comes close. Just install some open source version of Basic and you’re good to go.
https://www.rockpapershotgun.com/amp/usborne-coding-books
Nothing else comes close. Just install some open source version of Basic and you’re good to go.
You can explain coding in a half hour without a book. Just walk through the steps to accomplish some everyday task, like making a cup of tea.
Programming is just steps to do a task and a computer is a thing that can repeat those steps - you don't need a book to explain it - I just did it in a few sentences.
The only proper way to learn something is for it to be useful in your life. If there are games or opportunities to modify games using some scripting languages - kids will want to learn it.
Books are not fun for most kids, so you're going about it wrong - if you can't make it fun for them without books, you've already failed.
Books are good for additional information and a reference, after you've been taught something by a good teacher. They are a bad tool for learning just about everything.
Programming is just steps to do a task and a computer is a thing that can repeat those steps - you don't need a book to explain it - I just did it in a few sentences.
The only proper way to learn something is for it to be useful in your life. If there are games or opportunities to modify games using some scripting languages - kids will want to learn it.
Books are not fun for most kids, so you're going about it wrong - if you can't make it fun for them without books, you've already failed.
Books are good for additional information and a reference, after you've been taught something by a good teacher. They are a bad tool for learning just about everything.
I did a few workshops coding LEGO parts at around age 10. We did stuff like turning lights on- and off or measuring the temperature. Maybe a good place to start, as it connects to the real world. I imagine LEGO has more interesting parts these days. Like robots or drones.
Scholastic had a mash-up between choose your own adventure and programming in the 80s. They were awesome. In one chapter the program decided your fate. There were "two" outcomes. You were prompted to enter a number and then a countdown appeared. Reading the code, if the input was even, X happened. If the input was odd, Y happened. The trick was to realize the code allowed you to input 0 which was the desired path forward.
https://en.wikipedia.org/wiki/Micro_Adventure
https://en.wikipedia.org/wiki/Micro_Adventure
A web version linked from the wiki page:
https://auri-microadventure.azurewebsites.net/
https://auri-microadventure.azurewebsites.net/
Not a book but one of my first exposures was the grey BigTrak:
https://www.techagekids.com/2015/10/the-bigtrak-programmable...
https://en.m.wikipedia.org/wiki/Big_Trak
Probably informed my later forays into BASIC. A new one has been in development but not shipped IIRC. See XTR in Wikipedia link.
https://www.techagekids.com/2015/10/the-bigtrak-programmable...
https://en.m.wikipedia.org/wiki/Big_Trak
Probably informed my later forays into BASIC. A new one has been in development but not shipped IIRC. See XTR in Wikipedia link.
I created a card game to introduce SQL. Not exactly coding, but if interested check out https://rowsandtables.com
How to Design Programs
https://htdp.org/2021-11-15/Book/part_prologue.html
Take a quick scroll through, it features programming with pictures which is much more useful and motivating for a beginner than lines of text.
First impressions matter. So avoid excessive keywords and syntax that only scares beginners into thinking programming is a voodoo-magic-minefield. I'm looking at you, Python.
https://htdp.org/2021-11-15/Book/part_prologue.html
Take a quick scroll through, it features programming with pictures which is much more useful and motivating for a beginner than lines of text.
First impressions matter. So avoid excessive keywords and syntax that only scares beginners into thinking programming is a voodoo-magic-minefield. I'm looking at you, Python.
Double Fine released a really fun game where you have to hack the underlying code to solve the puzzles. It's a good introduction to programming.
https://www.doublefine.com/games/hack-n-slash
After that, I'd point them at Pico-8 https://www.lexaloffle.com/pico-8.php
After that, I'd point them at Pico-8 https://www.lexaloffle.com/pico-8.php
All these recommendations seem great, Im kind of wondering if anyone has any thoughs on coding books / resources for a 1-2 year old.
My kid loves books but not much out there in toddler programming related board books. Also been pushing duplo legos and play dough which seem somehow programming related, no idea why. And someone gave him a linux penguin (tux) plush.
Other than that not sure where to go next. Maybe hes ready for a pi but I dont know about any special linux distros for kids.
My kid loves books but not much out there in toddler programming related board books. Also been pushing duplo legos and play dough which seem somehow programming related, no idea why. And someone gave him a linux penguin (tux) plush.
Other than that not sure where to go next. Maybe hes ready for a pi but I dont know about any special linux distros for kids.
ABC++ [1] is a cute book that my wife, fourth/fifth grade teacher even takes to her school for ‘hour of code’ each year to show that there are different programming languages.
The baby loves science [2] series is great.
When my daughter was younger I tried reading Lauren Ipsum to her but she didn’t sit still so we read something else. Some point later we were able to read through it and she was excited to hear the chapter the next night.
I only have a data point of 1, but it doesn’t matter what, just read to your kid. If you have access I’d recommend going to the library and getting a variety of books, about whatever they show interest in at the moment. I think I’ve read probably every animal book in the kids section of our library. Our daughter is in Kindergarten this year and they have a STEM class where they are doing hour of code and I’m looking forward to exploring with her as she shows interest and she’s very excited about it. Every kid is different and has different interests and none of us have an opportunity to raise enough kids to really be considered an expert, so take this for what it’s worth.
[1] https://inedo.com/abc [2] https://www.penguinrandomhouse.com/books/566615/baby-loves-c... [3] https://nostarch.com/laurenipsum
The baby loves science [2] series is great.
When my daughter was younger I tried reading Lauren Ipsum to her but she didn’t sit still so we read something else. Some point later we were able to read through it and she was excited to hear the chapter the next night.
I only have a data point of 1, but it doesn’t matter what, just read to your kid. If you have access I’d recommend going to the library and getting a variety of books, about whatever they show interest in at the moment. I think I’ve read probably every animal book in the kids section of our library. Our daughter is in Kindergarten this year and they have a STEM class where they are doing hour of code and I’m looking forward to exploring with her as she shows interest and she’s very excited about it. Every kid is different and has different interests and none of us have an opportunity to raise enough kids to really be considered an expert, so take this for what it’s worth.
[1] https://inedo.com/abc [2] https://www.penguinrandomhouse.com/books/566615/baby-loves-c... [3] https://nostarch.com/laurenipsum
Thats all really helpful / fantastic advice for a new dad. Thank you so much!
I guess you are joking.
There is an electric train for duplo lego, maybe that is a little bit like programming when you plan the tracks.
There is an electric train for duplo lego, maybe that is a little bit like programming when you plan the tracks.
Definitely not joking! But I did see that duplo train out there and was curious.
There is this one:
https://github.com/jackdoe/programming-for-kids
https://github.com/jackdoe/programming-for-kids
How about games? Something like while True: learn() is really good at explaining the high level
Minecraft education edition (and even general Minecraft) is good at the lower level.
Minecraft education edition (and even general Minecraft) is good at the lower level.
I’d recommend https://nostarch.com/catalog/kids
Not a book, but you might like to have a look at https://projects.raspberrypi.org/en/paths
We're adding more paths soon, including a More Python path and an Introduction to Unity path.
The paths build up skills and then build up independence.
Kids can start with Scratch then move on to Python etc/
We're adding more paths soon, including a More Python path and an Introduction to Unity path.
The paths build up skills and then build up independence.
Kids can start with Scratch then move on to Python etc/
For kids 5-7 there are Scratch JR coding cards that are nice. I am working on a scratch jr course for my kids.
For kids 8-12 with Scratch I think it is better to actually clone ( remix ) projects to figure out how they work. There are a few books out there, but they don’t really teach the concepts. I think finding short videos on YouTube is a better approach.
For kids 8-12 with Scratch I think it is better to actually clone ( remix ) projects to figure out how they work. There are a few books out there, but they don’t really teach the concepts. I think finding short videos on YouTube is a better approach.
more than books and materials, I've found hard to find actual software that could be a good first step. I really miss BASIC and Hyper Card. The problem is that while you could still get your kids to code BASIC and play in actual hyper card, they don't represent the "state of the art". At the time, BASIC and HyperCard could get you really close to what was being offered over the counter as paid software.
Today, the barrier is so much higher, so while you could still get them to play in python (not ideal and really complex compared to BASIC) and maybe scratch, there's a really visible gap of what they can achieve without significant effort and steep learning curve.
I'm a bit more convinced that maybe going the route of scripted minecraft or roblox or even Horizon if you are into VR is probably the best way to get kids into programming.
Today, the barrier is so much higher, so while you could still get them to play in python (not ideal and really complex compared to BASIC) and maybe scratch, there's a really visible gap of what they can achieve without significant effort and steep learning curve.
I'm a bit more convinced that maybe going the route of scripted minecraft or roblox or even Horizon if you are into VR is probably the best way to get kids into programming.
Maybe a sidetrack, but for someone who only tried ~2h Minecraft and still doesn’t “get it” , do you have any links to get into it for this purpose?
I would like to do stuff like that but don’t want to spend dozens of hours fooling around just to get the basics.
I would like to do stuff like that but don’t want to spend dozens of hours fooling around just to get the basics.
Buy them a pi 4 and “Getting started with raspberry pi”. It has some great simple python programming for games.
Get the physical book - “25 Scratch 3 Games for Kids: A Playful Guide to Coding”.
Graphical way to program.
My eight year old was making games in minutes. And was ‘getting’ it.
i.e. https://www.amazon.com/dp/1593279906
My eight year old was making games in minutes. And was ‘getting’ it.
i.e. https://www.amazon.com/dp/1593279906
There is the world of Hello Ruby [0], book(s) and other learning material translated into 20 languages. I think they are for younger kids. There is also some material for teachers.
[0]:https://www.helloruby.com/
[0]:https://www.helloruby.com/
As a starter, I'd love to read these. I bet they explain stuff way better than some paid tutorials
Computational Fairy Tales [1] introduces a lot of complex concepts in a readable way.
[1] https://computationaltales.blogspot.com/p/book.html
[1] https://computationaltales.blogspot.com/p/book.html
Not really a book, but maybe there is something valuable for you:
https://kidscancode.org
https://kidscancode.org
Not a book but I highly recommend Construct3 for kids wanting to do games programming. Also CodeCombat as mentioned elsewhere in this thread,
Pico 8 should be a good start.
This seems like a good modern alternative to a C=64, but it's not free and VICE is.
not a book, but I like https://code.org/
this revealed my kid did not get the concept of "turning left" on a 2d grid
they put a lot of effort into making it relevant/exciting for a lot of kids. A lot of it is turtle like, in describing the steps to move a famous character, but much of it can be free form and the use of blocky/JS allows for an interesting intersection. Before my eldest could comfortably just read, the block interface was intuitive enough to piece together the ideas. Blocky is pretty neat.
Hello Ruby
K&R