I started my 9 year old daughter with my revised Python curriculum today. The results were very good. She was able to accomplish these tasks:
- Create a graphic screen on Linux with usable exit, minimize and maximize window functions;
- Use the PyCharm IDE with code completion;
- Run the program and understand terminal output.
The basic concepts she's dealing with:
- import python modules;
- while loop;
- for loop running through an event queue;
- graphic surface creation;
- graphic screen update.
The primary challenge right now is the physical skill of typing. She's learning to type with a typing game program in parallel with learning the Python curriculum. Children are different than adults and that their ability to manipulate a mouse and keyboard needs to be taken into account. It's a big factor in their learning speed. I think that teaching them piano may help with typing since they'll get used to using their fingers to hit keys in rapid succession using complex patterns.
So far, it seems like a modern IDE like PyCharm or Komodo makes programming a lot easier for children. Although I did teach her to use Scratch, I feel that I should have gone directly into Python with PyCharm or Komodo from age 8. Scratch also has some challenges with using the mouse to manipulate the blocks. The challenges of learning this physical skill are similar to using the keyboard to type letters into PyCharm.
Surprisingly, her interest level is about the same with Python as it is with Scratch.
I am also supportive of Scratch and Alice or Blockly. With the rather weak state of programming teaching curriculums in primary and middle school in the US, I am supportive of any effort to teach kids to program. These tools seem to work for many children. I applaud them.
My teaching experiments focus on Python with an IDE for children. My concern with Scratch, Blockly and Alice is that kids need to make the jump from a graphical IDE to a text IDE at some point. There's a range of problems that come up when they have to use a text IDE, the main challenge is frustration when they encounter a syntax or logic error. I'm trying to see how far young children can get by going straight to Python and then bridging to other languages like JavaScript, HTML, Ruby, and Java.
My theory is that the main thing that children need to learn is not actually about programming constructs such as loops or data structures. My theory is that the main thing the child needs to learn is how to deal with frustration and ways to get beyond the frustration of errors. In my opinion, the graphical approaches reduce the frustration too much.
My curriculum is designed only for two kids, my own children. Other parents can use the curriculum if there's commitment to spend time with your child. It's designed so that the parent is sitting right next to the child during the whole lesson. For a 9 year old girl, this is about 30 minutes per class with one class every week, possibly less.
I love to hear about other experiments to teach children to program.
I am a big kid happy to find your blog!
ReplyDeleteNot a programmer? Sure you are. You are writing programs.
You have created a treasure trove of information. Your kids are lucky.
Thanks for making your work available.
Steven, many thanks for the nice note. It keeps me motivated. Would love to hear about any other experiences you encounter working with kids. I am especially interested in teaching experiences for 9 to 12 year old kids right now. Man, kids are so cool when they are that age.
ReplyDelete