CompSci 308
Spring 2024
Advanced Software Design and Implementation

Team Project: SLogo

Logo is the name for a philosophy of education and a continually evolving family of programming languages that aid in its realization. — Harold Abelson

Submitting Your Work

Use GIT to push your team's implementation to the main branch of the provided, sharedslogo_teamNN repository hosted in the course's Gitlab group.

As your submission for this project, use GIT to addcommit, and push the following

Deliverables

This project will be submitted in stages:

Specifications

In teams, write a Java program using straight OpenJFX that provides an integrated development environment, IDE, for users to command a turtle to create drawings. Developers will be able to write programs in the "Simple Logo" (SLogo) language, a simplified version of Logo that is easier to parse but retains the most common features used by novice programmers. Unlike IDEs such as IntelliJ, which are designed around editing multiple files that represent a complete program, SLogo users should be able to command the turtle interactively on a per expression basis. Thus your IDE should focus on helping users to experiment with and manage expressions, building up complex expressions from previously entered ones and keeping the visual representation of the turtle appropriately updated. You must be able to properly run these example programs.

Builtin SLogo commands will be written in Java code but all other information will be read from an eXtensible Markup Language, XML, formatted configuration file (the exact tags of this configuration file should be decided by your team).

The full list of requirements is given here.

CompSci Context

This project highlights the following interesting and foundational Computer Science concepts. You are not expected to write a general or complete version of any of these concepts, but learning about them may help provide a context to begin thinking about some design issues or connect your work in this course to the broader computing community.

As a dialect of Lisp, Logo is a powerful language for expressing programs. Although most of its complexity (and power) come from other elements than those that control the turtle, it is still amazing how expressive and compact it can be.

Individual Responsibilities when Working as a Team

This project requires steady, consistent, work — only by putting in consistent time each week will you see measurable progress and not have to pull "heroic" all-nighters.

Although this is a team project, everyone has individual responsibilities to the team that can be summed up as follows:

Unfortunately conflicts are likely to occur, so please let the Teaching Team know as soon as possible — even if it has happened just once or twice since it is better to deal with the situation early rather than having a disaster at the end when little can be done to get back on track.

Resources

Here is an in browser Logo environment (used to power this interactive programming workshop).

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

Videos