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

Jad Abou Hawili — Teaching Assistant (jka15@mail.aub.edu) (CS + Applied Math Alumnus)

Session Information

  • Date and Time: Monday 21 September 2026 — 17:30-19:30
  • Place: Nicely 212
  • Online Meeting Link
    • Meeting Number: 2550 601 9224
  • Session Recording (not available due to technical issues)

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

Credit: The above slides were prepared by Daniel Dia.

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!