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....

Continue reading "Lessons from Kids"
Posted by David at 12:16 AM | Comments (0)

September 08, 2013

Book Writing Progress

I am making gradual but steady progress on the Turtle Bits book. Perhaps about half of the pages are done. Initially, there will be two books:

  1. A thin book consisting only of examples, without words.
  2. A thicker (but still thin) book with the same examples together with narrative explanation.

An educator who saw the plan says that the two books are targeted to different styles of learning: inductive and deductive. I think the inductive style is really for kids, and the deductive style is the one for the grownups.

Posted by David at 11:48 PM | Comments (0)

September 10, 2013

TurtleBits at Beaver Country Day

My brother, who teaches at Beaver Country Day School, is using TurtleBits in his high school math classroom. He is also helping other teachers at his school use TurtleBits and CoffeeScript this year.

It is part of a year-long effort to incorporate programming in all fields a the school, from Art to Math to English. The effort at Beaver was written up in today's Boston Globe.

Posted by David at 01:07 PM | Comments (0)

September 13, 2013

Teaching Programming and Defending the Middle Class

Tyler Cowen's new book Average is Over argues that around the world, the middle class will inevitably continue to hollow out, leaving a more fragile, poor, existence for most people, and elevating a small class of super-wealthy computer-literate computer designers:

“The obvious and direct beneficiaries [of ever-more powerful computers] will be the humans who are adept at working with computers. … That means humans with strong math and analytic skills, humans who are comfortable working with computers because they understand their operation.”

Why is it so out of reach for most people to "understand the operation" of computers? Here is where I think Cowen is wrong: he is unjustifiably pessimistic about the ability of most people to master the language and creation of automation....

Continue reading "Teaching Programming and Defending the Middle Class"
Posted by David at 12:31 PM | Comments (4)

September 19, 2013

Book Sample Page

Here is a sample page from the book I am working on. The purpose of the book is to give kids and their teachers a launching off point from which they can explore each area.

Open the book to any page, and on the left hand side is a set of small, working programs that illustrate an idea. On the right hand side is a very short explanation, highlighting terminology that you can use to find more information on Google or Wikipedia.

In total there will be about 28 topics like this covered, starting with sequencing, looping, nesting, output, and input; and moving on to recursion, motion, concurrency, and reasoning. Each topic is illustrated with one or more short programs that fit on a page, and each program is less than 50 lines long.

Posted by David at 09:27 AM | Comments (0)

September 20, 2013

For Versus Repeat

I have been teaching my 5-year-old to draw pictures with turtlebits, and I have concluded that the for statement is too difficult to teach as the first looping construct at that age. It would be fine as a second construct.

For example, he wrote this:

play 'abcdefg'

And he came to me saying "Dad, help me make it repeat 10 times." I told him to try to figure out a for statement to do that, but he could not figure it out. In CoffeeScript, the shortest way to do it would have been

for p in [1..10]
  play 'abcdefg'

But after we typed that, he clearly didn't understand what p was for. It is an unnecessary variable, and it is not the way you actually think about what is going on. It also has the disadvantage that the whole looping construct involves four pieces of punctuation: two brackets and two dots.

We can eliminate the p and reduce it to three pieces of punctuation if we define a 'repeat' function:

repeat 10, ->
  play 'abcdefg'

However, in the ideal world, repeat would just be a keyword in the language and he could write, punctuation-free:

repeat 10
  play 'abcdefg'

I am thinking that maybe a a couple of these types of pedagogical insights should be accumulated into a fork of Iced Coffeescript. Anybody interested in helping me build a Coffeescript variant?

Posted by David at 08:32 AM | Comments (3)

September 28, 2013

CSS Color Names

My one-page sheet of CSS color names: CSS Color Names Sorted by Color.

There are 140 standard CSS Color names including common names like "red" and uncommon ones like "gainsboro". Although writing out "peachpuff" is not as concise as writing "#FFDAB9", I find spelled out color names more readable than rgb codes. The only problem is remembering names when it is time to write them. If you rarely use "palevioletred", it can be hard to remember its exact name.

The W3CSchools color list ranks top in Google, but I prefer Doug Crockfords' one-page sheet. However, both lists suffer from an alphabetical listing, which means they are best for looking up a color once you know a name. That's not really the problem.

The point of this CSS color name cheat cheet is that sorts all the colors on one page, by lightness and hue. If you are thinking "dark green", instead of just typing "darkgreen," you can scan and find the color you want in a rainbow on the dark side of the sheet. Perhaps you will find that you really want "forestgreen" or "seagreen".

Posted by David at 11:52 AM | Comments (5)