A language subset will be defined and used during the lab course. The programming exercises here consist of implementing the basic components of a compiler. The constructs in this subset are found in most programming languages. They allow programs such as recursive and non-recursive sorting, and matrix multiplication to be expressed.