• TLA+ in Practice and Theory
    Part 1: The Principles of TLA+

    TLA+ is a formal specification and verification language intended to help engineers specify, design and reason about complex, real-life algorithms and software or hardware systems. We explore its motivation, application and principles of design.

  • The Best Programming Language

    Programming languages cannot be judged on intrinsic qualities alone.

  • What We Talk About When We Talk About Computation

    Machine and language models of computation differ so greatly in the computational complexity properties of their representation that they form two distinct classes that cannot be directly compared in a meaningful way. While machine models are self-contained, the properties of the language models indicate that they require a computationally powerful collaborator, and are better called models of programming.

  • Why Writing Correct Software Is Hard

    We try to understand the relationship between programs and correctness, and in particular, why writing correct programs must be hard. We will review results from computability theory and complexity theory, and see that programs and complete understanding – which is required for correctness – are fundamentally at odds.