Penn Degree Planner
penndegreeplanner.com / GitHub
I built a four-year planner for Penn students. It handles the hard cases too, like dual degrees and accelerated master’s programs that span more than one school. It’s live at penndegreeplanner.com and rolling out to students now.
- Every program is a nested tree of requirements, written in Rust. One course can count toward several requirements, so I match courses with a greedy algorithm. It isn’t guaranteed to find the optimal schedule, but it’s fast enough to re-plan every time a student edits.
- To find courses that satisfy more than one degree, I use an inverted index over course attributes instead of scanning the whole catalog. An LRU cache skips repeat queries, and Postgres stores saved schedules and usage data.
- The backend is an Axum service on Fly.io, and the frontend is Next.js on Vercel.