Lectures info#
Lectures are at the core of this course! They will be recorded, but we strongly encourage you to attend them in person. It’s more fun for you, for the convenors, you may meet new people (e.g., to form learning groups), and you can ask questions during and after class.
Lecture Schedule#
- week 1: Propositional Logic.
- week 2: Reasoning about Functional Programs.
- week 3: Reasoning about Inductive Types (Natural Numbers and Lists).
- week 4: Reasoning about General Inductive Types (Trees and others).
- week 5: Reasoning about Imperative Programs / Partial Correctness.
- week 6: Reasoning about Imperative Programs / Total Correctness.
- week 7: Deterministic Finite Automata (DFAs).
- week 8: Nondeterministic Finite Automata (NFAs).
- week 9: Grammars and Pushdown Automata (PDAs).
- week 10: Turing Machines (TMs).
- week 11: Decidability.
- week 12: Complexity.
Lecture slides can be found on our Wattle page prior to each lecture.
Drop-in Sessions and Tutorials#
Drop-in sessions are announced on Wattle.
In each week, our tutorials discuss and practice the content of said week.
Required Knowledge and Software#
This course uses two programming languages: Dafny will be used for the first half in the course, and Haskell will be used minimally on the last 25% of the course.
You will neither be required to read complex Haskell code nor to write it. So even if you don’t know Haskell yet, there is no need to learn it, as those few examples included in the slides can followed also with a high-level understanding of program code. Yet, if interested, we offer some introductory material on Haskell in our Resources section.
The first part of the course is about understanding programs in terms of (true) assertions that we can make about them. To verify these assertions, we are using the Dafny Verifier. Dafny is a programming language that allows us to annotate programs and so formally establish the validity of assertions. As a side hustle for Dafny, we are also going to use it to prove basic properties expressed in logic. We recommend that you install the VS Code Plugin for Dafny, but you are also welcome to install from source. Our course has weekly mini-assignments that are using Dafny, and you will be asked to submit Dafny code. If you have enrolled for a tutorial that is not held in a CSIOT computer lab, bringing your own device with a running Dafny install will help you to get the most out of the lab time. In case you don’t have your own laptop to bring with to the tutorial(s), you can also just pair with somebody who has. (Note that we want everybody to do the tutorial exercises in groups.)