CTAT 4.1.0 Release Notes

October 27 2016

Downloading and Installing

System Requirements

  • Windows 7 and above or Mac OS X 10.7.3 (Lion) and above.
  • The CTAT installer and Authoring Tools require the J2SE Java Runtime Environment (JRE) version 1.7 or greater. Not sure if you have Java? Click here to check.

Software Requirements

  • HTML interface building requires a simple text editor or one that supports HTML (such as Sublime).
  • Flash interface building requires the Adobe Flash IDE (Animate or CC).
  • Java interface building requires the Eclipse IDE (Select Eclipse IDE for Java Developers.)
  • Eclipse (for Jess production rule editing or building Java interfaces) requires the Java Development Kit (JDK).
  • Cognitive tutors require a program for editing production rules. CTAT provides a Jess editor plug-in for the Eclipse IDE. Eclipse is recommended, though not required.

New users

  1. Download and install the J2SE Java Runtime Environment (JRE).
  2. Optional: Download and install the Eclipse IDE for Java Developers if you want to use Eclipse for editing production rules.
  3. Download and install CTAT 4.1.
  4. Choose which type of tutor interface you would like to use for authoring tutors: HTML, Flash, or Java. (Not sure whether to go with HTML, Java, or Flash? Read our HTML-Java-Flash comparison.)
  5. If you decide to build interfaces in HTML (recommended), you can use a simple text editor or one that supports HTML (Note: Do not use the TextEdit app on Mac OS.).
    If you decide to build interfaces in Java, configure Eclipse and WindowBuilder.
    If you decide to build interfaces in Flash, configure the Flash IDE.

Existing Users

  1. Download and install CTAT 4.1
  2. Upgrade any existing Java or Flash interfaces as described below. HTML interfaces do not need to be upgraded but there have been minor changes to the CSS file (ctat.css) that controls the appearance of components; these changes might require adjustments to styles set in your .html or .css file, particularly for CTATTable and other text-based components.

What's New in CTAT 4.1

General Bug Fixes / Changes

  • Improved support for HTML tutor interfaces
    • Many improvments and bug fixes for the HTML components (see HTML changes) below.
    • The JQuery JavaScript library required for HTML interfaces is now available from the same location as the CTAT JavaScript libraries and CSS file. Users no longer need to reference a specific version of JQuery from the JQuery web site in their HTML interface files; existing users should update their .html files to replace URLs pointing to "http://code.jquery.com/jquery-2.2.4.min.js" with "https://cdn.ctat.cs.cmu.edu/releases/latest/jquery.min.js". The CTAT examples and the templates for the HTML Project wizard have been updated.
      Note: The version on the CTAT CDN site is JQuery 2.2.4. CTAT HTML tutors have been tested extensively with this version; we recommend using the version on our CDN as newer versions might not work properly in all browsers.
    • Better support for mass production. See the section on mass production for HTML components.
    • At author time, choosing 'Demonstrate This Link' from a link's popup menu did not allow the user to demonstrate new input for the step. Users can now re-demonstrate steps in an HTML interface.
    • At author time, choosing 'Add Blank Step' from a graph state's popup menu would always cause the graph to return to the start state with HTML interfaces. Now the current state in the graph is not changed.
    • The goToState() function now works with HTML interfaces.
    • Sometimes the scrim was not removed when the interface was loaded, forcing the student to reload the page. This problem has been fixed.
  • In CTAT 4.0, text changes made in CTAT components in the HTML interface after the graph's start state was created were overwritten by previous values stored in the graph. For example, if the author changes the label for a CTATCheckBox in the .html file after they've created the start state in their graph, the previous value in the graph was not updated to contain the new value. The old value saved in the graph was always displayed as the label text, forcing authors to re-create the graph with a new start state. In this version, the Authoring Tools allow you to easily update the values saved in the graph. In the Authoring Tools:
    1. Open the graph.
    2. Open the modified HTML interface.
    3. Select Graph > Revise Start State with UI from the menu.
    4. Reload the HTML interface, verify that the interface now displays the changes as defined in the modified interface, and save the graph.
  • The HTML5 Project wizard now creates an Assets directory by default in the project's HTML directory. All .css files, .js files, and other resources (e.g., image files) should now be stored in the Assets folder. For example, the .css file provided by the wizard is stored in the Assets folder: workspace-dir/MyHTMLTutor/HTML/Assets/tutor.css.
  • JavaScript Example Tracer
    • In formulas, embedded newlines caused failures in JavaScript evaluation, requiring formulas to be defined as a single line. Now formulas can be written on multiple lines in the Edit Student Input Matching dialog.
    • In formulas, null and undefined are now considered equal. For example, the formula equals(null,undefined) returns true.
    • Fixed a bug causing session messages to not be logged from tutors running in TutorShop.
  • Jess
    • A new Jess function find-cognitive-model-directory has been added. Sample usage:
      (bind ?cog-mod-dir (find-cognitive-model-directory))
      (require* module-B-rules (str-cat ?cog-mod-dir "module-B-rules.pr"))
    • At author time, diagnostics set up with the Jess (watch ...) function are no longer undone by attempts to model trace.
    • For production rules that define custom fields, those custom fields are now properly logged when used with HTML interfaces.
  • The Java-based Tutoring Service (and CTAT for HTML and Flash) now, by default, listens on HTTP port 12022, HTTPS port 12043, WS port 20080, WSS port 20443, and TCP port 1502.

HTML Changes

  • CTATGroupingComponent
    • The data-ctat-use-componentlist attribute is deprecated and should not be used. If the data-ctat-componentlist attribute is set, the grouping component controls the components in the list; otherwise, the child elements of the grouping component make up the group.
    • Components defined by the group now respond properly to all of the tutor-performed actions supported for groups (e.g., lock, unlock, move, etc.).
  • CTATTable
    • It is now easier to configure the height of a table's cells. In the previous release, the default cell height was almost 2 times the font size, which was typically larger than desired; in addition, the default style for table cells made changing the height difficult. In this release, the default cell height is now just 1.2 times the font size, and authors can override the default more easily in style settings, e.g., .CTATTable--cell {width: 120px; height: 20px;}.
    • If table cells have a background color set, the background color now fills the entire cell.
  • CTATDragAndDrop: The component now supports the actions Add and SetChildren in tutor-performed action links.
  • CTATCheckBox: When the check box labels included some special regex characters, it caused UpdateCheckBox action on correct to clear the check marks because they failed to match. Special characters in labels should now be properly handled.
  • CTATNumericStepper: The stepper now enforces valid values even when numbers are typed into the component. It will set the value to the closest min or max value if the entered value is outside the given range. If a value not in line with the step size is entered, then the closest valid value less than the entered value will be used. If a non-number is entered, it will go to the minimum value.

Known Issues

  • The Jess Editor plugin is not recognized in newer versions of the Eclipse IDE (Luna or later). To enable the plugin, you need to install an extra module that provides support for older plugins. See Configuring Eclipse for production rule editing for instructions on configuring Eclipse.
  • Double-clicking a BRD does not load the graph on Mac OS X
  • If the text in a CTATTextArea or CTATTextInput is set in the graph’s start state, the text is not displayed when the author mode is changed to ‘Set Start State’.

Upgrading a Flash or Java Interface to CTAT version 4.1

Note: Neither the Flash components nor the Java components have changed in this release. Both Flash and Java interfaces are still supported but may not be supported in future releases. We highly recommend reimplementing your existing interface using the new HTML components. The available HTML components are documented here

If your existing interface uses components from CTAT 3.4 or earlier and you would like to use newer components, you will need to upgrade that interface as described below.

Java (Eclipse Window Builder)

  1. Backup your existing projects directory to a separate folder on your hard disk.
  2. Download and install the new version of CTAT.
  3. In Eclipse, remove the old CTAT widgets from the pallete and add the new ones. From the Window Builder palette, right-click and choose "Palette Manager". In the manager, under the category containing the CTAT widgets, select all and press Remove. Then add the new ones from ctat.jar using the Import Jar button.
  4. Open the interface you'd like to upgrade in Window Builder's design mode.
  5. Verify your tutor has a CTAT_Options object in it. This invisible widget is now required. If you don't see it, add one from the palette.
  6. Set the CommName property for each widget in the interface to the respective widget's variable name. So if you have a widget named "table1", set its CommName property to "table1".
  7. Run your new interface in Eclipse to verify that the upgrade procedure worked. If you encounter an error and the file will not run, contact us for assistance.


  1. Install the new CTAT Flash components as described on the Flash configuration page.
  2. Open an existing Flash interface (a file with extension .FLA) in the Flash/Animate IDE.
  3. For each component type in the interface that you would like to upgrade, drag that component from the CommComponents section of the Components panel onto the Flash stage.
  4. At the Resolve Component Conflict prompt, choose Replace existing component and press OK. All instances of that component will be upgraded to the new version.
  5. Delete the extra component that appeared on the stage.