the course CS304P by Professor Novak
