September 02, 2013

Lessons from Kids

I just watched Cynthia Solomon's videos documenting her and Papert and Feurzeig's development of Logo in the early days. After they initially tried out their teaching language in 1967 with middle schoolers at Hanscom, they went back to the drawing board and redesigned it. Then the next year, after teaching at Lexington for a year, they realized it needed to be redesigned again.

It was that series of teaching experiences that eventually lead them to hunt for a concrete model for kids to work with, and that hunt lead them to come up with turtle graphics. It wasn't until 1970 that LOGO could be used to move a turtle on a screen - a screen refreshed by a jury rigged PDP-6 driven by a PDP-10 running LOGO.

In recent years, I have taught programming to both "enrichment" kids in Lincoln and "regular kids" in Dorchester. The kids have also taught me a few things....

The Very First Lesson: Setup Is a Major Cost

The first thing you notice, even before teaching your first computer class, is that teaching with computer equipment is a pain in the neck. You cannot simply photocopy a bunch of worksheets and pile them by the door.

  • You need to acquire a number of computers and the chargers and carts and junk that go along with them. Then you need to install the necessary software and verify that it works. If the computers are protected by a firewall or administrative controls, setup may involve a bunch of cooperation with the school IT staff to open up the proper access.
  • Then once the machines are set up, you must also set up accounts and passwords for all the children and find a way to distribute all of this information.
  • Before each class, you need to load your lesson materials on to the computers; and you need to make sure the computers are charged up and in operating order.
  • You need to make sure your classroom is equipped with projection equipment that can mirror a computer's display on to the wall - and that it all works with your computers.

None of that work saves you from the normal amount of paper worksheet-copying and lesson-planning that you would need to do in a class. The equipment preparation is work on top.

Second Lesson: Typing is a Barrier

When teaching Javascript, I found that it was very difficult to get a classroom of 30 kids to be successful in their first program. In the first hour, we had success with perhaps half of the kids.

The initial barriers had to do with typing.

  • About half of the kids had trouble locating the parentheses on the keyboard. They could not even find it. And many were not comfortable holding down the shift key while pressing 9 and 0 to get symbols. Also, the different flavors of parentheses sometimes got mixed up. The smooth and square braces have different meanings in computer languages, but to ordinary humans, they are not all that different.
  • The convention of having "literate method names" breaks down when kids do not even speak English as a first language. We learned quickly that a two-letter abbreviation such as "fd" or "rt" is strongly preferred over a longer name such as "forward" or "right." Kids who are learning to spell cannot necessary spell "right" - or notice when "forward" is misspelled.

Most kids actually do not have much trouble typing letters and numbers. Even if is a process of hunt-and-peck, keys on a keyboard are pretty clearly labeled. But there is a range of difficulty: punctuation and longer words are harder.

Third Lesson: State Needs To Be Shown

The programming model we used was turtle graphics, which is pretty great, and still as relevant and intuitive for kids as it was in 1971. However, the implementation that I used in Dorchester moved the turtle as quickly as possible once you ran any turtle command.

That is too fast.

When kids ask a turtle to move forward by 100 steps, they want to see it move. As soon as you have a program with three or four commands, it is very difficult to understand the origin of a picture that appears instantly, fully formed, on the screen. The kids want to see the turtles execute each step, one at a time, while dragging a pen.

To succeed educationally, turtle graphics must be capable of slowing down and revealing the motion as an animation. And it should work that way by default.

In general, it would probably be helpful for other hidden state to be revealed: variable values, data structures, etc.

Fourth Lesson: Let Kids Make a Webpage

Kids light up at the chance to create their own webpage on the internet. Across all skill levels, kids share the desire to express themselves.

The webpage-making class is where you will find the kids at their most excited and attentive. They all want to know how to put an image of their favorite celebrity or location or hobby on their webpage. They work ahead and quickly figure out, on their own, how to embed Youtube videos.

There is something fundamental about setting up your space on the internet, where everybody can come and admire your world.

The custom webpage is a motivating launching off point for custom programming projects on the web. Kids should be able to showcase their programs on their webpage.

Fifth Lesson: Connection Outside the Classroom

One of the surprises when teaching kids is to see their excitement about topics that you might not expect would be so exciting.

For example, several of my students have been incredibly excited by the details of CSS properties. Where does this come from? They caught this excitement from all the online discussion happening in the web programming world.

So it is important to nurture a connection to the wider computing community. The connection to an active community of people working on real projects is what will lead kids to a long-lived interest in the practice of programming. Connecting their own work to the wider world removes the learning exercise from the classroom and makes it real.

Turtle Bits

Turtle Bits is the successor to the systems I have used to teach kids in Dorchester and Lincoln. Its design is the result of the lessons I have learned from my kids:

  • Setup is as configuration-free as possible. It works on standard web browsers that are on every computer without installation.
  • Accounts are simplified. You can work even if you do not have an account. Setting up accounts is self-service.
  • It is easy to distribute hyperlinks to online "worksheets" that copy themselves into kids accounts when they log in.
  • Every student and every project has a URL, so it is easy for a teacher to bring up each kids work and share it, and it is easy to link them together with webpages.
  • The language chosen is punctuation-light. No punctuation is necessary for the first programs.
  • The turtle library is built around two or three-letter function names to reduce typing and the need to spell in English.
  • Turtle motion animates slowly enough to be seen. The default speed of one-move-per-second can be changed by students who already understand it.
  • Every program is posted on the internet, and webpages can be made by simply naming a file to end with ".html", and typing HTML. You can also use ".css" and ".js" and other file types.
  • Turtles also relate to webpages because all turtles are actually single jquery sets. Turtle motions are jquery methods using a jquery-turtle plugin.
  • Finally, there is a strong connection to the active community of web developers. Turtle motion is actually CSS transformation. Turtle animation is actually the jQuery fx queue. The turtle language is actually Iced CoffeeScript. For the student who is out reading discussion groups, there is plenty to discuss.

The end result, I hope, is a system that is as friendly for Kindergartners who cannot spell or type as it is for High-Schoolers who are eager to break outside the sandbox into the real world.

Posted by David at September 2, 2013 12:16 AM
Post a comment

Remember personal info?