I taught a beginning Python programming class this Spring using the Codecademy intro to Python curriculum (http://www.codecademy.com/en/tracks/python). The class went well and the students seemed to enjoy it. Here are a few things I would do differently next time though:
1. The codecademy curriculum is self-guided and each student can work at his/her own pace. However, I noticed some key concepts that most students had trouble with. I would give short presentations on the following concepts so that I could be sure everybody understood them and thus avoid frustration. It would be fun to do some ‘unplugged’ activities (a set of activities that teach CS concepts through physical action–http://csunplugged.org/) to help kids understand these ideas.
Variables — Python is dynamically typed (variable types do not need to be stated when creating the variable). I don’t think codecademy does a very good job of explaining this and I noticed a lot of confusion.
Functions — Students didn’t seem to really learn what a function is and what it is good for simply by reading the text.
Lists — Also not well/thoroughly explained.
2. I would stop at the ‘Advanced Topics in Python’ unit and have the students work on real, hands-on projects instead. This could include projects with programming raspberry pi microcomputers, playing around with Sonic Pi (http://sonic-pi.net/), or maybe writing a simple game using something like pygame (http://www.pygame.org/).
3. It might be a good idea to introduce the students to Monty Python’s Flying Circus via some curated youtube clips. My class was 7th and 8th graders most of whom have never seen Monty Python. The examples and activities use a lot of references to Monty Python sketches (this is a Python tradition) so it would be helpful for the students to have some idea of where the stuff is coming from.