Design a course registration system
Design a Course Registration System
Design an online course registration system for a university. The system should support the following core user stories:
Students:
- Search/browse courses by term, department, instructor, time slot.
- View course details (capacity, remaining seats, prerequisites, schedule).
- Enroll and drop courses.
- Join a waitlist if a course is full.
Admin/Registrar:
- Create/update course offerings each term (capacity, schedule, instructor).
- Set rules (prerequisites, enrollment windows, max credits).
Key requirements include:
- High concurrency during peak registration periods.
- No overselling seats: enrollment must not exceed capacity.
- Fair waitlist management (e.g., FIFO or priority rules).
- Prevent students from enrolling in conflicting time slots.
- Auditing of enrollment and drop actions.
Non-functional requirements:
- Strong consistency for seat counts during enrollment.
- High availability, with graceful degradation for search/browse features.
- Robust observability (metrics and alerts) for registration failures and latency.
Deliverables should include a high-level architecture, data model, APIs, a concurrency/control strategy for seat allocation and waitlists, and considerations for scaling and failure handling.
AI interview prep
Core dilemma
Balancing high concurrency and strict transactional consistency for critical seat allocation operations against the need for a responsive and available system for course browsing and administrative tasks.
3 tradeoffs and 3 stress tests locked
Interview prep
Unlock the interviewer X-Ray rubric, tradeoff matrix, stress tests, clarifying questions, and key concepts.
Design a course registration system
Design a Course Registration System
Design an online course registration system for a university. The system should support the following core user stories:
Students:
- Search/browse courses by term, department, instructor, time slot.
- View course details (capacity, remaining seats, prerequisites, schedule).
- Enroll and drop courses.
- Join a waitlist if a course is full.
Admin/Registrar:
- Create/update course offerings each term (capacity, schedule, instructor).
- Set rules (prerequisites, enrollment windows, max credits).
Key requirements include:
- High concurrency during peak registration periods.
- No overselling seats: enrollment must not exceed capacity.
- Fair waitlist management (e.g., FIFO or priority rules).
- Prevent students from enrolling in conflicting time slots.
- Auditing of enrollment and drop actions.
Non-functional requirements:
- Strong consistency for seat counts during enrollment.
- High availability, with graceful degradation for search/browse features.
- Robust observability (metrics and alerts) for registration failures and latency.
Deliverables should include a high-level architecture, data model, APIs, a concurrency/control strategy for seat allocation and waitlists, and considerations for scaling and failure handling.