TELS Logo Banner Banner

Using the Pas Suite

Getting started

The Pas Suite builds on the SAIL Framework to provide applications for use by the TELS Center in its education research. SAIL is the code that we believe is useful in common to all Java-based interactive curriculum applications. Pas is the code for our particular approach to interactive curriculum.

Before reading this document, you may want to browse the APIs of SAIL Framework and Pas Learner Runtime. You may also want to check out the SAIL Core or Pas Learner Runtime codebases.

SAIL Overview

SAIL provides a standard way of authoring Java-based curricula and flexible ways to deploy that curricula. A SAIL-based curriculum unit is called a curnit (from "curriculum" and "unit" squeezed together) (net.sf.sail.core.curnit.Curnit). A curnit is an authored artifact. It has no information on its use.

To make use of a curnit, an offering (net.sf.sail.core.entity.Offering) is created of that curnit. An offering defines a context of use of the curnit. It specifies attributes such as who is offering the curnit, who they are permitting to access their offering, when the offering begins, when it ends, what permissions the actors in the offering have over the data generated in the context of the offering. The offering also handles revision control, such as when a curnit is updated or modified over the course of the offering.

When a user's VM launches and accesses an offering, this is a session. Versions of code and authored artifacts are fixed over the course of the session (i.e. once loaded they are never updated). It is in the session that users interact with the curriculum and generate interaction data (e.g. answers to questions, drawings, mouse tracking).

Now let's look inside the curnit. A curnit consists of a tree of pods (net.sf.sail.core.beans.Pod). There is one root pod for the curnit and it can have any number of children, as can each child. Among other things, each pod is a BeanContext (Pod extends BeanContext) and contains any number of JavaBeans. Pods are the basic unit of authoring re-use. Pods organize bean instances, class dependencies, binary resources, and rims (see below) and make them re-usable in other curnits. Pods will eventually support subscribed copy (users "subscribe" so that they can get Pod changes and updates) and prototyping. Pods can reference values exported from other pods which are set at pod re-assembly time (when each separate pod is reconstituted into the full hierarchy in the curnit).

As mentioned above, pods are also the context of rims (net.sf.sail.core.entity.Rim). Rims are where data generated in the session go. They are a special bean that have name and shape properties. The name is to distinguish it from other rims in the same pod. The shape property is really a java.lang.Class and specifies the kind of data that goes through that rim.

Data passes through a rim into a sock(net.sf.sail.core.entity.ISock). Rim is the authored artifact but sock is where data is actually stored over the course of the offering. It is a virtual container for the use of a rim by a set of users.

That covers most of SAIL.

Pas Suite

The Pas Suite is the code that TELS is using to support its applications. It mostly consists of beans that fit into SAIL pods.

TELS curnits are designed to resemble the WISE project structure: Project <- activity <- step (Pas).

Each TELS curnit has one PasProject bean (org.telscenter.pas.beans.PasProject). It has a title and a list of PasActivity beans (org.telscenter.pas.beans.PasActivity). These other beans can be located in the same pod as the project bean, or any other pod that exports them. Each activity also has a title and a list of PasStep beans (org.telscenter.pas.beans.PasStep). The PasStep class is abstract and each type of step corresponds to a different concrete subclass of PasStep. Examples to date include: Note, BrowseWeb, DisplayPage, Pedagogica, and WiseDraw2.

The rest of the code is basically there to support these beans. For example, the PasProject bean employs a PasProjectNavigationPanel on the left side of its visual layout which provides a map of the activities and steps to which the user can navigate.

To add a new step type to a TELS curnit is simply a matter of extending the PasStep with a bean that does something new and then adding an instance of that class into the curnit.

To see examples of curnits we've built, check out org.telscenter.pas.builders.BuildPas0001 and org.telscenter.pas.builders.BuildPas0002 in the TELS Framework project. (Eventually the authoring tool will obviate these classes.)

Labels