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
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.