Archive for November, 2011

Enrichment day 4.

This week was the last enrichment class for my group of fifth graders.  As I reported in the last installment, the syllabus ended up changing a bit to adapt for the unexpected difficulty of some of the concepts.  Variables in particular were difficult, but eventually the students started to understand them pretty well.

This week built on variables to teach the concepts of conditionals and loops, using the if and while statements in Python.  It was at this point that I could tell that most of the students had really grasped the concept.  One of our exercises was to follow the logic of a simple counting/printing loop.  The kids seemed to like putting themselves in the role of the computer.

It was also at this point that the kids started to understand the power of booleans (True and False).  We tried a number of additional comparisons to understand cases where conditions evaluated to each.  The emphasis on True and False paid off in the section where we discussed conditionals and loops because we could pay more attention to the actual branching operation, as opposed to getting stuck on figuring out why the branch happened.

This week I also discovered what I think was a good way to increase the idea of collaboration in the class.  Obviously there wasn’t time to check every child’s work at every step of the way.  But I could make things easier and less pressured on the kids by rotating a “look and see” duty around the class.

Since the class was relatively small (only six kids), I could have all of them gather around one person’s console to see the results of a program or exercise.  We could even figure out what went wrong together in some cases.  Hopefully this removed a little of the pressure of having the instructor point out something that was wrong — a friend could point it out and even help fix it.

Of course, it wouldn’t be a last class without some bonus for the kids!  Thanks to the fine people at the Fedora Project, I had stickers, temporary tattoos, and buttons for the kids, which they loved.  They also got to take their Fedora Live USB keys home, which several of them had been waiting for since the first class.

Speaking of keys, I sent home an information sheet for the parents to go with the keys, so they’d understand what was on it, how to use it, and where to find more information and help.  The keys also had two complete electronic books (both CC BY-SA licensed, check them out here and here) included that are specifically aimed at teaching Python to kids, so if the kids want to go further they can.  A couple of the students demonstrated really serious aptitude, so I think chances were good the class ignited the imagination of a future computer genius!

I’ve posted the last lesson (and miscellaneous resources) in my fedorapeople space, and as with previous lessons, it’s all licensed as CC BY-SA 3.0 so it can be reused by others.  I hope you got something out of reading about the class.  I had a great time teaching it and I think the kids enjoyed it too. Thanks again to my employer, Red Hat, for lending me a few hours this month to give back to some kids in my community.

Enrichment days 2 and 3.

I’m sorry I got behind in posting about the enrichment class last week. After week 1 went so well, I thought I’d easily be able to post updates weekly, but alas, it was not to be. However, this wasn’t just because of other workload. The week 2 class actually didn’t go as quickly as the week 1 class. The lesson plan I thought would be light enough to cover in one session has actually taken up the hours for both weeks 2 and 3. I’ve posted the lesson in my Fedora People space.

It turns out that one of the most difficult things for the kids to grasp has been return values. That is, understanding that when you run a function in Python, a value is often generated as a result. Python can either do something with it, or not. This is deeply tied to understanding the usefulness (if not the concept) of variables as a way of holding on to those results for later use.

This concept is inherently difficult for fifth graders who haven’t yet been exposed to concepts of algebra or the unknown. Math and science up to this point in their education are decidedly concrete, and focus strictly on known quantities. I underestimated the difficulty of introducing the concept of an unknown, indeterminate object like a variable.

Fortunately, Python has made it simple for the kids to try smaller steps on their way to understanding this concept. Python’s particular style of input/output at the interpreter allows them to see how return values are generated. Then it becomes a matter of understanding the concept of variables, and assigning that return value to a variable. This is not as easy as it sounds for fifth-graders, but by the middle of week 3′s class light bulbs were switching on!

Regardless of the difficulty of the class, the students in general have loved the class, and are excited when they show up each day. I wish I had more time with them, but alas, the class only lasts for four weeks.

We have one more class coming up on the Monday afternoon after Thanksgiving. Based on the experience thus far, I expect we’ll spend the majority of the last class on conditionals, and understanding the if statement. Courtesy of the Fedora Project, I have some wonderful swag items to give out which I think the kids will love, like buttons, stickers, and temporary tattoos. Also I plan to give them their Live USB keys, as well as a note for their parents on what the keys contain and information on how to use them.

I will try like mad to have a blog post up sooner after next week’s class!

Enrichment day 1.

Yesterday was day 1 of the enrichment class I’m teaching at my daughter’s elementary school. The class is elementary computer programming using Python, and has a total of six students, all fifth-graders. Actually, the first class only had five, because one went home on the bus by accident instead of staying at school for the extra class.

The first day is never the best day, because there are a lot of introductory things to get out of the way. In our case, I needed to show the kids some essentials for how to open programs, write and save files, find them again, and start up the Python program. This might sound really easy to you and me, but for fifth graders one needs to adjust the expectations. Not every child is comfortable with a keyboard, for example, and I couldn’t assume that every child had ever typed a document before just because my child had.

As it turns out, we really needed every minute of class to cover our material, which made me glad I didn’t overschedule the tasks in the class. We started with some basic information about what software is and why it’s important — that without software computers are basically as dumb as a box of hair.

The kids enjoyed this explanation; I demonstrated the difference between instructions for computers and humans by having one of the students walk down to the end of the room and back. I didn’t explain to him, of course, how to get up from his chair step by step, push his chair in, turn to the left, put one foot in front of the other, etc., etc. So that made a great example for how computers have to be told everything explicitly. This made it easier, later in the class, to have the kids understand why the computer gave them an error in certain examples I set up.

I was impressed with how quickly the kids picked up the GNOME 3 interface, even though it’s somewhat different than the computers they’re probably used to.  Most of them figured out the overview and how to find applications very quickly — so I had to get them back on track once they found the games! They also had no problem moving, resizing, and closing windows.

The computers in the school lab need to be powered off at night according to school policy. It was a little tricky to show the kids how to shut down the systems, but other than that the transition was pretty smooth for most of them.

One child was uncomfortable enough at the computer that I suspect she hadn’t much experience at all. She seemed worried about doing things wrong or breaking the computer, so I tried to go a little out of my way to give her some positive feedback and tell her she was doing a good job!

We got all the way through the ending exercise, which was to let the kids fire up Python 3 and have the computer do some math problems for them. I even managed to tie into one of the kids’ current math lessons, which is on order of operations. They were really impressed the computer knew how to do their homework for them!

I’ve put the day 1 labs in my Fedora People space in case you’re interested in seeing what we covered. I would also be remiss if I failed to thank my employer, Red Hat, for giving me the flexibility to take on this extramural project.

© 2002-2012 Paul W. Frields License: CC BY-SA 3.0. Some rights reserved.

Switch to our mobile site