UBC CPSC 416 2021w2 Live deployment: https://www.cs.ubc.ca/~bestchai/teaching/cs416_2021w2/index.html