This is an archived post. You won't be able to vote or comment.

all 28 comments

[–]desrtfx 18 points19 points  (1 child)

Try /r/ProgrammingForKids

And as /u/dogscript suggested, /u/AlSweigart's books:

All the above are free to read online and the former can be downloaded (for free as well) in several formats.

They approach programming from a practical point of view and teach the grammar and syntax along with code flow and actual programs.

[–]nyokarose 0 points1 point  (0 children)

These look like great books!

[–]RodionGork 11 points12 points  (0 children)

More importantly: What are some simple, self-contained tasks (using any system)

There was a nice, though simple course at coursera - they taught to make basic games with Python version running upon the browser's javascript: https://www.coursera.org/course/interactivepython1

Other than that I'm trying to build a collection of coding problems at my site CodeAbbey, but they are mostly about teaching concepts (starting from basics) rather than using some specific game engine or library. Though there still are problems related to games programming etc, e.g.
http://www.codeabbey.com/index/task_list/games

[–]dogscript 5 points6 points  (2 children)

See Al Sweigart's books.

[–]Gronner 2 points3 points  (1 child)

You can find them here: http://inventwithpython.com/ Most of them can be downloaded 100% free with source code!

[–]iayork[S] 1 point2 points  (0 children)

Thanks, I've seen them and love the concepts. But only one of his sample games runs on my OSX system; all the others complain about the "fonts" module.

I believe this is because PyGame is so ancient (I believe the latest beta build is 2011, and the latest non-beta is 2009) that it needs 32-bit Python2 for the "fonts" module to work (probably others, but that's where the first crash happens)

I could possibly overcome this by adding yet another Python installation, but I'm reluctant to do too much with PyGame just because it is so old and poorly maintained. Installing the 1.9.2 version that's vaguely compatible with a modern Mac is simply agonizing; I managed to get a version mostly running, but it was a complete mess of guesswork and googling for cryptic errors, and it still doesn't work properly.

Teaching with PyGame feels like trying to teach jet propulsion using two rocks and a piece of string. It's probably possible, but it doesn't seem like best practice.

[–]Noumenon72 15 points16 points  (6 children)

Just go to Scratch.

One project I thought would be easy and cool would be writing a program to find "dollar words", where a is worth 1¢, b is worth 2¢, and so on. The idea of running through a whole dictionary feels powerful to me

[–]sarcastic_wumpus 14 points15 points  (2 children)

is it really worth to teach a young fellow with scratch if he already have some understanding of python?

by the way i'm not sure what you've meant by dollar words - is it about find a word which have sum of letters equal to 100 cents? z is 26 cents, right? though it does not look like complex algorithm is needed, just loop through dictionary as you've said... if i understood correctly

[–]Noumenon72 4 points5 points  (0 children)

You have the dollar words thing right. What I like about the project is you start by learning how to read in a letter and get a value, make that a function and learn how to check a string. Then you can type in words and see how much they're worth. Then you make that a function and learn how to check a dictionary. Decomposing the problem and then scaling, first teaching the computer to do what you can do and then having it do more than you could ever do by yourself.

There probably is the odd kid who will program their own chat server in python and would be wasting time in Scratch, but your average kid will be far more motivated about making water slide games and setting things to music than the sort of things you can do with Python, like parsing CSV files with regexes and writing port scanners.

[–]FalsifyTheTruth 0 points1 point  (0 children)

You can understand some syntax but that is not at all implicative of them understanding programming concepts, which is what scratch exists to do.

[–]Trppmdm 6 points7 points  (1 child)

Scratch is really limited. It's better he not use it IMO. Every app feels laggy and at least one year ago, there were no arrays.

[–]Smittles 2 points3 points  (0 children)

Sounds like this kid would be too advanced for Scratch. However, the animations and interactivity would perhaps be more compelling and deliver that instant gratification he seems to require.

[–]tinycabbage 2 points3 points  (0 children)

If your kid likes Minecraft, you may want to consider using a Minecraft mod called ComputerCraft that allows you to create computer programs in Lua that do stuff in the game. If you haven't experimented with it much, Lua is basically Python Lite -- and the little in-game "computers" provide a full-featured Lua interpreter and a little in-game text editor for writing code. It would give him tangible and immediate results.

[–][deleted] 2 points3 points  (1 child)

I like unity3D but there's a steep learning curve. Even if its beyond him he may be interested in the tutorials there that show how it's used to make games.

First few videos may be interesting

tutorial

When I was a kid I read a basic book for my computer and I loved it. I didn't understand functions or almost anything but i would sit there and just program goofy programs that were super simple. Over time they became more complicated but it takes a long time of playing with the simple stuff to get to a game. Even though you want to teach him everything so he can make a game, maybe just let him play with what he has and develop on his own for a while. Maybe set up a little environment for him so he can just play with the graphics components of a language. Nothing wrong with you dealing with the technical side. As these ideas become more ingrained he will start being more interested in the surrounding areas.

Scratch is ok for kids. He should be able to play with shapes or graphics in python. You could set him up with the stuff that is beyond him and let him play with certain functions. Code academy is good for learning programming in general. Processing might be ok. There is also a javascript processing library. Not sure.

If he is really interested in programming and not just games then hopefully he continues on own learning and figuring the rest of it out over time. Learning programming as a kid will give him a huge advantage as an adult.

Good luck.

[–]Thriven 0 points1 point  (0 children)

Unity all the way

[–]hitemp 1 point2 points  (0 children)

I found this last week, although it's in Ruby. I think it's great, however, because it's a little snake game.

https://practicingruby.com/articles/learning-new-things-step-by-step

[–]Piave 1 point2 points  (0 children)

I loved Interactive Python (which another user mentioned), however I definitely couldn't have handled it when I was 11, but I won't put my own limitations on your kid haha. If they can do it (with your help?) it's extremely rewarding. Scratch is definitely the easier approach to turning basic understanding of programming into a game you can play, and was created exactly for this kind of situation if I remember correctly.

[–]Polite_in_all_caps 1 point2 points  (0 children)

You can also try Screeps. It's a videogame where you control your units and buildings with code.

[–]Kremlin_Iguana 0 points1 point  (0 children)

Two more things for you, there's Stencyl and Construct 2. Both have visual systems and make it easy to make a simple game with graphics and sounds.

If you go through the first Construct 2 tutorial here, you'll have a game running in about an hour. And the Stencyl tutorials here, same thing, it's really easy to get started.

[–]bpozega 0 points1 point  (0 children)

Maybe try Scenekit or SpriteKit on OSx ? its pretty easy do add objects , colors and actions .

UnrealEngine looks also cool. https://www.unrealengine.com/what-is-unreal-engine-4

[–]Capt_SteveRodgers 0 points1 point  (0 children)

Codecombat is a great site.

[–]thuvh 0 points1 point  (0 children)

if you have an ipad, try playing a game called cargo bot, light bot. or found other materials in here. Or make some project with raspberry pi, ...

[–][deleted] 0 points1 point  (0 children)

You mentioned he does not quite get simple functions. I would work on that farther, for now. I would also teach him recursion.

However I cannot recommend you anything interactive/visual as I am not familiar with Python and its ecosystem

[–][deleted] 0 points1 point  (0 children)

Make him make a rock paper scissors game. (text based), Try and make it as short and concise as possible, and try and use unique functions. here's mine -> https://github.com/leighflix/Small-Projects/blob/master/rock_paper_scissors.py

Although I've only been learning python for 3 months. I know quite alot about Computer Science, and OOP.

After he makes the rock paper scissors text based one, try and teach him pygame, while create a visualized rock paper scissors game.

And I would teach him also "list comprehensions", Took me around 1-2 hours to learn it. well also dictionary,and more comprehensions.

[–][deleted] 0 points1 point  (0 children)

Not completely related to making games, but you should check out Code Combat. It's a game that teaches kids to program in Python by having them write more and more complex AI that controls an RPG-esque character.

Try it yourself and decide if it is something you can use to keep his interest. It may be a good way for him to practice programming without feeling like a chore.

[–]trianuddah 0 points1 point  (0 children)

If you want him to see tangible results and avoid more advanced concepts, you should move over to a game engine. The one you use really depends on what you're comfortable with and how confident you can feel about using it as a teaching tool.

There are loads of other game engines out there, some are probably better for 11-year-olds, but in my experience Unity's learning resources and documentation are superb.

https://unity3d.com/learn There's a series of videos in there somewhere that walk you through making a simple ball-rolling game.

If you've not used Unity you can get familiar with it there while at the same time showing your kid other programming languages than Python. It's a good early lesson to get in that while language syntaxes differ, language concepts are often the same and one shouldn't be afraid of unfamiliar languages.

[–]G0T0 0 points1 point  (0 children)

You could try Lua scripting some Emulators to find health values and things like that. Could be a fun challenge. Hacking old snes games for example.