Course Schedule Optimizer — User Guide

Course Schedule Optimizer — User Guide

Overview

The Course Schedule Optimizer generates conflict-free class schedules for the ME/BE department. You provide three input files, and the tool automatically computes the best arrangement of courses into available time slots.

Priority: The optimizer avoids student conflicts first (two courses in the same semester overlapping), then minimizes faculty inconveniences.

Quick Start

  1. Go to /scheduler/ on the website
  2. Click “Load Sample Data” to try it with example data
  3. Click “Generate Schedule” to run the optimizer
  4. Review the weekly grid, conflict report, and faculty loads

Input Files

You need three CSV files:

1. Courses to Schedule

Your department’s courses for the semester, with instructor assignments.

Column Description Example
course_code Course code as it appears in the catalog ME 352
instructor Last name of assigned instructor Smith
sections Number of sections to schedule 1 or 2
is_lab Whether this is a lab section true or false
linked_to Course code of the linked lecture (labs only) ME 352

Example:

course_code,instructor,sections,is_lab,linked_to
ME 352,Smith,1,false,
ME 352L,Smith,1,true,ME 352
ME 311,Johnson,1,false,

Notes:

2. External Schedules

Frozen schedules from other departments (MATH, PHYS, CHEM, etc.). You can upload multiple files — one per department.

Column Description Example
course_code External course code MATH 132
day_pattern Meeting days MWF or TR
start_time Start time (24h) 10:00
end_time End time (24h) 10:50
section Section number 01

Day pattern codes: M=Monday, T=Tuesday, W=Wednesday, R=Thursday, F=Friday

Example:

course_code,day_pattern,start_time,end_time,section
MATH 132,MWF,10:00,10:50,01
MATH 132,MWF,11:00,11:50,02
PHYS 141,MWF,09:00,09:50,01

These are treated as hard constraints — the optimizer will never place a department course at a time that conflicts with an external course in the same semester.

3. Time Slots

Available class and lab periods. Update this file each year if the university changes its schedule grid.

Column Description Example
slot_type class or lab class
day_pattern Meeting days MWF
start_time Start time (24h) 08:00
end_time End time (24h) 08:50

Example:

slot_type,day_pattern,start_time,end_time
class,MWF,08:00,08:50
class,TR,08:00,09:15
lab,TR,14:00,16:50

Standard patterns:

Using the Results

Weekly Grid

The main output is a weekly calendar showing all scheduled courses:

Filter Dropdowns

Conflict Report

Shows:

Faculty Load Summary

Table showing each instructor’s:

High loads are highlighted in red, low loads in blue.

Lock & Re-Run

  1. Click any course block on the grid to lock/unlock it
  2. Locked courses (shown with teal border and lock icon) stay in their slot
  3. Click “Re-optimize” to run the solver again with locked courses as fixed constraints
  4. Useful for iterative refinement: lock the assignments you like, let the optimizer improve the rest

Export

Troubleshooting

“Could not load sample data”: Make sure the dev server is running (bundle exec jekyll serve).

Courses show as unscheduled: The optimizer couldn’t find any valid slot due to hard constraints. Try:

Unexpected conflicts: Verify that courses.yml correctly lists which semester each course belongs to for each program. The optimizer uses this to determine which courses students take concurrently.