August 01, 2013

No Threshold, No Limit

Why aren't computer languages part of the standard grade-school curriculum?

A big part of the reason is that the computer science community has not standardized on a good learning language. Some elementary educators use Scratch; the FIRST robotics program mandates NXT-G; Kahn Academy teaches Javascript; the AP test standard for high-schoolers is Java; and for the college kids, MIT 6.01 has recently switched from Scheme to Python.

I have taught using all of these languages. Each language has its advantages; but they also all have major drawbacks for teaching. None scales all the way from kindergarten to college. The best advice today is for students to learn half a dozen different languages. The implication is that, to learn programming, you need to be pretty devoted to the task.

Unfortunately, for the routine teaching of regular kids in mainstream schools, the lack of a standard notation means no languages are taught at all.

Remembering LOGO and BASIC

The best "universal learning language" efforts to date have been LOGO and BASIC. BASIC is not a well-loved language today. With line numbers, goto, and a lack of encapsulation, BASIC forced you into bad habits and sloppy thinking.

However, in the years when it was popular, BASIC had the advantage that it was both the first language to learn and a language that was used to write commercial software. BASIC was everywhere. And by taking a peek at big programs written in BASIC, a student could see endless fields of possibility stretching out ahead.

LOGO is a better-designed language. Although LOGO feels abandoned and antiquated in the Internet age, LOGO also got a key thing right: the goal of "No Threshold, No Limit." That slogan meant that LOGO was both easy enough for children who want to see feedback after typing five letters, and powerful enough for advanced learners who want to build an AI.

In 2013 is there any modern equivalent to LOGO or BASIC?

Yes, there is a modern language with the easy elegance of LOGO and the practical hackability of BASIC. A single language that scales from kindergarten to pros. But it is a new language, not listed above. It is a language that does not even aspire to be an educator's language. Yet it is a language that has fortuitously appeared in the "no threshold, no limit" sweet spot.

More thoughts below....

Continue reading "No Threshold, No Limit"
Posted by David at 07:49 PM | Comments (4)

August 18, 2013

Turtle Bits

I have posted a new learning-to-program sandbox at It is designed as a modernized "LOGO" friendly for beginning programmers. For example, as a first program you can write simply "fd 100".

As with LOGO in 1967, the goal of TurtleBits in 2013 is No Threshold, No Limit, which means that it is easy enough for kindergarten kids, and yet it scales all the way to professional-level software experimentation and development. The language is Coffeescript plus jQuery plus jquery-turtle, and it runs in any modern browser (Chrome, Firefox, IE10)....

Continue reading "Turtle Bits"
Posted by David at 07:29 AM | Comments (7)

August 19, 2013

Starting with Turtlebits

Three little examples of Coffeescript and the turtlebits functions.

The basic turtle motion functions are the same as LOGO: "fd 100" moves forward 100 pixels; "bk 100" moves back 100 pixels; "rt 90" turns right 90 degrees and "lt 90" turns left 90 degrees.

More below...

Continue reading "Starting with Turtlebits"
Posted by David at 02:44 AM | Comments (0)

August 20, 2013

Using the TurtleBits Editor

RichB commented yesterday about his 7-year-old's experience with the TurtleBits editor: "He expected the editor just to create new blank space at the end for him. So every few minutes I had to come back to the computer and hold the return key to generate some blank lines."

I have had the same experience with my 6-year-old! So now I have fixed up the editor to always insert a blank line at the end. Let's see if that helps with this issue.

TurtleBits should be as beginner-friendly as possible. Here are a few notes on the use and design of the TurtleBits editor....

Continue reading "Using the TurtleBits Editor"
Posted by David at 04:10 AM | Comments (4)

Ticks, Animation, and Queueing in TurtleBits

A note on queuing and animation in TurtleBits.

RichB comments that the following program hangs the browser in TurtleBits:

# Program 1: will hang your tab.
while true
  turnto lastmousemove
  fd 10
  wait 1

This program is perfectly valid Coffeescript, but running it will freeze your browser tab. If you bring up the debugger and force the program to pause, you will find that it is forever in the middle of looping super-fast within the infinite "while" loop without drawing anything interesting on the screen.

A couple solutions below....

Continue reading "Ticks, Animation, and Queueing in TurtleBits"
Posted by David at 08:17 PM | Comments (0)

August 22, 2013

Await and Defer

A note on await and defer in TurtleBits.

Iced Coffeescript is now supported on TurtleBits, so two new keywords are available in the language: await and defer.

Together these keywords allow you to write a function that stops and resumes again in the middle, yielding control while waiting for some long-running task. If you like, your program can even be paused in several places waiting for several different long tasks at once. More examples below...

Continue reading "Await and Defer"
Posted by David at 08:57 PM | Comments (0)