Session 1: Why Our Code Breaks (and What a Proof Is)

Overview

Orientation session. We look at software that passed its tests and failed anyway, then turn to what it means to prove something and what a well-written proof looks like on paper.

Lecturer

Daniel Dia — Primary Instructor & Organizer (dmd13@mail.aub.edu)

Session Information

Core Concepts

  • Course mechanics: structure, the five problem sets, certification, and the academic integrity policy
  • Real-world software disasters: Ariane 5 ($370M, integer overflow), Therac-25 (race condition, patient deaths), and Heartbleed (buffer over-read) vulnerabilities
  • The limits of testing: finite inputs vs infinite possibilities, Dijkstra’s principle, and a live demo
  • Statements, hypotheses, conclusions; the anatomy of a proof
  • True vs provable
  • Basic set notation as vocabulary: ∈, ⊆, ∪, ∩, , ∅, and set-builder notation
  • What a well-written proof looks like on paper and its “marking criteria”

Slides

Session 1 Slides: Download PDF

Readings

Exercises & Extra Steps

  • Practice (not collected): write out, in full sentences, a proof that the sum of two even integers is even

Questions? Reach out on the course WhatsApp!