myplanBYU treats your degree as a constrained set-cover and sequencing problem. Unlike a static checklist, it generates an optimized multi-semester sequence around your actual life.
161 of the 175 majors have an official MAP sheet — the advisement center's printed semester-by-semester plan. Where one exists, the sheet IS the draft: its courses are locked to their printed semesters and everything else (your completed classes, minors, certificates, GE) adapts around that skeleton. Where the sheet and the course catalog disagree — a class listed “Winter-only” that the sheet puts in Fall — the sheet wins, because it's the more current document. Department flowcharts supply cohort envelopes (e.g. the IS Junior Core) that move as single blocks. Completed courses vacate their slots and the remaining sheet years pull forward.
Every program (major, minor, certificate, University Core) is a set of buckets — “3 credits
tagged GE-Arts”, “all of the IS Junior Core”, “6 credits of technique courses”. Courses carry
tags and can fill multiple buckets at once (double-counting), up to a credit cap you control.
All 300+ catalog programs (175 majors, 117 minors, 22 certificates) are plannable today, drawing on
7,100+ live catalog courses.
The solver seeds the schedule along the critical path, then runs a few thousand rounds of hill-climbing — random legal moves kept only if the plan improves — plus deterministic cleanup passes that compact surplus semesters, close mid-plan gaps, and fold stray tail courses back into earlier terms. The policy it optimizes toward is fixed and deliberately boring: 14–16 credits per Fall/Winter (17 only when it saves a whole semester), an 8–10 semester shape, religion paced ~2 credits per semester, no stacking 3+ historically hard classes, and graduation at 120 credits without invented filler. The Constraints panel changes the levers that are genuinely yours: credit caps, Spring/Summer terms, the double-count cap, scholarship rules.
Plans aren't just feasible — they're annotated: single-season courses you can't afford to miss, finals-week collision risk when hard classes stack, scholarship/full-time warnings, credit shortfalls against the 120 requirement, application deadlines for limited-enrollment majors, and — when a required course genuinely cannot fit — an honest “unscheduled” flag with the dial that fixes it (usually one click to add a Spring term) instead of a silently broken plan.
The chat panel answers questions grounded in live BYU data — course details, program requirements, deadlines, scholarships, clubs — and can read your current draft plan (with your permission) so it discusses your schedule, not hypotheticals. It's the one part that runs on a server; it's rate-limited, and everything else on this page works without it.
The planner is 100% client-side JavaScript — your plan solves on your own device in about half a
second, and the same inputs always produce the same plan. The repo includes an
OR-Tools CP-SAT reference architecture (docs/solver_reference.py) for a future
server-side V2 with section-level time conflicts.