Programming Language Principles course project