NUS Timetable Optimizer

Overview

NUS Timetable Optimizer (at nus-optimizer.com) is a free and efficient tool to find the best timetable for your NUS modules. This project is the culmination of many years of work and failed attempts to try to realize the idea, and in many ways, I consider it to be one of my best achievements :)

While there’s more info at nus-optimizer.com/about and on GitHub, the core technology is to use a “SMT Solver” e.g., Z3 to find the best timetable for you. This is a very powerful tool that can solve constraint problems as long as they are posed a certain way.

One of the critical things I’m proud of is that this runs entirely on the browser. Because of the CPU intensive nature of the problem, running a server to spawn threads to solve individua timetables at 100% CPU was a cost I did not want to pay (unlike other approaches to solve this). I had to use a WebAssembly version of Z3, which is a bit of a pain to set up, but ultimately let me host it for free.

Interesting things

rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora