Skip to content

Grading & Exam Tools

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

Relevant Repositories

RepositoryRole in This FeatureActivity LevelNotes
openedx/frontend-app-gradebookGradebook MFEMediumPrimary grades UI
openedx/edx-bulk-gradesCSV bulk grade import/exportLowBatch grade management
openedx/openedx-platformGrade backend: storage, computation, APIHighCore grades system

Recent Changes

  • Gradebook MFE incremental improvements
  • Persistent grade model stability

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

YearMilestoneTeams / People Involved
~2012Basic grade computation in LMSUnknown
~2017–2018Persistent subsection grades model introducedUnknown
~2019–2020Grade override feature addedUnknown
~2020–2021Gradebook MFE (frontend-app-gradebook) developmentUnknown

People Who Shaped This Area

  • Engineering: Unknown — open question for interview
  • Product: Unknown — open question for interview
  • Design: Unknown — open question for interview

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?

Schema Education — Internal Research