Student Elective Course Recommendation System
A graduation project — a full-stack Django-based Student Information System (OBS) with an integrated Item-Based Collaborative Filtering engine that delivers personalized elective course recommendations to university students, backed by three role-specific dashboards, live classes via WebRTC, Firebase notifications, and a Cosine Similarity model serialized with Pickle.

The Problem
University students face a complex decision-making process when selecting elective courses from large catalogs. Traditional Student Information Systems only display course lists without any personalized guidance — leading to uninformed choices, reduced academic success, and increased advisor workload. There was a need for a data-driven, intelligent platform that integrates seamlessly into an existing OBS and surfaces meaningful, personalized elective suggestions based on each student's academic history.

The Solution
The system was built as a comprehensive web platform targeting three user profiles — Students, Academics, and Admins — each with a dedicated, role-protected dashboard. At its core, an Item-Based Collaborative Filtering engine computes an inter-course Cosine Similarity matrix from historical enrollment data (serialized via Pickle) and surfaces the top-N most relevant elective courses for each student. A cold-start handler ensures recommendations remain available even for newly enrolled students with limited history. The platform also provides attendance tracking, GPA summaries, live classes (WebRTC), Firebase real-time notifications, grade management, leave requests, and PDF/Excel report export.
Role-Based Platform
Three fully isolated dashboards: Students browse and select electives, view recommendations, track attendance, GPA, and grades, and join live classes. Academics manage courses, grade components, attendance, and advising. Admins control the full system — users, faculties, courses, academic calendar, registration periods, and the recommendation model file.
Similarity Computation & Recommendation
A student–course enrollment matrix is built from historical data. Cosine Similarity is applied across all course pairs to produce an item similarity matrix, saved as item_similarity.pkl via Pickle. At recommendation time, the system identifies courses the student has taken, retrieves their most similar unseen electives, scores and ranks them, then filters results to the current semester and elective type — returning the top-N suggestions.
Cold-Start Handling & Integration
For students with fewer than two recorded elective courses, pseudo-history entries are temporarily injected to keep the engine running. The recommendation module is fully decoupled from the rest of the OBS — the .pkl file can be retrained and swapped by an admin without touching the application code. Firebase delivers real-time notifications when new recommendations or course-registration events occur.
Architecture
Django MVT monolith with a decoupled recommendation sub-app. The similarity model is pre-trained offline and loaded at runtime via Pickle, keeping inference fast and independent from the main OBS codebase. Role-based routing and middleware protect every dashboard endpoint.
- Backend: Django (MVT) — views, forms, ORM, role-routing middleware (LoginCheckMiddleWare)
- Recommendation Engine: obs_system_app/recommendation/ — utils.py (load + recommend), item_similarity.pkl
- Algorithm: Item-Based Collaborative Filtering — Cosine Similarity via Scikit-Learn
- Database: PostgreSQL — Students, Teachers, Laboratories, Subjects, Reservations, Grades, Attendance
- Frontend: Bootstrap 5 + AdminLTE — responsive dashboards for all three roles
- Notifications: Firebase Realtime — push notifications for all user profiles
- Live Classes: WebRTC — browser-based video/audio without external plugins
- Serialization: Pickle — pre-trained similarity matrix stored as item_similarity.pkl
Dataset
Source: University enrollment records — historical student–elective course selection data from Sivas Cumhuriyet University Computer Engineering department
- Student–Course enrollment matrix: rows = students, columns = elective courses
- Values represent enrollment history (binary or weighted by grade)
- 38+ elective courses across 8 semesters tracked per student
Total: 500 students, 72 elective courses across 8 semesters (live system data)
Split: No train/test split — model trained on full historical enrollment data; evaluated via 4 functional test scenarios
Image Size: N/A (tabular enrollment data)
Training Details
- algorithm: Item-Based Collaborative Filtering (IB-CF)
- similarityMetric: Cosine Similarity
- library: Scikit-Learn (sklearn.metrics.pairwise)
- modelSerialization: Pickle (.pkl format)
- topN: 5
- coldStartThreshold: < 2 elective courses → pseudo-history injection
- framework: Python 3 + Django
- updateMechanism: Admin uploads new item_similarity.pkl via dashboard
Results & Analysis
Metrics:
- Scenario 1 — Returning Student: Recommendations were meaningful and semester-appropriate based on past elective history
- Scenario 2 — New Student (Cold Start): Cold-start handler activated; system delivered valid suggestions with an informational warning
- Scenario 3 — Semester/Type Filter: Filtering worked correctly — no out-of-semester or compulsory courses were recommended
- Scenario 4 — Corrupt/Missing Model File: System gracefully returned an empty recommendation list; all other OBS functions remained unaffected
Observations:
- Recommendation accuracy improves significantly as the student enrollment dataset grows.
- Cold-start pseudo-history injection keeps the system functional for new students without degrading the experience.
- Decoupling the .pkl model from application code allows seamless retraining without any downtime.
- Semester and course-type filters eliminate irrelevant suggestions, increasing student trust in the system.
- The modular architecture makes it straightforward to swap IB-CF for hybrid or deep-learning-based algorithms in future iterations.
Future Improvements
- Resolve cold-start limitations by incorporating student interest surveys, social network data, or extracurricular participation as auxiliary features.
- Adopt hybrid recommendation models or deep-learning-based approaches (e.g., neural collaborative filtering) to improve accuracy and diversity.
- Integrate GPA, academic standing, and career goals into the recommendation pipeline for more holistic suggestions.
- Develop a mobile application to extend system accessibility beyond the web platform.
- Test and adapt the platform for deployment across different universities and departments.
- Add advisor/instructor feedback loops to continuously fine-tune recommendation quality.
- Expand the database and infrastructure to support big data processing and AI-based analytics at scale.
Technologies Used
Project Gallery














