FMSLogo: An Educational Programming Environment

http://fmslogo.sourceforge.net/

Welcome to the world of FMSLogo!

FMSLogo is a free implementation of a computing environment called Logo, which is an interactive programming language that is simple, powerful, and best of all fun. You can download FMSLogo from the project portal on SourceForge.

FMSLogo was originally called MSWLogo. It was written by George Mills and based on UCBLogo, which is written by Brian Harvey and is still under active development. A large, international community adopted MSWLogo, translated it into several languages, and created countless lessons plans around it.

FMSLogo includes support for

·  "Standard" Logo parsing

·  Turtle Graphics

·  Exception handling

·  TCP/IP networking

·  Text in all available system fonts

·  1024 independent turtles

·  Bitmapped turtles

·  MIDI devices

·  Direct I/O for controlling external hardware (must be admin)

·  Serial and parallel port communications

·  Saving and loading images in BMP format

·  Calling into native DLLs

·  Creating windows dialog boxes

·  Event driven programming (mouse, keyboard, timer)

·  Controlling multimedia devices (WAV sound files, CD-ROM control, etc.)

·  3D Perspective drawing (wire-frame and solids)

·  Creating animated GIFs

There are many Logo environments to choose from, so why choose FMSLogo?

·  FMSLogo has a simple GUI that encourages learning.

·  FMSLogo provides support for exploring diverse disciplines, including mathematics, engineering, art, music, and robotics.

·  FMSLogo is smaller than most other Logo environments -- it still fits on a floppy disk.

·  FMSLogo runs fine on computers that are 10 years old.

·  FMSLogo has a strong, international user community with over a decade of classroom experience.

Because of this, FMSLogo is ideal for elementary school computer labs.

A Brief History Of Logo

Seymour Papert designed Logo to be powerful enough for computer research, but simple enough so that it could be enjoyed by children. Papert used Logo to conduct Artificial Intelligence and Robotics research at the Massachusetts Institute of Technology. One of the robots that Logo controlled had a dome-shaped protective casing over its electronics that made it resemble a turtle. As personal computers became more affordable, the physical turtle was replaced by a virtual turtle on a computer screen. The virtual turtle was given a pen to help it fit into the familiar world of childhood learning. Drawing is already a natural part of childhood, but drawing with Logo is different than drawing with crayons. To draw with Logo, you must learn to think about drawing, enough so that you can teach a complete idiot (the turtle) how to draw.

Development Plan

There is a lot of work to do on FMSLogo. The code base lay in atrophy for five years before I picked it up. It will take a lot of work just to bring it up to date, even without making any major updates in functionality. Below is a rough outline of the development steps that I intend to take. Of course, I will always be looking to fix bugs and make small updates that enhance the usability along the way.

  1. Port the documentation from RTF to DocBook. Completed on 2006-02-19.
    This will make the manual easier to update. It also gives me an opportunity to carefully read the documentation, learn what FMSLogo is capable of, and fix typos.
  2. Write an extensive set of automated tests. In Progress (ongoing task).
    Without a good test suite, I cannot confidently update FMSLogo without introducing regressions. Because FMSLogo has a lot of features, writing a comprehensive set of tests is very time consuming.
  3. Port FMSLogo to gcc and wxWidgets. In Progress. ETA: late 2009.
    Currently FMSLogo is built with a defunct compiler and links to a proprietary window toolkit. Porting FMSLogo to gcc and wxWidgets will open up development to more people.
  4. Use the GNU tools to find performance bottlenecks and fix memory leaks.
    This purpose of this step is to gain a better understanding of where FMSLogo's problems lie.
  5. Update the language engine to the latest from UCBLogo.
    FMSLogo is based on UCBLogo's language engine. However, while UCBLogo has made many advances, FMSLogo is still using a snapshot of UCBLogo that is at least five years old. There are some major benefits to updating the language engine. Just adding a "not equals" operator would make FMSLogo a significantly better programming environment.
  6. Internationalize FMSLogo. Completed on 2006-12-26 (out-of-order).
    This will make it easier for third-parties to localize FMSLogo. Localization is a requirement for adoption within schools systems.
  7. Begin implementing new features.
    By the time I get here, FMSLogo will still be roughly the same as MSWLogo 6.5b, but it will be ready to be extended. The possibilities are limitless, but I'd like to start by adding a good sprite library, better support for 3D drawing, an interface for text to speech, a clean networking API, etc.

The Release Cycle

The most fundamental aspect to understanding the release cycle is understanding how FMSLogo version numbers work. FMSLogo uses three numbers for its version number, separated by dots, as in:

FMSLogo major.minor.bugfix

For example, FMSLogo 6.10.1 has a major version of 6, a minor version of 10, and a bugfix version of 1. In addition, there are "developer snapshots" versions that are not publicly released. Developer snapshots may be completely untested. Developer snapshots are distinguished from "official" revisions by appending a "+" character to the most recent revision.

A change to the bugfix version is required by any of the following:

·  Fixes for significant regressions introduced in the latest minor or bugfix revision

·  Minor improvements to the manual

·  Performance improvements

A change to the minor version is required by any the following:

·  A minor change to the look and feel of the user interface

·  A minor change usage paradigm of the user interface

·  Major changes to the manual

·  Fixes for long-standing bugs, however significant

·  Fixes for minor regressions

·  Small, new features

·  Incompatibilities in Logo programs that only require simple changes to get the program to run properly again

A change to the major version is required by any of the following:

·  A significant change to the look and feel of the user interface

·  A significant change usage paradigm of the user interface

·  Incompatibilities in Logo programs that require significant rework to get the program to run properly again

Before I release any new version of FMSLogo, I run it through a regression test suite, on both Windows XP and Windows 95. This includes automated tests, manual tests, and testing that the "extras" still work correctly.

I release a new minor version of FMSLogo about every three months, somewhere near the middle of the month. I release a new bugfix version only when necessary. Due to the amount of time required to test each version of FMSLogo, I only release a bugfix version to address problems that can't wait until the next minor revision. In other words, if I release a bugfix version, it's because I did something very bad in the previous release.

How You Can Help

There are many ways to help improve FMSLogo and they don't all require hacking on C++ code.

·  Of course, you can help with the programming side of things. Unfortunately, FMSLogo was written using old versions of Borland C++ and TASM, which are not available in stores anymore. If you want to help on the programming side of things, you must first obtain a copy of these products.

·  I would like to bundle FMSLogo with lots of high-quality mini-applications written in FMSLogo that show off what it's capable of. I would like them to be written in a way that people can study, learn from, and improve them. Games are ideal, since my target will always be children and young adults. If you have a Logo program to donate, post a link in the discussion forum.

·  Translate FMSLogo to a new language. Each new translation of FMSLogo expands its potential audience. Translators are expected to translate the text in the GUI and the names of each command. Translating the manual is not necessary (but would be appreciated). If you would like to translate FMSLogo to a new language, please post a comment to the Public Forum and I will send you further instructions.

·  If you're good with at Web development, this Web site obviously needs some help. If you have some ideas on what should go here and would like to take over maintenance, let me know.

·  Create a new icon for FMSLogo. The current icon is not recognizable and looks like a mismash of red, white, and blue. The current icon has many symbolic elements, but the symbolism is not apparent to the primary audience. I'd like something a little more recognizable, like a turtle whose shell has the letters "FMS", or something.

·  I need real-world feedback on where FMSLogo should be improved. If you know where FMSLogo is lacking, please post a feature request or post a message in the discussion forum. Try to keep your suggestions based on practical experience (instead of abstract theories). Also, please explain how your suggestion would improve FMSLogo as a learning tool for children.

·  File bugs. FMSLogo is full of them and they should all be tracked. If you know of a bug, please file it in the bug tracker.

·  If you're a GNU/Linux user, you can become a WINE application maintainer for FMSLogo. I intend to port FMSLogo to GNU/Linux some day, but that could be years form now. In the meantime, it'd be nice if it ran under WINE.

·  Evangelize FMSLogo. MSWLogo is still far more popular than FMSLogo. If it's because FMSLogo is deficient in some way, then let's file a bug and get it fixed. If it's because people don't know about FMSLogo, then let's let them know.

·  Whatever else you can think of!

Useful Links

·  FMSLogo on SourceForge http://sourceforge.net/projects/fmslogo/ - The FMSLogo project portal on SourceForge.net. This is where you download FMSLogo, file bugs, make feature requests, submit support requests, etc.

·  The Logo Workshop - http://et.bgcbellevue.org/logo/ A short lesson plan for introducing FMSLogo to children K-5. I use this Web site to run computer workshops at my local Boys and Girls Club.

·  The FMSLogo Manual - An online manual for FMSLogo.

·  Asteroid Miner - An impressive game written in FMSLogo.

·  Logo Games - A whole website dedicated to games for FMSLogo.

·  Berkley Logo - A powerful, cross-platform Logo environment written by Brian Harvey. The Web page also links to three college-level textbooks taught in Logo. FMSLogo uses the language engine from UCBLogo.

·  MSWLogo Homepage - The original MSWLogo homepage. Lots of useful links.

Logo Workshop Homepage

Introduction

The Logo Workshop is designed to teach kids the basics of computer programming through a series of hands-on activities using a language called Logo. Logo is an interactive programming language that is simple, powerful, and best of all fun.

Kids who partake in this workshop will learn the fundamentals of computer programming. They will learn just how dumb a computer really is. They will also learn how to teach the computer to accomplish new tasks by breaking the task down into very simple instructions, instructions that are so simple that even a turtle can follow them. Along the way, they will also learn about geometry and natural language, as well as practice some fundamental computer skills, such as typing, multitasking, and copying & pasting.

Some people dismiss Logo a toy language because of its simple design or because their only exposure to Logo is Turtle Graphics. This is sometimes referred to as "The Tragedy of Logo", because it sells the language far short of its potential. In reality, Logo is a powerful language that happens to be easy-to-learn. Logo has been used to study natural language processing, control robotics, model parallel algorithms, and (of course) move a turtle around a screen.

There are free versions of Logo available on all major platforms. At no cost, kids can download Logo to continue their exploration at home.

For the Instructor

The Logo Workshop consists of a series of forty-five minute lessons that heavily emphasize hands-on activities. The lessons build off each other, so they should be presented in order.

Each lesson is designed to teach a specific aspect of the Logo programming language. The goal of each lesson is stated at the top. The lesson is explained with a mixture of text, pictures, code samples, and hands-on activities. Each lesson ends with an open-ended activity where the children are encouraged to create something interesting using what they have just learned. Code samples are provided at the end to help inspire the children. Some lessons have a "Challenge Questions" section at the end. These are difficult questions that go beyond what is presented in the lesson and usually require a lot of further thought. These should be considered optional.

I tried to keep the lessons simple enough so that a fifth-grader could understand them. I hoped that each child would be able to move at their own pace, using the lesson's Web page as a guideline. In practice, the kids raise their hand and wait for an instructor to tell them what to do, rather than read the lesson. As such, the lesson's Web page works better as a guideline for the instructor. Therefore, the instructor MUST be proficient in Logo programming.