Skip to content

256thFission/duke-schedule-solver

Repository files navigation

Duke Schedule Solver

Find the statistically optimal schedule for YOU (if you're a Duke student)

This is how I got No 8:00 AM's, 2 days off, and all grad reqs filled while graduating a year early.

You can view my writeup here

Uses Binary Integer Programming + CPSAT to maximize of course quality metrics under time/ grad requirement constraints.

Architecture

  • Pipeline (scripts/): Ingests catalog + evaluations, applies Bayesian-shrunk quality metrics
  • Solver (scripts/solver/): BIP optimizer with configurable constraints
  • Backend (backend/): FastAPI API serving the solver
  • Frontend (frontend/): React + Zustand wizard UI

Quick Start (Local Dev)

Prerequisites

  • Python 3.10+, Node.js 18+
  • conda (recommended) or pip

Backend

conda env create -f environment.yml && conda activate solver
pip install -e .  # install project packages for imports
cd backend && python -m uvicorn main:app --reload --port 8000

Frontend

cd frontend && npm install && npm run dev

Open http://localhost:5173

Data Pipeline

python scripts/run_pipeline.py --config config/pipeline_config.json

Pipeline stages:

  1. Ingest — Load raw JSON/CSV files
  2. Normalize — Parse times, days, course codes
  3. Merge — Match evaluations to catalog sections
  4. Aggregate — Bayesian shrinkage + z-scores
  5. Export — Generate solver-ready JSON

Deployment

See DEPLOY.md for EC2/Docker deployment instructions.

License

MIT — see LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors