This course examines the fundamental theory and practice of implementing today's programming languages. Students should emerge with a good appreciation for the implementation issues and strategies behind making programs in high level programming languages work correctly and efficiently on a target machine. A major part of the course is the practical experience of implementing various phases of a compiler for a small object-oriented programming language. Students learn translation methodology that is useful in many other situations in addition to compilation, including command interpreters, report-generating systems, programmable applications, configuration file handling, preprocessors, debuggers, static program analysis tools, testing tools, virtual machines, integrated development environments, and many other software engineering tools.

Course Syllabus -