Advanced Search

Browse by Discipline

Scientific Societies

E-print Alerts

Add E-prints

E-print Network

  Advanced Search  

C0 Reference 15-122: Principles of Imperative Computation

Summary: C0 Reference
15-122: Principles of Imperative Computation
Frank Pfenning
January 2011
Compiler revision 1511 (Sun Jan 30 2011; updates)
1 Introduction
The programming language C0 is a carefully crafted subset of the C aimed
at teaching introductory algorithms and imperative programming. It is re-
stricted enough to permit a straightforward safe implementation in which
attempts to access an array element out of bounds array can be reliably
detected. This eliminates a class of insidious bugs that are difficult to diag-
nose or detect through testing, as numerous security problems with com-
mercial software attest. As a consequence the language soundly supports
a conservative garbage collector to reclaim memory, rather than relying on
error-prone explicit memory management. It is intended that all opera-
tions are completed defined, although even correct programs may abort
when they run out of memory. The combination of these features allow us
to soundly reason about contracts and loop invariants, which constitute a
new language layer. More about the differences and the transition to C in a
separate document; in this document we introduce the language itself. We


Source: Andrews, Peter B. - Department of Mathematical Sciences, Carnegie Mellon University


Collections: Mathematics