Cool: The Classroom Object-Oriented Language

Cool is a small language designed for use in an undergraduate compiler course project. While small enough for a one term project, Cool still has many of the features of modern programming languages, including objects, automatic memory management, and strong static typing. Cool is built entirely on public domain tools; it generates code for a MIPS simulator, spim . Thus, the project should port easily to other platforms. The project has been used for teaching compilers at many institutions and the software is stable.

The complete Cool distribution includes the manual, source and makefiles for the compiler, source and makefiles for each of the assignments, and regression tests. Instructors can obtain the complete distribution by sending mail to

A student distribution of the project is available. These distributions include object code for the coolc reference compiler, assignments, and all documentation. The only components omitted are source for the reference compiler and the regression tests.

A longer description of the Cool compiler project is available, as are the manual and (on request) lecture notes from a course that used Cool.