DEV Community

Discussion on: How to teach programming to my 10 years old nephew?

Collapse
 
drbearhands profile image
DrBearhands • Edited

AFAIK it's generally accepted that early programming should teach underlying concepts while being greatly engaging. For me that was turtle programming in primary school. Of course we're not in the 90's anymore so cooler tools exist.

There are a variety of games and tools that teach programming concepts:
scratch.mit.edu/
store.steampowered.com/search/?sor...
mommypoppins.com/coding-kids-free-...

Since he wants to make a game, UE4's graph-based editor might be a good way to go too.

One thing I would personally be wary of is the apparent insistence on Von Neumann architecture/imperative programming, but to my knowledge there is not much you can do about that and, for the moment, it makes sense for video games anyway.

EDIT: totally forgot, modding is a great place to start as well.

Collapse
 
drbearhands profile image
DrBearhands

After attending a meetup yesterday about, among other things, teaching fp to children, I would like to add a few resources:

  • LOGO is still a great tool
  • fractals are a great visual way to learn about recursion
  • The book mindstorms by Seymour Papert, Lego's Mindstorms was based on this book
  • sonic pi

I haven't tried any of these myself, they're all recommendations from someone who knows way more about teaching than I do.

There's also code.world but that was recommended by someone else.

Collapse
 
socratesdz profile image
Sócrates Díaz • Edited

I'm gonna check those games since he likes games so much. Thanks.

Collapse
 
vladmadorsky profile image
Vlad Madorsky

@drbearhands , another excellent resource to teach kids coding languages: codakid.com/kids-coding-languages/

You should add it to your list!

Collapse
 
vladmadorsky profile image
Vlad Madorsky

@drbearhands , another excellent resource to teach kids coding languages: codakid.com/kids-coding-languages/

You should add it to your list!

Collapse
 
kspeakman profile image
Kasey Speakman • Edited

Church! I mean, Alonzo Church. Yeah I also wish there were more resources to start kids with functional programming. The great thing about it is you can start rather simply (if presented that way), get a lot of value just from practicing immutability and referential transparency, and then later it surprises you with extremely reusable concepts based on provable math.

Collapse
 
drbearhands profile image
DrBearhands

I'm starting to think provable math should be at the basis rather than something to discover later. Show that composition of effects is not fundamentally different than composition of numbers as by e.g. addition or multiplication. I think that might give people a far better understanding early on about the usefulness of functional programming.

Thread Thread
 
kspeakman profile image
Kasey Speakman

I agree with this in general. However, it depends a lot on your target audience. Some audiences won’t survive a math based curriculum whereas they could survive a more procedural learning track, except with immutability and pure functions. Then later they can discover all this amazing reusability based on math goodness. Analogous to multiplication tables before algebra (before calculus).

Thread Thread
 
drbearhands profile image
DrBearhands

Maybe, but I think our view of math has been characterized far too much by stuffy classroom mathematics. I myself only started liking math after university.

Your analogy with multiplication tables and algebra is a good one. Here too I might be inclined to argue that learning algebra first might be better. Algebra expresses meaning, learning multiplication tables is just caching results.

Thread Thread
 
kspeakman profile image
Kasey Speakman

Both approaches probably have their place.

In my case, I am mentoring a middle school youth. She is smart, but I still don't think starting with category theory would be the right approach for our circumstance. Typing something and seeing it affect the screen is more likely to keep interest at this stage.

Functional programming could be great for either approach, but as you said, most of the learning resources are not geared for it. Which is unfortunate.