My experience with turtle graphics in a CS1 course has been very rewarding. It allows *everyone*, not just the most motivated, to be creative. With turtle, drawing an original and intersting design is so easy. In a couple of dozens of lines, my CS1 students create some amazing designs – every semester brings more and more gems. Students use turtle to draw fractals and then concentric figures that change colors and are constantly redrawn.

 

Of course, turtle is not fast and it is not fancy as programming, and it behaves badly in Windows, but the important thing is that it really inspires almost all beginners to learn and do more. My students post their turtle graphics designs in course Forums and they are so proud – for good reason.

 

Consider for example this simple program:

 

# Pattern Designer

 

import turtle;

 

# Create a blue pen and determine the window's width and height:

def init():

    pen = turtle.Pen();

    pen.color(0, 0, 1); # blue

    width = pen.window_width();

    height = pen.window_height();

    return pen, width, height;

   

# Given a number, design a pattern for that number:

def pattern(number):

    pen, w, h = init();

    # Switch off tracing for higher speed:

    pen.tracer(False);  

    for x in range(-w/2, +w/2):

        for y in range (-h/2, +h/2):

            draw(pen, number, x, y);

        # Temporarily switch on tracing to observe drawing:

        if (x % 100 == 0):

            pen.tracer(True); pen.tracer(False);

    pen.tracer(True);

 

# Draw a pattern element at point (x, y):

def draw(pen, number, x, y):

    a = y * (number / 100.0);

    b = x * (number / 100.0);

    ez = int(a*a*a + b*b*b);

    # Try ez = int(a*a + b*b) and other expressions.

    if (ez % 2 == 0):

        pen.up(); pen.goto(x, y); pen.down();

        pen.circle(1);

 

# Draw pattern #5

 

pattern(5);

 

#

 

The above program is a framework to design original patterns that are different form anything else – just by playing with the draw function above. Change the _expression_ that defines ez, use random numbers for colors, etc. The opportunities for creative designs are unlimited.

 

Of course the above program is slow. But it delivers exciting designs and inspires people. This is what matters, particularly in CS1.

 

Certainly, one can use more realistic platforms, such as VPython, but then the complexity will probably kill the enthusiasm.

 

This is why I am interested in the turtle module and its improvement. (Thank you again, Vern.)

 

Atanas

 

Atanas Radenski     
mailto:[EMAIL PROTECTED]      http://www.chapman.edu/~radenski/

 

I find television very educating. Every time somebody turns on the set, I go into the other room and read a book - Groucho Marx


From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of kirby urner
Sent: Tuesday, February 28, 2006 5:10 PM
To: Toby Donaldson
Cc: edu-sig@python.org
Subject: Re: [Edu-sig] Edu-sig Digest, Vol 31, Issue 16

 

On 2/28/06, Toby Donaldson <[EMAIL PROTECTED]> wrote:


   1. The broken interaction between Idle and the turtle package.

   2. Poor documentation. To actually understand certain function
calls, it was necessary to read the turtle.py source code.


My tentative conclusion, reading the above, and from some personal experience, is the Tkinter turtle.py, while a fun demo, is mostly a toy and should not be used for serious teaching, at least on Windows.  Too much adverse experience.  Too much frustration.  In general, Tk on Windows has a lot of problems -- I generally forsake IDLE and go to a command window, for good reason.  IPython is an alternative (a good one -- once you get it working in Windows, which is very doable).

I really don't think *any* kind of turtle graphics is essential to learning programming, although as I said, I think the approach is very viable and destined to last.  I'm not "anti turtle".

My own special interest is in going back to the very early days of Logo, when a physical robot was used.  I'd rather have hardware robots than screen based ones, with Python bindings.  SONY should seed me a prototype :-D

Kirby

_______________________________________________
Edu-sig mailing list
Edu-sig@python.org
http://mail.python.org/mailman/listinfo/edu-sig

Reply via email to