Design Course Registration System

Difficulty: Hard Source: awesome-low-level-design

Requirements

  1. Students register for courses, view registered courses
  2. Course: code, name, instructor, max capacity
  3. Search by code or name
  4. Block registration at max capacity
  5. Handle concurrent registrations
  6. Data consistency, prevent race conditions
  7. Extensible

Class Diagram

Class Diagram


Classes, Interfaces and Enumerations

Class/Interface Description
Student Id, name, email, registered courses list
Course Code, name, instructor, max capacity, enrolled count
Registration Student, course, timestamp
CourseRegistrationSystem Singleton; ConcurrentHashMap + CopyOnWriteArrayList; synchronized registerCourse

Design Patterns Used

Pattern Application
Singleton CourseRegistrationSystem ensures a single point of coordination for all registration operations
Observer Placeholder for future notification support (e.g., notifying students when a seat opens)

Code Implementations

Language Source Code
Java View on GitHub
Python View on GitHub
C++ View on GitHub
C# View on GitHub
Go View on GitHub