Optimizing Four-Year Course Planning — a mixed-integer linear programming (MILP) system that constructs optimal four-year university course schedules, minimizing total courses required while satisfying prerequisites, corequisites, course-offering terms, major/minor requirements, and per-semester credit-load bounds.
Semester project for CSE 478/578 (Soft Computing for Optimization), Fall 2025, Miami University, by Joseph Follrath, Jackson Frey, and Will Paz.
Given a student's chosen major/minor requirements, the full course catalog (with terms offered and credit hours), and prerequisite/corequisite chains, the model:
- Builds decision variables for every (course, semester) pair across an 11-semester horizon
- Enforces required courses, sectional requirements (credit thresholds across course groups), and choice requirements (pick N of M electives)
- Enforces prerequisite chains (AND-within-group, OR-across-groups) and corequisites (same-semester-or-earlier) via auxiliary boolean variables
- Bounds per-semester credit load (12–16 credits regular term, ≤3 credits summer)
- Solves with Google OR-Tools' CBC solver, minimizing total credits taken to reach graduation
- Produces a semester-by-semester schedule with prerequisite satisfaction diagnostics for each selected course
notebook/ScheduleOptimization.ipynb full MILP model: constraint construction, solve, and schedule output
docs/Final_Report.pdf final paper: problem definition, model formulation, and results
Requires courses.json (course catalog with terms/credits), a major-requirements JSON (e.g. BachelorofScienceinComputerScience.json), and a course_requirements.json (prerequisite/corequisite data) — these were scraped from Miami University's course catalog and are not included here.
pip install ortools
jupyter notebook notebook/ScheduleOptimization.ipynbBuilt as a course semester project — preliminary results are promising, but per the final report, the model needs further refinement (general-education requirements, more majors/minors) to produce fully realistic four-year plans.