A modular, test-driven Adaptive Learning Platform built using classical Data Structures & Algorithms (DSA).
The system simulates how a real-world intelligent learning platform works—using data structures like Trie, Graph, Priority Queue, Array, and HashMap to power search, sequencing, history, and recommendations.
This project demonstrates clean architecture, modern Python practices, and full automated testing suitable for academic submission and professional portfolios.
Fast prefix-based search for:
- Course titles
- Sequence titles
Used for autocomplete and content discovery.
Courses and their prerequisites are stored as a Directed Acyclic Graph (DAG):
- Add courses
- Add prerequisites
- Retrieve direct and indirect prerequisites
- Perform topological sorting
Sequences are scheduled using a min-heap priority queue:
- Lower priority = executed earlier
- Stable ordering (FIFO for equal priority)
- Students progress step-by-step
Logs activities using:
- Array indexes
- Activity objects
Tracks:
- Completed sequences
- Quiz scores
- Timestamps
Ranks the next best courses using:
- Difficulty alignment
- Progress gap
- Recency of learning
Provides explanation strings for transparency.
A full menu-driven CLI to interact with the system:
- Register students
- Search content
- Enroll in a course
- Complete sequences
- View history
- Generate recommendations
| Feature | Data Structure | File |
|---|---|---|
| Content Search | Trie | core/search/trie.py |
| Course Prerequisites | Directed Graph | core/graph/course_graph.py |
| Sequence Scheduling | Min-Heap | core/scheduling/sequence_scheduler.py |
| Student Registry | HashMap (Dict) | core/models/student.py |
| Activity History | Array | core/history/history.py |
| Recommendations | Weighted Scoring + Sorting | core/recommendations/recommendation_engine.py |
adaptive-learning-platform/
├─ core/
│ ├─ models/
│ │ ├─ course.py
│ │ ├─ sequence.py
│ │ ├─ student.py
│ │ ├─ activity.py
│ │ └─ recommendation.py
│ ├─ search/
│ │ └─ trie.py
│ ├─ graph/
│ │ └─ course_graph.py
│ ├─ scheduling/
│ │ └─ sequence_scheduler.py
│ ├─ history/
│ │ └─ history.py
│ ├─ students/
│ │ └─ student_service.py
│ ├─ recommendations/
│ │ └─ recommendation_engine.py
│ ├─ persistence/
│ │ └─ storage.py
│ ├─ config.py
│ └─ logging_config.py
├─ cli/
│ └─ cli.py
├─ tests/
│ ├─ test_trie.py
│ ├─ test_course_graph.py
│ ├─ test_sequence_scheduler.py
│ ├─ test_student_history.py
│ ├─ test_students.py
│ ├─ test_recommendations.py
│ ├─ test_storage.py
│ └─ test_integration_flow.py
├─ docs/
│ ├─ architecture.md
│ └─ api_examples.md
├─ .github/
│ └─ workflows/
│ └─ ci.yml
├─ README.md
├─ CONTRIBUTING.md
├─ LICENSE
├─ requirements.txt
├─ pytest.ini
└─ .gitignore