Course Recommender: Documentation

A technical reference for the DAV Team Course Recommender, IIT Bombay

1 Introduction

The Course Recommender helps IITB undergraduates discover elective courses that align with both their academic history and their stated research interests. It combines two complementary signals to generate personalised recommendations:

  • Popularity/Co-enrollment Score (PS): captures collective intelligence by analysing enrollment overlap across the student body. It answers: "What courses did students with a similar history tend to take?"
  • Interest Similarity Score (ISS): uses semantic embeddings and keyword mapping to match course content against your stated research interests and skills. It answers: "What courses are most relevant to what I actually want to learn?"

The final recommendation score is a weighted sum of PS and ISS, with the weights controlled by a set of options sothat you can tune the balance to your preference. After scoring, every candidate course is passed through a multi-layer eligibility engine before being shown.

ⓘ  The recommender operates on the currently running semester's course list. Eligibility checks reflect department restrictions, prerequisites, and time-slot constraints for that semester.

Search Syntax

Describe what you're looking for naturally. You can search by topic, career goal, department, minor, or grading preference, and combine multiple filters in one query.

Examples

  • By topic: Machine learning, Power engineering, Game theory, Computer vision, Manufacturing, Algebra, Statistics
  • By career: Courses for quantitative finance, consulting, robotics engineering, AI research, entrepreneurship
  • By department: EE courses related to power engineering, CS courses on computer security, Mechanical courses on CAD, Mathematics courses on statistics
  • By minor: EE minor courses, CS minor courses on AI, Robotics minor courses on embedded systems, CMInDS minor courses on AI/ML, Entrepreneurship minor courses on finance
  • Easy grading: Easy grading machine learning courses, easy grading ABC department courses, Good grading statistics courses
  • Excluding departments: Machine learning courses excluding ABC department, Robotics courses but don't recommend ABC department, AI courses except ABC department
  • Excluding specific courses: Machine learning courses excluding XY 123, Power systems excluding XY 123, Statistics courses except XY123

Mix Multiple Filters

You can combine several preferences in a single search. Examples:

  • Easy grading EE courses on power systems
  • CS minor courses on AI with good grading
  • Machine learning courses excluding EE
  • Consulting courses from the Mathematics department
  • Robotics minor courses excluding embedded systems
  • AI courses from the CS department excluding XY 123
  • Good grading Manufacturing courses from Mechanical Engineering
  • Statistics courses excluding Mathematics department
  • CMInDS minor courses on Applications with easy grading
Tip: You can combine multiple filters in one query.
Topic + Department → "EE courses on Power Systems"
Minor + Topic → "CS minor courses on AI"
Topic + Good Grading → "Easy grading Machine Learning courses"
Department + Exclusion → "AI courses from CS excluding EE"
Everything Together → "Easy grading CS minor courses on Computer Security excluding XY 123"

2 Score Computation

2.1 Popularity/Co-enrollment Score (PS)

This score goes by two names, because it works slightly differently depending on your year of study:

  • Popularity Score (Only for Sophies): Since you have mostly completed common first-year courses so far, comparing your history against the entire student body would not say much. Instead, the score looks only at seniors from your own department.
  • Co-enrollment Score: Your full course history is compared against the enrollment records of all students across all courses.

For a course h in the student's history and a candidate course c:

$$ PS(h,\, c) = \frac{|\,Students(h)\; \cap\; Students(c)\,|}{|\,Students(h)\; \cup\; Students(c)\,|} $$
Students(h) = set of students who took course h  |  Students(c) = set of students who took course c
$$ PS(c) \;=\; \sum_{i=1}^{N} \frac{PS(h_i,\, c)}{1 + (i - 1)} $$
hi = i-th most recent course in history  |  PS(h, c) = pairwise co-enrollment similarity from the pre-computed matrix
A high PS indicates that students who followed a similar academic path frequently enrolled in this course, a strong signal of suitability within a given department and degree programme. Also, more recently completed courses carry greater weight than older ones.

2.2 Interest Similarity Score (ISS)

The Interest Similarity Score involves matching course descriptions with the interest(s) of students by using Reciprocal Rank Fusion (RRF), to merge two independent retrieval signals over the running course catalogue, one using cosine similarity, and other using keyword matching.

$$ RRF(c) \;=\; \sum_{r \;\in\; \text{lists}} \frac{1}{k + \text{rank}_r(c)} $$
k = 60 (smoothing constant)  |  rankr(c) = rank of course c in retrieval list r
A high ISS indicates that the course's content is very closely related to the students' interests, regardless of whether their seniors have historically taken the course.

2.3 Final Score & Recommendation Strategy

The two scores are independently min-max normalised to [0, 1] and combined into a single Final Score (FS) via a weighted sum. The weight parameter α can be decided by the student by means of an option set.

$$ FS \;=\; w_{rrf} \cdot \widehat{RRF} \;+\; w_{ps} \cdot \widehat{PS} \qquad w_{rrf} + w_{ps} = 1 $$
" \(\widehat{\phantom{x}}\) " denotes min-max normalisation  |  wrrf = Semantic weight  |  wps = People's Score weight

The three options and their corresponding weights are as follows:

  • More Interest-Based (wrrf = 1, wps = 0): Prioritise courses that match stated interests. Best for students exploring a new area. The default setting.
  • More Safe Route (wrrf = 0, wps = 1): Recommendations driven entirely by what similar students have taken. Best for students following a well-established path (usually within their department).

If the interest field is left blank, the system automatically switches to 100% People's Score mode.
The top 60 courses by FS are then forwarded to the eligibility engine.

2.4 Minors

The recommender also supports queries based on the minor programmes. Students may request recommendations from one or more specific minor programmes, and can ask to specifically include/exclude courses from any topic, and even department(s).

The aforementioned scoring system does not apply for minor courses, since the course lists are decided specifically by the departments.

2.5 Easy Grading

For courses having easier grading, their FS is boosted by means of an additional grading score, whenever the student asks for courses with easier grading. The grading score is calculated by means of (AA + AB)%, then normalized.

\[ S_{\mathrm{final}} = 0.85\,S_{\mathrm{strategy}} + 0.15\,S_{\mathrm{grade}} \]
\[ S_{\mathrm{grade}} = \frac{\text{Number of AA + AB grades}} {\text{Total students}} \]
This feature can be applied independently, as well as in conjuction with normal course-related and minor-related queries.

3 Eligibility Engine

Every recommended course passes through a sequential set of checks (Restrictions → Prerequisites → Time Slot Clash → Instructor Approval). Results are grouped into four sections based on the first blocking condition encountered:

✓ Eligible
Passes all checks. Available to register.
ⓘ Instructor Consent Required
Prerequisites met but instructor approval is required or conditional.
⏳ Time Slot Clash
This course clashes with an upcoming core course, or another elective in the basket.
⚠ Not Eligible
Fails restriction or prerequisite. Additional conditions are also shown.

4 Interface Overview

The end-to-end flow from entering the tool to receiving results:

📋

Profile

Degree, department, batch year, interests

⚙️

Scoring

PS + ISS weighted by chosen option

🛡️

Eligibility

Restriction, prereq, clash checks

📊

Results

Four-section ranked output

The results page displays course entries grouped into the four eligibility sections. Each entry can be expanded to show the full course description. A division dropdown (where applicable) updates the displayed slot, instructor, and eligibility status in real time.

Expanding any entry reveals year-wise grading statistics in the form of pie charts of grade distributions with %AP, %AA, and %(AA+AB), along with the full course description. Only the statistics corresponding to the selected division type are shown.

Any course can also be starred as a favourite. Favourites are remembered on your device and can be reviewed anytime from the Favourites tab, and every new set of recommendations is checked for time-slot clashes against your favourite courses as well, not just your core courses. The favourite-specific eligibility engine results can be viewed in the favourites section exclusively.

All course-related information has been taken from the Internal ASC Portal.

5 Summary

  • i. Recommendations are generated by combining interest matching (ISS) with prior enrollment patterns (PS) into a tunable Final Score.
  • ii. Every recommended course is validated against department restrictions, prerequisite expressions, and time-slot constraints before display. This is also valid for courses marked as "Favourite".
  • iii. Division-level navigation allows students to check time-slot clash, for their specific division. It also allows students to check year-wise grading statistics per division, upon expanding each course entry.
  • iv. Grade-based filters allow students to compare between equivalent courses, and also choose courses that can boost CPI.
  • v. Minor-based filters allow students to navigate through minor courses offered by various departments, according to their requirements.

For technical queries, contact the Data Analytics and Visualization Team, UGAC, IIT Bombay.