“Design an online course app” is a content-and-progress mobile system design prompt — Coursera, Udemy, Khan Academy, Duolingo, Brilliant. The interview tests video infrastructure, cross-device progress sync, offline-first downloads, and the unique product engineering of a learning experience.
Clarify scope
- Pre-recorded video, live cohorts, or both?
- Quizzes, assignments, peer review?
- Certificates and credentials?
- Offline downloads with DRM?
- Web parity required?
Course data model
{
course: {
id, title, instructor, duration,
modules: [
{ id, title, lessons: [
{ id, type: "video|quiz|reading|assignment", durationSec }
]}
]
},
progress: {
courseId, userId,
lastLessonId,
lessonProgress: Map<lessonId, { percent, completed, lastWatchedSec }>,
quizScores: Map<quizId, score>
}
}
Video playback
- HLS for compatibility; fallback to MP4 for older devices
- Adaptive bitrate (ABR) on cellular vs Wi-Fi
- Captions in multiple languages (sidecar VTT)
- Speed control (0.75x–2x) — heavy use in learning
- Resume from last position; sync across devices
- Picture-in-Picture for desktop / iPad multitasking
Offline downloads
- Per-lesson downloads, not whole-course (better for storage)
- Background download via OS background-transfer APIs
- Encrypted at rest with FairPlay (iOS) / Widevine (Android) — required for licensed content
- Storage management: show usage, allow per-lesson delete
- Auto-delete completed lessons option
Progress sync
- Optimistic local update; debounced upload (every 30 sec or at lesson boundary)
- On app foreground: pull latest from server
- Conflict: latest-write-wins per lesson is acceptable
- Cross-device: start on phone, finish on tablet
Quizzes
- Multi-choice, fill-in, code questions
- Auto-graded; instant feedback
- Score and explanation per question
- Support for multiple attempts; track best score
- For coding quizzes: in-app code editor (CodeMirror) or remote sandbox
Assignments and peer review
- File upload (essay, video) for peer-reviewed work
- Peer-grading queue
- Rubric-based grading
- Reviewer anonymization
Certificates
- Issued on completion
- Verifiable URL with course ID + user hash
- LinkedIn integration to share
- Optional paid track for verified credential
Notifications
- Reminder to continue (“You have 5 min left in lesson 3”)
- New cohort starts (live courses)
- Assignment due in 24h
- Peer review pending
- Per-category opt-out
Discovery
- Browse by topic, level, instructor
- Personalized recommendations based on completed courses
- Search with filters (free, length, language)
- Editorial collections (“Top courses for new managers”)
Live cohort features
- Schedule of upcoming live sessions
- Calendar integration
- Live video stream with chat
- Recordings for missed sessions
- Cohort discussion threads
Performance considerations
- Video pre-fetch: download next lesson when current is 80% complete (Wi-Fi only)
- Image lazy-loading for course catalog
- Local search of downloaded courses for offline browsing
- Memory: release decoded video buffers behind playback head
What separates senior from staff
Senior candidates draw the data model and video playback. Staff candidates discuss DRM-protected offline downloads, cross-device progress sync, and the assignment/peer-review loop. Principal candidates address the live cohort architecture, the recommendation pipeline, and the credential/cert verification system.
Frequently Asked Questions
How do I handle 1080p video on cellular?
ABR auto-selects lower bitrate; show “Wi-Fi only HD” toggle. Cellular default is 480p–720p depending on carrier and user setting.
What about LLM-powered Q&A on course content?
2025+ trend: integrated AI tutor that answers questions about lesson content. RAG over the course transcript and supplementary materials. Out of core scope but worth mentioning.
How does Duolingo / Brilliant differ from Coursera?
Bite-sized practice instead of long-form lectures. Streak mechanics, gamification, daily-habit framing. Same underlying architecture but different content shape and incentive design.