This repository contains a complete course scheduling optimization system built for the Department of Civil and Environmental Engineering at the University of Utah. It uses an Integer Programming model with Gurobi to assign courses to time slots while respecting prerequisites, co-requisites, lab/discussion structures, and slot preferences.
Backend: FastAPI + Docker UI: PySide6 desktop app
-
Copy
.env.exampleto.envand fill in your Gurobi WLS credentials:GRB_WLSACCESSID=your-access-id GRB_WLSSECRET=your-secret GRB_LICENSEID=your-license-id
-
Start the API in production mode:
docker compose up api --buildOr start in development mode (hot reload on code changes):
docker compose up api-dev --build
-
Check:
- Health: http://localhost:8000/health
- API Docs: http://localhost:8000/docs
docker build -t cee-scheduler-api -f backend/Dockerfile .
docker run --rm -it `
-p 8000:8000 `
-v "${PWD}\data:/data" `
-e GRB_WLSACCESSID="YOUR_WLSACCESSID" `
-e GRB_WLSSECRET="YOUR_WLSSECRET" `
-e GRB_LICENSEID="YOUR_LICENSEID" `
cee-scheduler-apipython -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r ui\requirements.txt
python ui\main.pyFrom PowerShell:
cd ui
powershell -ExecutionPolicy Bypass -File .\build-win.ps1
# exe will be at: ui\dist\CEE-Scheduler.exe
