Project Overview

Mathematical logic provides the foundation for a rich set of tools for reasoning about systems and discovering whether their behavior meets our expectations. These tools allow us to model (e.g.) the state of buffers and caches, prove whether our protocols obey desirable properties, explore the consequences of memory-management strategies, and much more.

As a Computer Science student, you’ve often been asked to write code with the intent of creating a system. This class is different. Here, we’ll ask you to create models of systems and interact with them in numerous ways. You will learn to use modern, logic-based tools to describe and analyze program designs, algorithms, data-structures, and other artifacts—we’ll learn the logical frameworks we need as we go along. In the end, you’ll develop a better understanding of how to use logic-based tools to analyze whatever systems you encounter after Brown.


Tim Nelson

Relevant Links

Logic for Systems