Abstract
This paper presents CCL, a programming language designed for implementation efforts and laboratory projects in compilers courses for undergraduates. CCL is small, cohesive, and regular enough that a working compiler can be implemented by an individual student in a single semester; yet, CCL includes a collection of features (including pointers, dynamically-sized arrays, anonymous functions, and a restricted form of continuations) that make it a useful vehicle for studying compiler theory and design. Experiences using CCL in compilers courses are discussed, and suggestions for a number of projects concerning CCL are given.