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-learningis 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-valabstraction; supports YouTube, HLS, and self-hosted video with transcripts - Completion tracking: Block-level completion tracked by the
completionlibrary; 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-platformrenders 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) andXBlockUserStatetables in the LMS database - Date handling: Due dates and access windows managed by
edx-whenintegration with the LMS
Relevant Repositories
| Repository | Role in This Feature | Activity Level | Notes |
|---|---|---|---|
| openedx/frontend-app-learning | Primary in-course MFE | High | Main courseware UI |
| openedx/openedx-platform | LMS backend: XBlock runtime, APIs, grades | High | lms/ directory |
| openedx/completion | Block completion tracking | Medium | Used by progress display |
| openedx/edx-val | Video abstraction layer | Medium | Video metadata + transcripts |
| openedx/edx-when | Due date and access management | Low | Date policies |
| openedx/edx-submissions | Learner submission storage | Medium | Backs ORA and CAPA |
Recent Changes
- Migration from Django-rendered courseware to
frontend-app-learningMFE (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.pyinedx-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
| Year | Milestone | Teams / People Involved |
|---|---|---|
| 2012 | Original courseware Django view launched with MITx; adopted for edX.org when Harvard joined the initiative mid-year; 6.002x among first courses hosted | Dave Ormsbee, Piotr Mitros, and others at CSAIL / early edX team |
| 2013 | Platform open-sourced (June/July 2013); open-sourced code was identical to production edx.org code; git history wiped prior to release | Early edX engineering team (~10–15 engineers) |
| ~2021 | frontend-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 MFEs | Ed 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–2024 | Progressive migration of features into MFE | Unknown |
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?