Bertrand Meyer defined Design by Contract as a system of documenting and proving the responsibilities of a software system. Today, we have tools built into our compilers and type systems that help us to prove those assertions. This course will introduce you to some of those tools, define systems of logic for reasoning about code, and recommend patterns for building provable software.
Mathematician and software developer, Michael L Perry applies formal proof to creating reliable software. He has developed a method starting from the works of the greats (Meyer, Rumbaugh, Knuth), and embodied it in his open-source frameworks (Update Controls and Correspondence).