Maple T.A. Adaptive Assignment

Introduction

Starting with MapleTA version 9.5, a new assignment type named Adaptive Assignment is available. Within this type of quiz questions can placed into one to five different groups or branches. Each branch can be treated as a different level of difficulty. A student's pathway through the various branches of questions is determined by the branching policy selected from among the options provided by MapleTA or from an instructor's short Maple script. Adaptive assignments do not include the usual Question Menu allowing students to select the order of the quiz questions.

Documentation

MapleTA verion 9.5 Instructor documentaion:
http://www.maplesoft.com/support/help/MapleTA95/MapleTAInstructor/

Chapter 3.5 is about the Adaptive Assignment Editor:
http://www.maplesoft.com/support/help/MapleTA95/MapleTAInstructor/ch03s05.aspx

Note 1: Figure 3.14 in chapter 3.5 is correct. The text description just above the figure is not correct [1] as the text for decreasing difficulty uses correct answers instead of incorrect answers.

Note 2: A description of the Algorithmic settings of the Adaptive Assignment is missing [1] from the mapleTA Instructor help documentation. The following sections make use of the MapleTA 9.5 program to describe how the Adaptive Assignment Algorithmic settings work.

Adaptive Assignment Settings

The Adaptive Assignment editor and settings start with the same editor look and settings options as the other available MapleTA assignment types. What is different is the addition of branches in the Select Questions step.

In the other assignment types, questions and their point values are selected for the asssignment and students are offered each question the instructor selects when the assignment is delivered to the student.

With the Adaptive assignment type, instructors select and place questions into branches (i.e. groups) and then select options on how a student can move from one branch of questions to another branch depending on how well the student has done so far in the assignment.

Selecting questions to add to branches works like selecting questions for any assignment. One difference is that question point values cannot be changed. Instead, a branch weight factor can be adjusted. All the questions in any branch have to be weighted as 1 point, but a whole branch can be weighted differently from other branches.

Four additional branches can be added to the default starting branch. And, the instructor can select a different starting branch.

There are two main types of settings that control Adaptive assignments. One type is the Grade or exit policy, the other type is the Branching policy.

Grade Policy Settings

The Grade policy setting determines when an assignment should end and how the assignment grade should be calculated. There are two forms of this policy, the Basic form and the Algorithmic form.

  1. The Basic form of the exit setting is composed of the boolean OR combination of the following three conditions, where X, Y, Z are instructor selected integers:
          X questions seen
          Y questions correct
          Z questions incorrect
    

    And, the Basic marking policy is the default one of the assignment grade being the weighted sum of the branches visited i.e. \[\sum_{ith\ visited\ branch} numberCorrectInBranch_i * weightOfBranch_i \]

    These settings are located within the Adaptive assignment editor, on the Select Questions page, within the Policies subpage. All an instructor has to do to use the Basic Grade policy is to pick the desired conditions (see above) in the "Grade Assignment When" box and select the Basic option in the "Grade Policy" box.

  2. The Algorithmic form of the Grade policy has the instructor write a small script using Maple programming syntax. In this script are two possible MapleTA grading statements:

Further testing of the Adaptive assignment might confirm that the Basic and Algorithmic forms of the Grade policy are not exclusive, but are combined to determine the earliest exit from the assignment. If an instructor wishes the Algorithmic form to prevail, then the stopping condition numbers used in the Basic form will have to be set sufficiently high to ensure this outcome. But, two tests (examples 2 and 3 below) show contradictory results [1]. Both examples 2 and 3 have a maximum limit of 5 questions and both example scripts have algorithmic exit conditions, yet only example 2 ends after 5 questions. Example 3 continues until the script exit condition is triggered.

It should be mentioned that it is even possible to use either of the above Maple script statements GRADE or returnGrade(N) when selecting the Basic marking policy, if the instructor selects the Algorithmic Adaptive branching policy settings described in the next section, since, as we'll see, the Algorithmic branching setting uses the same Maple programming script as the Algorithmic form of the Grade policy settings. However, under these circumstances, while the GRADE statement behaves as described above, returnGrade(N) becomes in effect the simpler GRADE statement, ending the assignment but using the default marking policy above, and not giving the student a mark of N. Thus, to use returnGrade(N), Algorithmic grading must be selected.

Branching Policy Settings

The Branching policy setting determines, after a question has been answered, from which branch the next question will be selected. Again, there are two forms of this policy, the Basic form and the Algorithmic form.

  1. The Basic branching form is

    An instructor, selects integer values for N and M, whose default values are 1. Remember, the starting branch is selected on the "Select Questions" page.

  2. The Algorithmic branching form again uses a short script of Maple code. This code is run after each question is delivered and answered, and the last executed statement in the code is an integer value choosing the index of the branch to be used for the next question. The integer value can be a Maple variable name with that value, or just an integer constant.

    If there is a syntax error or other kind of execution error in the Maple script code, there is no warning or other kind of error message for the instructor. The program will simply use the basic branching form above to choose the next question branch.

  		       | Basic Settings                     | Algorithmic settings
  	--------------------------------------------------------------------------------
  	Grading & exit | Exit assignment when               | Exit when last executed
  	policy         | (select 1 or more)                 | script stmt is
  		       | X questions seen, or               |   GRADE;  or
  		       | Y questions correct, or            |   returnGrade(N);
  		       | Z questions wrong                  |
  		       |                                    |
  		       | final grade =  SUM over            |
  		       | ith_visitied_branch of             |
  		       |   ( num_correct_in_branch(i)       |
  		       |     * weight_of_branch(i) )        |
  	--------------------------------------------------------------------------------
  	Branching      | * increase branch by 1             | Last executed script stmt 
  	policy         |   for N (non-)consecutive correct  | is a number or var value
  		       | * decrease branch by 1             | of branch to next question
  		       |   for M (non-)consecutive incorrect|

Maple Script Code

Instructors can create and use their own script variables, but the values of the variables are not saved between questions; they are treated as local variables as in a function or procedure. Instructors have to rely on the state variables supplied by MapleTA (listed below) to know something of the past performance of a student during the assignment.

State variables provided in the Agorithmic branching form should also be treated as local varaibles, not as global variables that can be changed in the Maple script code and remembered in the next invocation of the script. For example, changing the variable streak to 0 will reset it only while the script is running.

Maple script code can include Maple variables and constants, as well as if, for and assignment statements. Examples below show all these statements. The return statement does not work.

As mentioned above, there is no warning or error message when improper Maple syntax is used. Be mindful of using := for assignment statements, especially since the the small script font size makes it easy to use a semi-colon by mistake.

Examples of Grading and Branching scripts

To allow an instructor to adapt the delivery and marking scheme to a student's performance in the assignment, certain information of the past and current state of the assignment is needed. MapleTA makes the following variables available to the instructor to provide that state information.

      num_branches:      number of branches in the assignment
      GRADE:             statement triggers end of assignment and student receives a mark based on the default marking policy
      returnGrade(X):    statement triggers end of assignment and student receives a mark of X
      branch_names:      names of the branches as a list of strings
      branch_weights:    weights of the branches as a list of double values
      start_branch:      starting branch of the assignment
      seen:              number of questions a student has seen (i.e. done; value is never 0 in script)
      correct:           number of questions a student has correct
      incorrect:         number of questions a student has incorrect
      streak:            number of question correct/incorrect in a row
                         (+2 means 2 correct in a row, -3 means 3 incorrect in a row, value is never 0 in script)
      responses:         list of the students correct (1) or incorrect (0) responses
                         (a Maple list e.g [1, 0 , 1, 1, 1])
      response_branches: list of the branches that each question was drawn from
      current_branch:    branch the last question was drawn from (1..num_branches)
      #:                 Maple code comment-to-end-of-line character

Grading examples:

Example 1: Algorithmic exit with default grading and Basic branching.

Grade the assignment after correctly answering three questions in a row in this 1 branch example.

Normally the streak variable would be used here in the script, but it doesn't always work [1]. See the failed examples in a later section of this page.

example 1 branch diagram
  # Should be able to use simple if-stmt with streak variable:
  # if streak = 3 then 
  #   GRADE;
  # end if;
  # but have to use, for-loop instead of streak
  #
  # grade after 3 correct in-a-row
  branch1_right := 0;
  for i from 1 to seen do
    if responses[i] = 1 then
      branch1_right :=  branch1_right + 1;
    elif responses[i] = 0 then
      branch1_right := 0;
    end if;
  end do;
  if branch1_right = 3 then
    GRADE;
  end if;

Example 2: Algorithmic exit and grading and Basic branching.

Grade the assignment after failing three questions at any time on the first branch or two questions at any time on the second branch.

Interestingly, this assignment has a maximum limit of 5 questions and it ends after 5 questions. Contrast this with example 3, which also has a maximum of 5 questions but does not exit after 5 questions [1]. Both example scripts have exit conditions.

example 2 branch diagram
  # grade after 3 incorrect on branch 1 
  # or 2 incorrect on branch 2  
  
  branch1_wrong := 0;
  branch2_wrong := 0;
  for i from 1 to seen do
    if responses[i] = 0 and response_branches[i] = 1 then
      branch1_wrong :=  branch1_wrong + 1;
    elif responses[i] = 0 and response_branches[i] = 2 then
      branch2_wrong :=  branch2_wrong + 1;
    end if;
  end do;
  if (branch1_wrong = 3) or (branch2_wrong = 2) then
    returnGrade(-4.3);   # return any grade for testing this script
  end if;

Branching examples:

Example 3: Algorithmic exit with default grading and Algorithmic branching.

Two topics are tested in this assignment, one at branch level 2 and the other at branch level 4. The assignment ends when both tests are passed perfectly with 5 right answers in a row. If any test question is incorrect a lower tutorial branch of questions is delivered, using branch 1 for the tutorial questions of the branch 2 test and using branch 3 for the tutorial questions of the branch 4 test. The student will have to be successful with 4 tutorial questions in a row to try any test questions again.

See the comment in example 2 about the maximum number of questions in this assignment being ignored.

example 3 branch diagram
  # branch1 holds tutorial questions for test 1 questions in branch2
  # branch3 holds tutorial questions for test 2 questions in branch4
  
  leave := false;              # set to true when assignment should exit
  if current_branch = 1 then   
    if streak = 4 then         # 4 in-a-row ok so go on to test in branch 2
      next_branch := 2;
    else
      next_branch := 1;        # else continue with tutorial Qs 
    end if;
  elif current_branch = 2 then # go on to 2nd test if 5 in-a-row ok on this test
    if streak >= 5 and response_branches[1+seen-5] = 2 then   # check streak only on branch 2, not branch 1 and 2
      next_branch := 4;
    elif responses[seen] = 0 then  # fallback to tutorial Qs if get a test Q wrong
      next_branch := 1;
    else
      next_branch := 2;
    end if;
  elif current_branch = 3 then
    if streak = 4 then         # 4 in-a-row ok so go to test in branch 4
      next_branch := 4;
    else
      next_branch := 3;        # else continue with tutorial Qs
    end if;
  elif current_branch = 4 then # 5 in-a-row ok on test 2 means exit
    if streak >= 5 and response_branches[1+seen-5] = 4 then
      leave := true;
    elif responses[seen] = 0 then  # fallback to tutorial Qs if get a test Q wrong
      next_branch := 3;
    else
      next_branch := 4;
    end if;
  end if;
  if leave then
    GRADE;
  else
    next_branch;
  end if;

Example 4: Basic exit with default grading and Algorithmic branching.

The first question asks the student if they wish to start (or continue) with easier or harder questions and sends the student to the desired branch of questions. If they perform poorly with the harder branch (indicated by 3 failed questions in a row) or very well (say 10 in a row correct but the script test used 4 in a row correct) in the easier branch they are asked again which difficulty level they wish to continue with.

Students can stop and grade the assignment any time they wish.

example 4 branch diagram
  next_branch := current_branch;
  if current_branch = 1 then
    if responses[seen] = 1 then # student wants to start with easier questions
      next_branch := 2;         # go to easier branch
    else
      next_branch := 3;         # go to harder branch
    end if;
  elif current_branch = 2 then
    # check for correct streak of 10 in branch 2
    if streak >= 4 and response_branches[1+seen-10] = 2 then
      next_branch := 1;         # go to decision branch 1
    else
      next_branch := 2;         # remain on this branch 2
    end if;
  elif current_branch = 3 then
    # check for incorrect streak of 3 in branch 3
    if streak <= -3 and response_branches[1+seen-3] = 3 then
      next_branch := 1;         # go to decision branch 1
    else
      next_branch := 3;         # remain on this branch 3
    end if;
  end if;
  next_branch;

Maple script code examples that should work but don't [1]:

Example F1: Algorithmic exit with default grading and Algorithmic branching.

This script should end the assignment when two questions are answered incorrectly in a row (there are two branches in this setup). But, this assignment ends when it reaches its 10 question limit, even when every question is answered incorrectly.

  if streak = -2 then   # this script also fails with condition streak = 2
    GRADE;
  end if;

In contrast, this script using the streak variable, works as expected, bouncing back and forth between branches 1 and 5 with streaks of 2 correct questions and 2 incorrect questions:

  next_branch := current_branch;
  if streak = 2 then
    next_branch := 5;
  elif streak = -2 then
    next_branch := 1;
  end if;
  next_branch;

[1] Points in the text of this page marked with [1] are questions to settle or areas that need addressing.


Contact

Paul Kates
Mathematics Faculty CTE Liaison
pkates@uwaterloo.ca, x37047
Last modification date: Thu Jun 19 00:54:25 2014.