< RETURN TO FLAT
START DATE: 2025-06-28 FINISH DATE: 2025-07-8
COURSE-PERMUTATOR PROJECT REPOSITORY __________ __ ______ _____ ______ ____ __________ __ _____ ___________ __________ ____ / ____/ __ \/ / / / __ \/ ___// ____/ / __ \/ ____/ __ \/ |/ / / / /_ __/ |/_ __/ __ \/ __ \ / / / / / / / / / /_/ /\__ \/ __/ / /_/ / __/ / /_/ / /|_/ / / / / / / / /| | / / / / / / /_/ / / /___/ /_/ / /_/ / _, _/___/ / /___ / ____/ /___/ _, _/ / / / /_/ / / / / ___ |/ / / /_/ / _, _/ \____/\____/\____/_/ |_|/____/_____/ /_/ /_____/_/ |_/_/ /_/\____/ /_/ /_/ |_/_/ \____/_/ |_|

SUMMARY

Demonstrated aptitude for low-level programming in the Odin programming language to implement a system capable of assisting Carleton U students during timetable creation. Designed and tested multiple permutation algorithms, created a user-friendly REPL to interface with the system. Learned about multi-threaded design practices, using semaphors to synchronize tasks across threads. (..and saved myself a life-threatening headache during course registration and troubleshooting lol)

SPECIFICATION

  • Three permutation algorithms are available:
    • Brute-force evaluation (checks every possible timetable)
    • Recursive branching (avoids checking trivially incorrect timetables)
    • Partial mode: altered success criteria allows for subsets of the input to be permutated (supports requirement-chaining)
  • Timetables can be ranked via a combination weighted heuristics for ease of browsing
  • Timetables can be filtered via a combination of predicates for ease of browsing
  • A GUI displays each timetable visually, and can be used to scrub the results for ease of browsing
  • Gen-AI used sparingly and exclusively for research; all source code is courtesy of yours truly ;)

DEVELOPMENT TIMELINE

Can be accessed here.

ABOUT

Yeah, it's been done before--but I know a good excuse to program when I see one. This project was a great learning tool for learning more about the Odin programming language, and was invaluable while troubleshooting and re-developing my schedule during registration; I absolutely couldn't have found the ideal solution to this year's impossible registration constraints without it.

That being said, it does leave some to be desired. Next year I will likely make a version two, given I have the time. This improved version will allow the user to solve all 3 terms at once, instead of one at a time. Such an approach would allow for easy course-swapping between terms, which isn't very well supported in this first version.

If you happen to be a maintainer of Carleton's online registration infrastructure, contact me! I would love to implement this featureset on your website. Students would no longer need 3rd party tools to complete registration optimally, and the registrar's office would have less overrides and poorly chosen schedules to crunch through. It's a win for everyone involved :)