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 UC Berkeley 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

Student distributions are available below for several different architectures. 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 lecture notes from a course that used Cool. If you just want a quick look at the manual, click here. Finally, if you are having problems using or implementing Cool, check the Cool faq.

Distributions are available for the following architecture/operating system combinations. You will also need the installation notes.