Search CTAT

CTAT 2.8 Release Notes

15 February 2010

Downloading and Installing

System Requirements

CTAT system requirements are commensurate with those of the Java Runtime Environment. Additional requirements may exist, depending on your authoring environment (Flash, NetBeans, and/or Eclipse).

Note: The CTAT installer is now compatible with Windows Vista.

New users

  1. Download and install CTAT 2.8
  2. Download and install additional software for authoring tutors. (Not sure whether to go with Java or Flash? Read our Java-Flash comparison.)
  3. If you'd like to build interfaces in Java, configure NetBeans.
    If you'd like to build interfaces in Flash, configure the Flash IDE.

Existing Users

  1. Uninstall CTAT.
  2. Delete the file brPrefs.xml from the folder in which you previously installed CTAT.
  3. Download and install CTAT 2.8.
  4. If you use NetBeans to build interfaces with CTAT, remove all CTAT widgets from NetBeans and add the new ones. If you had a very old version of CTAT (pre-1.5), remove the tutor template from NetBeans and add the new one.
    If you use Flash to build interfaces with CTAT, re-add the CTAT Flash components to the Flash IDE.
  5. Upgrade any existing interfaces as described below.

What's New in CTAT 2.8


  • Behavior graph rewiring. Directly change the structure of a graph by dragging and dropping the end of a link to point to another node.
  • Improvements to the link inspector. Editable hints, success/error message, and min/max traversals. You can now have up to three link inspectors open at the same time. To tell which link inspector corresponds to which link, selecting a link changes the link color from black to a new color, and the link inspector receives an outline of this same color.
  • Knowledge tracing. CTAT now calculates the probability that a student knows a particular skill (“pKnown”) for steps in an example-tracing tutor where skill names are defined. It does this using the algorithm described in Corbett, McLaughlin, and Scarpinatto (2000). Flash tutors that include the CommSkillBar component will see a list of skill names and bars corresponding to pKnown values, which are sent by CTAT. If a learner management system (LMS) is present and provides a list of “skills of interest” to CTAT, CTAT will use these skills to populate the CommSkillBar component. Otherwise, CTAT will use a list of skills it creates by searching the preferred path of the behavior graph.
  • Extended skill attributes of the behavior graph now include:
    1. a label field, which bears the (short) text to show on a skillometer
    2. a description field, which accepts a longer (1-2 sentences, up to 255 characters) explanation.
    We support entering these in the CTAT authoring interface and saving them in .BRD file where automated tools can read them easily. We also added the capability to display them in catalogs such as that shown at the bottom of the skill matrix and the skill names window.
  • New preference for setting the question asked on the confirmation dialogue displayed when the student tries to exit a Java tutor. This question is now a preference named “Student Confirm Quit Question”. The preference appears on the General preferences page. The default value matches the v2.7 fixed text (i.e., “Do you want to save your work and log out?”). When an author changes the preference, the new value is saved in the local brPrefs.xml, though not (yet) immediately reread by a running student interface. You can use an empty value in the preference to suppress the dialogue completely.
  • Copy/paste subgraph changes. Now you can copy/paste regardless of whether the copy/paste node is disconnected. Also, we now set the copy node to null after a successful paste operation so that you don’t mistakenly paste an old copy.
  • State- or link-triggered tutor-performed actions. Tutor-performed actions can now be state-triggered or link-triggered; before, they were always state-triggered. This option can be set at the bottom of the Edit Student Input Matching dialog.
  • Revised dialogs that appear when deleting nodes and links provide options for how the delete operation should be performed and provide clearer descriptions of what will happen.

Bug Fixes / Changes

  • Tweaked hint algorithm so that optional steps with hints defined are shown to the student. Specifically, the algorithm is now as follows (the necessary test #4 had been above the earliness test #3): 1. choose correct links over other types, suboptimal over incorrect; 2. prefer the link with hints if one of the pair lacks them; 3. prefer links higher (that is, earlier) in the path; 4. prefer necessary links to optional links; 5. if only 1 of the pair is preferred, choose it; 6. choose the link preferred by the more specific matcher; 7. choose the link with the lower ID number.
  • Setting Min/Max Traversal to 0-0 for a step now makes it non-existent, not out-of-order (CTAT2241).
  • Can now demonstrate a link into a state added below a link (CTAT2257).
  • In the elements that record skills at the bottom of the .BRD file, include an opportunity count for each skill. For an individual skill, the count is the number of times that the skill appears in steps along the preferred path. (CTAT2240)
  • Fixed a bug where the preferred path would not reset after link was deleted (CTAT2169)
  • Using link input (e.g., link5.input) in the ‘then’ or ‘else’ clause of ifThen formula now works (CTAT2180)
  • Fixed case in Action and Input message elements of “perform-tutor-action” for Jess tutors. (Thanks to Eric Brisson for reporting this.)

Flash Changes

  • New components: CommSkillBar, CommHintButton, CommHintWindow, CommSkinnedDoneButton
  • Fixed a bug where entering an answer then pressing tab did not move focus or evaluate cell if the student had used hints at all (CTAT2283).
  • Fixed a bug where the last open text area before the done button didn’t evaluate after tabbing (CTAT2286)
  • Fixed a bug where tab order didn’t work in subsequent problems (CTAT2279)
  • FlashLoggingLibrary: custom field logging now works in context messages
  • Changed logging so that log entries would not be lost if the Flash tutor exited too soon.
  • CommNumberBar: fixed bug where small steps sometimes had large tick marks (CTAT2272)
  • CommNumberBar: fixed bug where one couldn’t set CommTextArea or CommTextInput start state text if CommNumberBar was the next component in the tab order (CTAT2260)

Known Issues


  • NetBeans 6.7.1: class files are deleted if all jar files required for examples are not specified. Workaround is to add all JAR files required by the examples as described here.
  • Jess tutor-performed actions are not logged (CTAT2222).
  • The less-than sign does not display properly in CTAT's separate hint window (but it's fine in the integrated hint window).
  • In Cognitive Tutors, skills (rule names) are not logged.
  • DorminPicture does not provide any feedback message to the student when a step is out of order.
  • If a graph contains a link that is not represented in the cognitive model, a No Model warning dialog no longer appears at author time when input matches that link.


  • CommTable: student input is not evaluated on Tab or Enter (CTAT2325)
  • CommNumberBar: Can't set start state via demonstration (CTAT2264)
  • CommNumberBar does not behave the same when it is connected to the tutoring service vs. the Behavior Recorder for Flash (CTAT2278).
  • The component-specific methods The Correct Method, The InCorrect Method, and The Reset Method do not work when Suppress Student Feedback is turned on. The solution is to use a new CommShell parameter, MonitorLog, which will receive tool_messages and tutor_messages as they are logged.
  • In a Flash cognitive tutor, creating a start state no longer automatically generates working memory facts and templates for some components.
  • Flash components Jumble, Multiple Selection, and Media Multiple Selection have some known issues. Contact us if you're interested in using these components.
  • Flash widgets can't be modified in Set Start State mode.
  • CommCombobox does not work with some languages such as Japanese. The current workaround is to use HTML entities for these characters in these languages.

Both Flash and Java

  • Inconsistent behavior when clicking on a state (CTAT2249).
  • Tutor doesn’t reconnect to the tutoring service if the same session ID is used (CTAT2199)
  • Docked windows sometimes aren’t loaded on Mac (CTAT2198)
  • Demonstrating a step in an unordered graph that matches an existing step does no create a new link in the graph (CTAT2210). The workaround is to temporarily change the graph to “ordered” to demonstrate the step.
  • In graphs with Suppress Student Feedback enabled, success and error-feedback messages are not displayed, but they are logged. The feedback should not be logged, since it never appeared to the student.
  • Current state (a node with bold text) in an unordered graph is incorrect for Jess tutors (CTAT1927).
  • The JavasrcInstaller, used to set up source documentation for Java functions in the Formula Wizard, does not extract sources on the Mac. To do this manually, see Installing the Formula Wizard.
  • The enforceDone attribute of a behavior graph cannot be set from the CTAT user interface; it can only be set in the behavior graph XML using a text editor.

Upgrading an Interface to CTAT version 2.8

If you would like to use new CTAT widgets or components in an existing interface, you will need to upgrade that interface as described below. If you do not feel comfortable upgrading your interface, contact us and we will upgrade your interface.


  1. Backup your existing projects directory to a separate folder on your hard disk.
  2. Ensure that you've completed steps 1–4 listed above.
  3. Launch NetBeans, and view your project file hierarchy (Window > Files).
  4. Right-click on the folder containing the interface you'd like to upgrade, and click New In the "File Name" field, specify a name for this file that is anything but the name of the interface you're upgrading. All other fields can be left unchanged. It is not necessary to create a new subdirectory of Projects by modifying the Folder field, although you can if you prefer to do so.
  5. Press Finish.
  6. Expand the folder that contains the interface you're upgrading. You should see the .java and .class files for the interface you're upgrading, as well as the new .java file with the name you specified in the previous step.
  7. Open both the new file and original interface file by double-clicking each of their names in the Files panel.
  8. You should see both interfaces in "Design" mode. If you do not, click the button at the top titled "Design" for each interface. The new interface should contain only a blank panel.
  9. For your original interface, view the widget objects in the interface using the Component Inspector (Window > GUI Editing > Inspector). Within the Inspector panel (located on the bottom left of the NetBeans window by default), expand the TutorPanel object. This object has a blank icon. You should see a number of widgets appear within it.
  10. Select all of the interface widgets. On Windows, this can be accomplished by clicking the first widget inside TutorPanel, then while pressing and holding shift, clicking the last widget.
  11. Copy your widgets (CTRL+C on Windows, COMMAND+C on Mac).
  12. View the new interface that you created in step 4. Select the JPanel in the Inspector, and paste the widgets (CTRL+V on Windows, COMMAND+V on Mac). You now have a working CTAT 1.5-compatible interface.
  13. Run your new interface (SHIFT+F6) 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 CTAT 2.8 Flash components as described on the Flash configuration page.
  2. Open an existing Flash interface (a file with extension .FLA) in the Flash IDE.
  3. For each component in the interface that you would like to upgrade, drag that component from the CommComponents section of the Components tab 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.