university of waterloo OS course project