Clone wiki

docs / Home

C0 is a small safe subset of the C programming language, augmented with contracts, specifically developed for teaching the course 15-122 Principles of Imperative Computation at Carnegie Mellon University.

Using C0

C0 makes it easy to jump to C


Getting C0

C0 at CMU

The following are some steps for getting C0 running as a 15-122 student at Carnegie Mellon. These guides assume you have been able to log into a cluster computer, run C0, and edit a text file using and editor such as VScode, Vim or Emacs.


Many people have contributed to C0 and its tool suite. The principal designers are Rob Arnold and Frank Pfenning; additional contributors include Laura Abbott, Tom Cortina, Ian Gillis, Jason Koenig, William Lovas, Karl Naden, Rob Simmons, Nathan Snyder, Anand Subramanian, Jakob Uecker, and Ishan Bhargava.

The development of C0 and the 15-122 course curriculum has been supported by the MSR-CMU Center for Computational Thinking under a project on Specification and Verification in Introductory Computer Science and by a gift from Google for the development of CMU's introductory undergraduate courses.