A C++ prototype system developed for Asia Pacific University (APU) to simulate personalised programming learning, track student progress, manage learning sessions, log activities, and identify at-risk learners.
No STL containers used (
<vector>,<list>,<queue>,<stack>,<priority_queue>) — all data structures are custom-built.
PLAPS is built around four core components, each handled by a team member using appropriate data structures:
| Task | Description | Data Structure |
|---|---|---|
| Task 1 | Learner Registration & Session Management | Queue |
| Task 2 | Activity Navigation & Session Flow | Stack |
| Task 3 | Recent Activity Logging & Performance History | Circular Queue |
| Task 4 | At-Risk Learner Priority & Recommendation Engine | Priority Queue |
- Register learners and manage entry into active sessions
- Handle full session capacity
- Allow learners to exit and free up session slots
- Display registration list and active session list
- Structured sequence of learning activities
- Move forward to next activity
- "Go back" / undo to revisit previous activities (Stack)
- Record outcomes (score, topic, difficulty) and forward to logger
- Fixed-size circular log — old records auto-replaced when full
- View all activity logs or filter by specific learner
- Export activity records to CSV for analysis
- Calculate risk score based on scores, failed attempts, consistency, time vs progress
- Rank learners by risk level using Priority Queue
- Display highest-priority at-risk learners
- Attach recommended actions (repeat topic, easier activity)
- Export at-risk learner list to CSV
Assignment2 Final Version/ ├── Activity.cpp / Activity.hpp # Activity navigation logic ├── Analytic.cpp / Analytic.hpp # Analytics & risk scoring ├── Array.cpp / Array.hpp # Custom array data structure ├── Helper.cpp / Helper.hpp # Utility/helper functions ├── LinkedList.cpp / LinkedList.hpp # Custom linked list ├── Logger.cpp / Logger.hpp # Circular log implementation ├── Question.cpp / Question.hpp # Question/activity model ├── Session.cpp / Session.hpp # Session queue management ├── Student.hpp # Learner data model ├── main.cpp # Driver program ├── activity_logs.csv # Activity log dataset ├── at_risk_learners.csv # At-risk learner export ├── learner.csv # Learner records ├── logger.csv # Logger export └── question.csv # Question dataset
# Compile
g++ -o mySystem main.cpp Activity.cpp Analytic.cpp Array.cpp Helper.cpp LinkedList.cpp Logger.cpp Question.cpp Session.cpp
# Run
./mySystem- Language: C++
- Data Structures: Queue, Circular Queue, Stack, Priority Queue (all custom-built)
- No STL containers used
| Member | Task |
|---|---|
| Chan Xin Quan | Task 1 — Learner Registration & Session Management |
| Sawraw Madub | Task 2 — Activity Navigation & Session Flow |
| Chen Zhen Hao | Task 3 — Recent Activity Logging & Performance History |
| Kaemon Ng | Task 4 — At-Risk Learner Priority & Recommendation Engine |