Skip to main content.

Final Project: SLogo

Quick links to Deliverables | Docs | Our development statistics

Specifications

Logo is a computer programming language designed to teach programming to children. It is a user-friendly, interpreted language, designed with a "low floor, high ceiling" in other words, the designers of Logo intended for the language to allow novice programmers to get started quickly writing programs but also wanted the language to be powerful and extensive for more advanced users.

In the early days, Logo was used to control a simple physical robot, called a turtle. Users could issue commands such as FORWARD 50 to make the turtle advance 50 steps, or RIGHT 90 to make it turn ninety degrees. The turtle robot carried a pen, so users could produce drawings on paper, such as the one shown to the left, by controlling the turtle and its pen. The turtle, which has since moved on to the computer screen, has become one of the most familiar and important parts of the Logo language.

As a team, you are to design and implement an Integrated Development Environment (IDE) for a simplified version of Logo, or SLogo, that focuses on allowing users to write and manage programs to draw such pictures. Specifically, the user should be able to accomplish the following tasks:

Some example SLogo programs are available online.

Extensions

The above functionality is required. Your team will pick three of the extensions below to implement as part of the final project.

In the early days, Logo was run on small, slow machines and thus its environments were given only limited capabilities. Additionally, there was only a single turtle drawn as a triangle in only one display window to show the turtle's actions. In modern times, Logo has been used to run simulations with thousands of turtles and also to make animations. Extend your basic design to bring your SLogo environment from the seventies into the new millennium (and beyond?). Thus, your design should easily allow the following extensions.

Some basic enhancements to your IDE will make it nicer to use (in approximate order of increasing difficulty):

To allow the user to run simulations or create games, you should allow the user to create as many turtles as they want. By default, there are an infinite number of turtles hidden at the home position. So, if you show the second turtle it should appear at home, unless the user has moved it first, then shown it. To do this, you will need to add the following:

It is already reasonably easy for the user to make simple animations using SLogo because the user can create multiple turtles, set the turtle's appearance to something other than a triangle, zoom in, and animate the turtle's actions. To further facilitate quality animations, you could add the following:

Finally, you can improve the environment for programming by including the extensions below:

Resources

For background and more complete information about Logo consult these links:

Our SLogo Links

Documentation for (somewhat) current code

Statistics about development:

Deliverables

This project is worth 20% of your course grade.

  1. Preparation: analysis of given code, planning (8%) - Individual
    Preparation Assignment Specification, due Friday, Nov 18
  2. Preliminary functionality (20%) - Team
    Due Wednesday, November 30

    This program should implement the basics of the turtle graphics package, recognize a basic logo program, and move the turtle based on those commands. At a minimum, you must be able to move a turtle 'fd 50'. More credit will be given to a project that gets this basic program working very well rather than trying to implement parts of all of the specifications partially.

    One member of the team should tag this version of the program. Under the Team --> Branch/Tag, edit the path to be the tags directory and name the tagged version as preliminary_implementation. I will grade this version of the program.

    The team will demo this program in class on Wednesday.

  3. Intermediate functionality (22%) - Team
    Due Wednesday, December 7

    You should have a working demo of at least 5 commands. You will also demonstrate that you have worked on your code in several other ways, e.g., showing improvement in the GUI, drawing the turtle's tail, creating a system of JUnit tests, etc. You will have decided on the three extensions to the project.

    One member of the team should tag this version of the program. Under the Team --> Branch/Tag, edit the path to be the tags directory and name the tagged version as intermediary_implementation. I will grade this version of the program.

    The team will demo your application in class on Wednesday.

  4. Final functionality (35%) - Team
    Implement required specification as well as three extensions.
    Due date: Determined by team, no later than Dec 15, 11:59 p.m.

    Should include documentation of extensions and how to use. This will be in your post-project analysis

  5. Post-project Analysis (15%) - Individual
    Analysis Specification, Due Date: Dec 16, 5 p.m. (end of exams).