This repository contains a complete course scheduling 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.example
to.env
and 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 --build
Or 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-api
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r ui\requirements.txt
python ui\main.py
From PowerShell:
cd ui
powershell -ExecutionPolicy Bypass -File .\build-win.ps1
# exe will be at: ui\dist\CEE-Scheduler.exe