An Overview of the Edith Program

CS 240 Fall 2013 Class Project

Project Summary

For this class, you will be implementing a system to help younger students students learn to program and get excited about computer science. Edith is a 2D, web-based version of Alice---a popular educational system developed at CMU. Like Alice, your system will allow students to program relationships among objects in a virtual world, in order to create animations and games. Students will be able to Your system will offer similar capabilities: users will be able to create objects for their story using a graphical, drag and drop interface; specify animated behaviors for these objects using a visual programming language; add user interactions to create game-like experiences; and share their creations with others.

Edith mirrors Alice in many ways, though with some major differences:

Other requirements will be formalized during lectures and in the preparation of requirements specifications. The goal of this project is to practice implementing a large software system as a group, rather than develop a system that perfectly supports teaching kids to program.

Note: Edith is named for Edith Liddell, the younger sister of Alice Liddell Hargreaves (who inspired Lewis Caroll's Alice in Wonderland).

Related Systems

Below are a list of related and inspirational systems that you might look at to get a better idea of the project's goals:

Module Descriptions

Edith will be divided into 5 different "modules," with each module overseen by a single team. Descriptions of the modules and team responsibilities are below.

Visual Editor

This module provides a visual programming language editor (like an IDE), allowing users to program behaviors for objects. This module should provide a visual programming version of JavaScript (possibly a subset of the JavaScript language), enabling "drag and drop programming" similar to Scratch. A user should be able to drag elements---variables, methods, control statements, etc---onto a display in order to create a program. This program should then be converted into proper JavaScript code that can be run by other modules. Note that syntax rules should be enforced by the interface.

The module should be able to run in its own display view, as well as integrate into the views of other modules (such as the Object Creator and Story Creator)

Object Creator

This module provides a system that enables the the user to create and edit "objects"--elements and sprites that will be part of the animation. Users will be able to create the graphical representation of objects (either by painting, manipulating geometric primitives, or importing images from other sources), and then to define specific behaviors (i.e., methods) for the objects by using the Visual Editor. Users are expected to switch between the Object Creator and the Story Creator to build all the components of their animation. Created Objects can be saved in JSON/JavaScript format for use in other modules.

This module should run in its own display view, part of which will include the Visual Editor (so that functions can be created).

Animation System

This module provides the core animation system for Edith, displaying objects and interactions that have been defined by other modules (i.e., the Object Creator) in a JSON format. This module is responsible for controlling spatial and temporal placement of objects and events. As such placements may change over time, this system may need to support keyframe animation of some kind. This module should also support playing audio components associated with each object. Basically, this module takes the models and displays them moving around.

The module should run in its own display view, integrated into the overall system framework.

Story Creator

This module provides an interface that allows the user to specify animations and other events, combining object manipulation and function calls into a story. This module will utilize the Visual Editor to specify actions performed by objects provided by the Object Creator. This module should also enable users to specify user interaction events---enabling those watching the animation to interact with it in some way (turning it into a game, for example).

This module will utilize the display views provided by the Visual Editor and Animation System, with additional functionality and interaction added to these systems to enable the creation of animations.

As an extension, this module may also provide a "tutorial" overview for the system as a whole.

Sharing Framework

This module will provide a system through which user-created animations can be saved and shared. The module will provide a system that allows users to save and retrieve animations from the server's database. Animations may be tied to user accounts or some other authentification system. Animations should also be sharable--whether by providing a unique URL for the animation, or by exporting to other systems such as YouTube.

Furthermore, this module will be responsible for providing an overall "backend" system to contain the front-facing UI views of the other modules. In short, this module is responsible for the back-end and middleware portion of the system.

System Diagram

Below is a rough UML diagram of how the individual modules/teams should fit together.