course project for CMU's 18879