A compiler is a computer program that translates text written in a given language (called the source language) into another language (the target language). With most compilers the source language is a high-level programming language (e.g., C, C++, Java), and the target language is a lower-level representation such as assembly language or bytecode. In this course we will focus on compiler techniques needed to implement programming languages on a virtual machine. Students will implement a compiler that translates a subset of C into Java bytecode. This bytecode can then be executed on the Java virtual machine (JVM).
This course will cover both practical and theoretical aspects of a compiler. Our main emphasis will be on the compiler frontend (i.e., scanning, parsing, semantic analysis) and on code-generation for the JVM. Compilers are carefully crafted, complex pieces of software. We will apply software-engineering principles such as component-based design, Object-oriented design-patterns and error-handling using exceptions with our compiler.
See schedule on Portal.
|5||Code Generation||to be announced here|