Logic is the study of the principles of reasoning, and lies at the foundations of computation. This module introduces logic and a variety of techniques for proving the correctness of logical arguments. This is illustrated with applications across a range of topics in computer science, including methods to ensure the correctness of programs in a principled way.
Learning Outcomes
By the end of the module students should be able to:
Write formal proofs for propositional and predicate logic
Understand and apply algorithms for key problems in logic such as satisfiability.
Understand the connections between logic, types and reasoning about functional programming languages