Inspiration

Course planning usually works backwards. Students choose courses, then find out what week those choices create. One clash can send them back to the catalogue.

We built Aperture at the EdinburghAI “Flip the Script” hackathon to reverse that order: start with the week you want, then find the courses that fit.

What it does

Aperture lets a student describe or paint the week they want: no 9ams, Friday free, keep King’s Buildings days together. It returns up to three course sets that satisfy their degree rules, meet credit and semester limits, and avoid clashes where possible. Each plan shows the timetable, explains why each course is included, and links the rules it satisfies to DRPS.

How we built it

We used Next.js, TypeScript, React, Tailwind and zod, with a plain TypeScript solver and Vitest tests. The demo uses checked-in data for 68 courses and 570 timetable slots across four Computer Science years. We scraped DRPS and exported the timetable using an EASE login. The solver handles degree constraints, tutorial groups and clash checks; a language model only turns a sentence into structured preferences.

Challenges and what we learned

The data was messy. Option groups referred to whole course bands, prerequisites mixed AND and OR, and some courses were compulsory in another year. Year 4 also exposed a solver bug: the search filled its cap with clashing course sets. We moved clash checks into the search, so conflicting choices were dropped early.

The main lesson was that the model shouldn’t decide whether a degree is legal. It can turn “Fridays off” into a time block; the solver handles the rules and shows its evidence. Tutorial groups are allocated centrally, so Aperture suggests a plan rather than claiming it can enrol the student.

Built With

Share this project:

Updates

Submission history