Skip to content

Course Experience

Overview

The Course Experience is the primary in-course interface for enrolled learners. It includes courseware navigation (sections, subsections, units), content rendering (video, text, problems), assessment interaction, and progress tracking. This is the most time-intensive surface area in Open edX — where learners spend the majority of their platform time.

The course experience is delivered primarily by frontend-app-learning, which replaced the Django-rendered courseware view as the primary LMS frontend.

Current State (2026)

  • Primary MFE: frontend-app-learning is the canonical in-course experience for most Open edX deployments
  • Content rendering: XBlocks are rendered server-side (via edx-platform) and embedded in the MFE via iframes or direct API responses
  • Navigation: Sequences (sections > subsections > units) with breadcrumb, previous/next navigation
  • Video: Delivered via edx-val abstraction; supports YouTube, HLS, and self-hosted video with transcripts
  • Completion tracking: Block-level completion tracked by the completion library; drives progress display
  • Accessibility: Significant ongoing investment in WCAG 2.1 AA compliance across courseware

Architecture

  • Frontend: React SPA (frontend-app-learning) communicates with LMS REST APIs for enrollment, progress, and content data
  • Backend rendering: XBlock runtime in edx-platform renders XBlock HTML, JS, and CSS; served to the MFE
  • Grading: Subsection grades computed on submission, cached in courseware_student_module; recalculated by background Celery tasks on policy changes
  • State management: Per-learner, per-block state stored in StudentModule (legacy) and XBlockUserState tables in the LMS database
  • Date handling: Due dates and access windows managed by edx-when integration with the LMS

Relevant Repositories

RepositoryRole in This FeatureActivity LevelNotes
openedx/frontend-app-learningPrimary in-course MFEHighMain courseware UI
openedx/openedx-platformLMS backend: XBlock runtime, APIs, gradesHighlms/ directory
openedx/completionBlock completion trackingMediumUsed by progress display
openedx/edx-valVideo abstraction layerMediumVideo metadata + transcripts
openedx/edx-whenDue date and access managementLowDate policies
openedx/edx-submissionsLearner submission storageMediumBacks ORA and CAPA

Recent Changes

  • Migration from Django-rendered courseware to frontend-app-learning MFE (ongoing since ~Koa/2021)
  • Sequence navigation improvements
  • Completion API modernization

History

Origin

  • Year introduced: 2012 (original MITx launch, powering the first edx.org site)
  • Initial implementation: Django-rendered courseware with CoffeeScript (later removed before or around the June/July 2013 open-source release); courseware/views.py in edx-platform. Built by Dave Ormsbee, Piotr Mitros, and others working out of the CSAIL lab at MIT.
  • Context: Originally built by the CSAIL lab group for MITx. When Harvard joined the edX initiative in mid-2012, this same codebase powered the first edx.org site. 6.002x was among the first courses hosted on the platform. The work was inspired by OpenCourseWare but shared no code with it. The git history for the original implementation was wiped when the platform was open-sourced in June or July 2013; the open-sourced code was the same code running on edx.org at the time.

Key Milestones

YearMilestoneTeams / People Involved
2012Original courseware Django view launched with MITx; adopted for edX.org when Harvard joined the initiative mid-year; 6.002x among first courses hostedDave Ormsbee, Piotr Mitros, and others at CSAIL / early edX team
2013Platform open-sourced (June/July 2013); open-sourced code was identical to production edx.org code; git history wiped prior to releaseEarly edX engineering team (~10–15 engineers)
~2021frontend-app-learning MFE begins replacing Django courseware; was the third or fourth major MFE built as part of a broader frontend modernization effort that also included account, learner, and ecommerce MFEsEd Zarecor, Mark Haseltine, David Joy, Dave Ormsbee, Adam Butterworth, Nimisha Asthagiri, Kyle McCormick, Marco Morales, and others — Architecture / Teaching and Learning (TNL/T&L) team at edX
~2022–2024Progressive migration of features into MFEUnknown

People Who Shaped This Area

  • Engineering: Dave Ormsbee, Piotr Mitros (original 2012 CSAIL/MITx build); Ed Zarecor, Mark Haseltine, David Joy, Adam Butterworth, Nimisha Asthagiri, Kyle McCormick (MFE migration era)
  • Product: Marco Morales (MFE migration era)
  • Design: Unknown

Open Questions

  • [ ] What were the biggest technical challenges in the MFE migration?
  • [ ] Which teams at edX owned the course experience surface historically?
  • [ ] How was the XBlock rendering architecture originally designed, and has it changed significantly?
  • [ ] What were the most controversial design decisions in the course experience?

Schema Education — Internal Research