Open edX Platform Atlasv1.0
Instructor Experiences

Gradebook & Assessment

Scaffold

Overview

Gradebook & Assessment covers the instructor-facing tools for viewing, managing, and adjusting learner grades — including the gradebook MFE, grade overrides, bulk grade import/export, and grade debugging tools.

Instructors use the gradebook to identify struggling learners, apply grade adjustments for extenuating circumstances, and manage the end-of-course grading process.

Current State (2026)

• Gradebook MFE: `frontend-app-gradebook` provides a filterable, sortable table of all learner grades by subsection

• Grade overrides: Instructors can override individual subsection grades with justification (audit log)

• Bulk grades: `edx-bulk-grades` allows importing/exporting grades via CSV for batch processing

• Grade recalculation: Available via instructor dashboard to recompute grades after policy changes

• Access: Course staff roles (instructor, staff) have gradebook access; learner grades visible per-course only

Architecture

• Frontend: `frontend-app-gradebook` calls the grades REST API in `edx-platform`

• Grades API: `edx-platform` exposes `/api/grades/v*` endpoints for subsection grades, course grades, and overrides

• Grade storage: Subsection grades stored in `PersistentSubsectionGrade`; course grades in `PersistentCourseGrade`; computed by Celery tasks

• Override model: `PersistentSubsectionGradeOverride` stores instructor adjustments with audit trail

• Bulk grades: CSV upload triggers background Celery tasks to update grades; `edx-bulk-grades` handles the CSV parsing and validation

History

Origin

• Year introduced: ~2012 (basic grade display in LMS); persistent grades model is newer (~2017–2018)

• Initial implementation: Grade computation was ephemeral (re-computed on demand); no separate gradebook UI initially

• Context: At scale (thousands of learners per course), computing grades on demand was not feasible; persistent grade storage was a major architectural investment

Key Milestones

~2012

Basic grade computation in LMS

~2017–2018

Persistent subsection grades model introduced

~2019–2020

Grade override feature added

~2020–2021

Gradebook MFE (`frontend-app-gradebook`) development

Open Questions

  • ?When was the persistent grade model introduced and what architectural challenges did it solve?
  • ?What drove the decision to build a dedicated gradebook MFE?
  • ?How are grade policies (weighted assignments, passing thresholds) configured and computed?
  • ?How does bulk grade import work — what validations are performed?
  • ?What are the most common instructor workflows that are painful in the current gradebook?