The University of Arizona
banner image

CSC 453: Compilers & Systems Software

Course Home Page

Overview

CS 453 teaches students how to implement programming languages with a compiler. Although most computer science professionals do not end up implementing a full compiler, alumni of this course are surprised by how often the skills they learn are used within industry and academic settings. The subject of compilers ties together many concepts in computer science: the theoretical concepts of regular expressions and context free grammars; the systems concept of layers including programming languages, compilers, system calls, assembly language, and architecture; the embedded systems concept of an architecture with restricted resources; and the software engineering concepts of revision control, debugging, and testing.

Students write a compiler for a subset of Java called MeggyJava. We write the compiler in Haskell so as to learn a new programming paradigm and some programming constructs such as pattern matching that significantly ease the development of compilers (or translators generally). We compile MeggyJava to the assembly language for the ATmega328p microcontroller in the Meggy Jr RGB devices.

Course topics include the following: scanning, parsing (top-down and bottom-up), abstract syntax trees, semantic analysis, code generation, and data-flow analysis.

Pre-requisites

CSC 345 and CSC 352 are require prerequisites. CSC 372 is recommended.

High-Order Bits

The syllabus describes the course in a significant amount of detail. All the students in the class will be expected to read and know the syllabus.

Here are some of the highlights: