The course discusses the major ideas used today in the implementation of programming language compilers, including lexical analysis, parsing, syntax-directed translation, abstract syntax trees, types and type checking, intermediate languages, dataflow analysis, program optimization, code generation, and runtime systems. It teaches how a program written in a high-level language designed for humans is systematically translated into a program written in low-level assembly more suited to machines. It also discusses how programming languages are designed, programming language semantics, and why there are so many different kinds of programming languages.
This is a 10 weeks course. Each week a set of videos with embedded in-video questions, a quiz and optional DeduceIt assignments are released. DeduceIt is an experimental tool for students to do free-form derivations and have them automatically checked. Then, there’s an optional project to write a complete compiler for COOL, the Classroom Object Oriented Language. COOL has the essential features of a realistic programming language, but is small and simple enough that it can be implemented in a few thousand lines of code. The compiler project consists of four programming assignments. Finally, there are two exams – the mid term and the final.
This is a hectic course which will keep you engaged throughout. I would recommend it for everyone serious about Computer Science.