Grade Integration

Requirement: Grade data exchange

If an edX exercise is graded, the result of a student's interaction should be passed back to the campus LMS to be stored in the gradebook. This project's scope only involves passing the score to the LMS, not how the campus system interprets or stores the result.


Grading in edX

Grade Generation

Grades in edX are dynamically generated on demand. The system traverses the XBlock tree for a given piece of work to determine both the maximum possible score for a given student, and the actual score obtained. For more details, see Grades Resources

Grade Timing

The grade for an exercise in edX may not be immediately available when the student completes the assignment. This could happen for a number of reasons - one of the more obvious would be the use of peer grading. A student's work may not be evaluated for some time after it is submitted. An XBlock generates a grading event when the assignment's grade is ready; we should be able to hook into this event to transmit a grade to the campus system.
Grade Mutability

Grades in edX may be modified after they are first recorded. This is generally the result of a change to the underlying assignment. For example, all students' work may be regraded if an instructor realizes that an accepted answer is incorrect, or if a new question is added to a problem set. As in the case of a delayed grade, the XBlock will generate an event that will notify us of an updated grade.


LTI Basic Outcomes Service

We will use the LTI Basic Outcomes Service (introduced in LTI version 1.1) to pass grades back to the campus system. In cases where the Outcomes service is not available, we will not return grades to the LMS, but we will allow edX content to be launched over LTI.

The LTI launch must contain the URL of the outcome service (in the lis_outcome_service_url field of the launch). The LTI launch must also identify the user and resource link combination using the lis_result_sourcedid field. We will have to persist both these fields indefinitely in order to return asynchronous grades or to submit regrade outcomes.

The outcomes service provides three (optional, but recommended) endpoints for grading:

  • replaceResult
  • readResult
  • deleteResult

Of these three, we will only need to interact with replaceResult. Since there is no distinction made in the LTI spec between the initial setting of a grade and its subsequent update, we can use the same code for either case.


Grading Service Failure Cases

  • Outcome service URL can change.
  • Outcome service can be missing.
  • Outcome service may not provide the replaceResult endpoint.
  • LTI launch may not supply the required parameters.