CPSC 3354: Theory of Programming Languages