Principles of Programming Languages Course Assignments and Project