Overview of PROOF100
Welcome to Foundations of Mathematical Reasoning & Computer Science (PROOF100)! This initiative by the AUB Math Society is a hands-on bootcamp in the skills that PROOF101 is built on: reading and writing rigorous proofs, reasoning by induction, thinking precisely about programs, and knowing what a computer can and cannot do.
PROOF100 is a standalone course. The material here is the foundation of every theory course in a computer science or mathematics degree. Though beware: PROOF100 is run by students, not faculty, and is intended as a primer rather than a replacement for a full Discrete Structures or Data Structures & Algorithms course. It is meant to give you a taste of the subject, not to cover it thoroughly. It is also the preparatory course for PROOF101 (Introduction to Formal Verification & Proof Assistants using Lean4), which runs the following Spring.
REGISTER HERE
Course Details:
- Primary Instructor & Organizer: Daniel Dia (dmd13@mail.aub.edu)
- Session Leaders: Kevin Abou Rousse, Ali Ibrahim, Ayman Kaçan, Georges Khater, Omar Sinno, Yara Sleem, Ali Zbeeb, Wissam El Daouk
- Teaching Assistant: Jad Abou Hawili (jka15@mail.aub.edu)
- Organization: AUB Math Society
- Target Audience: First-year ECE, CCE, CSE, CS, Math, and other STEM majors — and motivated high school students
- Duration: 9 Weeks (15 sessions, 1.5-2.0 hours each)
- Term: Monday 21 September 2026 — Thursday 26 November 2026 (subject to change)
- Format: Hybrid (in-person sessions, live streamed and recorded)
- Assessment: Five problem sets, handed in on paper, plus a final exam
- Prerequisites: None (yes, really)
- Last Updated: August 30, 2026
Quick access to materials and important links:
S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9 | S10 | S11 | S12 | S13 | S14 | S15
Motivation: Why Foundations?
PROOF100 teaches you to write proofs. We start from what a proof is, build up through logic and inference rules to induction in all its forms, and then turn that machinery on programs: proving that a sorting algorithm is correct, that a data structure maintains its invariant, that an algorithm runs in the time you claim, … etc. Along the way we answer questions such as “why is p → q true when p is false?”, “what exactly is the induction hypothesis doing?”, “what does it mean for a problem to be hard?”, “is there anything a computer simply cannot do?”, and more!
Whether you are a CS or engineering student who wants their code to be right rather than only tested, or a high school student who wants to learn foundational material, this course is built for you.
A note on workload: PROOF100 assumes nothing and builds everything, but expect roughly 3-4 hours (give or take) of work a week outside sessions, i.e. the readings, practice problems, and the five problem sets.
Course Structure
Weekly rhythm:
- Phase A (21 Sep - 29 Oct) — two sessions per week, Monday and Thursday. Twelve sessions in six weeks.
- Phase B (2 Nov - 16 Nov) — one session per week, Mondays.
- Final exam — Thursday 26 November.
Session times: Monday and Thursday, 17:30 (tentative; confirmed before Week 1). Sessions are recorded and posted within 48 hours.
Assessment at a glance: five short problem sets, each covering roughly three sessions, handed in on paper. Between them, every session carries practice problems that are not collected and not graded.
Syllabus
Part 1: Logic and Proof (Sessions 1-5)
Part 1 answers the question the rest of the course depends on: what is a proof, and how one should go about writing one that is actually correct.
S1: Why Our Code Breaks (and What a Proof Is)
Orientation & What Is a Proof? (Mon 21 Sep) — with Daniel Dia
- 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”
- Book of Proof (Hammack), Ch. 1
- Book of Proof, Ch. 4, 5, 6
- Practice: write out (in full sentences) a proof that the sum of two even integers is even
S2: Propositional Logic
Syntax, Semantics, and Truth Tables (Thu 24 Sep) — with Kevin Abou Rousse
- Connectives (¬, ∧, ∨, →, ↔), precedence, and parenthesization
- Syntax vs semantics: formulas as objects, valuations as meaning, and the ⊨ relation
- Truth tables; tautology, contradiction, satisfiability, and validity
- Logical equivalences: De Morgan, distribution, contraposition, and
p → q ≡ ¬p ∨ q - Overview of common truth tables
- Normal forms (CNF/DNF); SAT stated as a problem
- Logic in Computer Science (Huth & Ryan), Ch. 1.1, 1.3
- The Open Logic Project, Ch. 7
- Practice: prove
(p → q) → ((q → r) → (p → r))is a tautology, first by truth table and then by equivalences; convert¬((p ∧ q) → (r ∨ ¬s))to CNF
S3: Rules of Inference & Natural Deduction
Derivation Trees and the Machinery of Proofs (Mon 28 Sep) — with Ayman Kaçan
- Proof systems as syntactic games: ⊢ versus ⊨
- Inference rule notation: premises, conclusion, and side conditions
- Introduction and elimination rules for every connective (∧I/∧E, ∨I/∨E, →I/→E, ¬I/¬E, ⊥E)
- Derivation trees, built bottom-up and top-down
- Hypothetical reasoning and discharging assumptions
- Backward vs forward reasoning, with the same theorem proved both ways
- Soundness and completeness
- Logic in Computer Science (Huth & Ryan), Ch. 1.2
- The Open Logic Project, Ch. 7, 8, 9, 10
- Practice: derive
⊢ (p → q) → (¬q → ¬p); attempt⊢ p ∨ ¬pusing only intuitionistic rules and identify where it fails - Problem Set 1 released today — due on paper at the start of S5 (Mon 5 Oct)
S4: Predicate Logic — Quantifiers, Binding, Scope
∀, ∃, and the Variables They Capture (Thu 1 Oct) — with Ayman Kaçan
- Predicates, domains, ∀ and ∃; ∀I/∀E and ∃I/∃E as inference rules
- Free and bound variables; the scope of a binder
- α-renaming: why
∀x. P(x)and∀y. P(y)are the same statement - Variable capture and failed substitution
- Nested quantifiers and order sensitivity (
∀ε∃δvs∃δ∀ε) - Negating quantified statements: ¬∀ ≡ ∃¬
- Translating English into logic, and the ambiguity of English
- Book of Proof (Hammack), Ch. 2
- Logic in Computer Science (Huth & Ryan), Ch. 2.1, 2.3
- Practice: negate and simplify
∀x ∃y (P(x,y) → ∀z Q(y,z)); perform a substitution in which naive replacement captures a variable, then do it correctly
S5: Proof Techniques
Writing Correct and Readable Proofs (Mon 5 Oct) — with Omar Sinno
- Direct proof; contraposition; proof by contradiction
- Proof by cases and exhaustion; biconditionals; uniqueness; counterexamples
- Existence proofs: constructive vs non-constructive
- Writing mathematical prose: what “let”, “suppose”, “consider”, “it suffices to show”, “WLOG” and others mean
- Common mistakes: assuming the conclusion, division by zero, unjustified WLOG, etc.
- Locating the defects in a flawed proof for practice
- Book of Proof (Hammack), Ch. 7, 8, 9
- Mathematics for Computer Science, Ch. 2
- Problem Set 1 due today — hand it in on paper at the start of the session
Part 2: Structures and Induction (Sessions 6-9)
Part 2 builds the objects that mathematics and programming both run on, i.e. sets, relations, functions, and then introduces ordinary and strong induction from Peano’s axioms, as well as structural and well-founded induction.
S6: Sets, Relations, Orders, Closures
Structure on Sets (Thu 8 Oct) — with Omar Sinno
- Operations on sets, power sets, Cartesian products, and indexed families
- Proving set identities as ∀-proofs
- Relations as subsets of
A × B; compositions and inverses - Properties: symmetry, antisymmetry, transitivity, and reflexivity
- Equivalence relations, partitions, and quotients
- Partial and total orders; Hasse diagrams
- Closures: reflexive, transitive, and the reflexive-transitive closure
R*, defined in three ways (smallest relation with the property; union of powers; inductively, by rules) - Russell’s paradox
- Book of Proof (Hammack), Ch. 11
- Mathematics for Computer Science, Ch. 7
- Practice: prove
(A ∪ B)ᶜ = Aᶜ ∩ Bᶜby element chasing; show that the transitive closure ofRequals⋃_{n≥1} Rⁿ - Problem Set 2 released today — due on paper at the start of S8 (Thu 15 Oct)
S7: Functions, Cardinality & Diagonalization
Injections, Bijections, and Infinities of Different Sizes (Mon 12 Oct) — with Ali Ibrahim
- Functions as relations; domains, codomains, and images
- Injectivity, surjectivity, and bijectivity (with proofs in both directions)
- Composition; inverses; left and right inverses and their relationship to injectivity and surjectivity
- Function spaces
B^A; functions as first-class objects - Countability (with proofs): ℕ, ℤ, and ℚ
- Cantor’s diagonalization argument (i.e. ℝ is uncountably infinite);
|P(A)| > |A|
- Book of Proof (Hammack), Ch. 12, 13, 14
- Practice: prove
fis injective iff it has a left inverse (nonempty domain); write out both directions of the currying bijection and verify they are mutually inverse; prove there is no surjectionA → P(A)
S8: Induction I — Naturals and Strong Induction
The Induction Principle and Where It Comes From (Thu 15 Oct) — with Yara Sleem
- The induction principle stated as an inference rule
- Why it is valid: the well-ordering of ℕ (detailed)
- Peano axioms: zero, successor function, and induction
- Ordinary induction (with attention to where the induction hypothesis is used)
- Strong induction (and when the ordinary IH is insufficient)
- Choosing what to induct on (with examples)
- Classic failures and anecdotes: the “all horses are the same colour” proof
- Course convention: every induction proof states the induction hypothesis explicitly (on its own line)
- Book of Proof (Hammack), Ch. 10
- Mathematics for Computer Science, Ch. 3
- Practice: prove
2ⁿ > n²forn ≥ 5; prove every integern ≥ 2has a prime factorization; find the exactnat which the horses argument breaks - Problem Set 2 due today — hand it in on paper at the start of the session
S9: Induction II — Structural and Well-Founded Induction
Inductive Definitions and the Induction Principles They Generate (Tue 20 Oct) — with Yara Sleem
- Inductively defined sets, given by inference rules: base constructors and step constructors
- Defining
List,Tree, and ℕ inductively - Structural recursion: defining functions by cases on constructors
- Structural induction: deriving the induction principle from the constructors
- Rule induction over an inductively defined relation
- Well-founded induction and termination: measures, decreasing arguments, and why
whileis harder thanfor - Functions that terminate but not structurally (
gcd, Ackermann)
- Mathematics for Computer Science, Ch. 3.5
- Mathematics for Computer Science (2015 ed.), Ch. 6
- The Open Logic Project, Ch. 74 — inductive definitions (74.4) and structural induction (74.5)
- For culture, read about Induction and Recursion in Lean4
- Practice: define
length,appendandreverseby structural recursion and provelength (append xs ys) = length xs + length ys; provereverse (reverse xs) = xs - Problem Set 3 released today — due on paper at the start of S11 (Mon 26 Oct)
Part 3: Programs, Structures and Computational Complexity (Sessions 10-14)
Part 3 applies what we built up so far to programs: data structures and their invariants, asymptotic cost, recurrences, and programming paradigms.
S10: Recursion, Iteration & Data Structures I
The Call Stack, Invariants, and Linear Structures (Thu 22 Oct) — with Georges Khater
- Recursive vs iterative formulations of the same algorithm, and translating between them
- The call stack: stack frames, what recursion costs, and stack overflow
- Tail recursion and accumulator passing
- Memory model: the stack vs the heap, references, and pointers
- Arrays vs linked lists
- Stacks and queues: interface, implementation, and applications
- Invariants: what one is, how to state it, and how to prove it is maintained
- Loop invariants: initialization, maintenance, and termination
- CLRS, Ch. 2, 10
- Practice: convert a recursive
sumto tail-recursive form and prove the two agree by induction; state and prove the loop invariant for insertion sort; for a queue built from two stacks, state the invariant relating them and prove the amortized cost is O(1)
S11: Data Structures II — Trees, Heaps, Graphs
Representation Plus Invariant (Mon 26 Oct) — with Georges Khater
- Binary trees: representation, height, traversals (pre/in/post-order), and traversals as folds
- Binary search trees: the BST invariant stated as a proposition about all descendants; insert, search, and delete
- Balance: why unbalanced BSTs degrade; AVL and red-black trees at the level of which invariant they maintain
- Heaps: the heap property as an invariant; sift-up and sift-down; heapsort; priority queues
- Graphs: adjacency lists vs matrices; BFS and DFS
- Hash tables
- Every data structure here as a representation plus an invariant
- CLRS, Ch. 6, 12, 22
- Practice: write the BST invariant as a formal predicate over trees and prove in-order traversal yields a sorted list; exhibit a tree satisfying “node ≥ children” at every node that is not a BST
- Problem Set 3 due today — hand it in on paper at the start of the session
S12: Asymptotics — Big-O from the Definition
Proving and Disproving Bounds (Thu 29 Oct) — with Ali Zbeeb
- O, Ω, Θ, o, and ω, written out as quantifier statements (
∃c, ∃n₀, ∀n ≥ n₀, …) - Proving
f = O(g)by exhibitingcandn₀ - Disproving a bound by negating the definition
- Common growth classes and their ordering
- Sums and series as an asymptotics tool: arithmetic, geometric, and harmonic;
∑ 1/i = Θ(log n) - Time vs space complexity; worst-case, average-case, and amortized costs
- Why
f = O(g)is considered abuse of notation
- CLRS, Ch. 3
- Mathematics for Computer Science, Ch. 9
- Practice: prove
3n² + 5n + 2 = Θ(n²)from the definition with explicit constants; disprove2^(2n) = O(2ⁿ)by negating the definition; rank eleven functions by growth rate with a justification for each adjacent pair - Problem Set 4 released today — due on paper at the start of S14 (Mon 9 Nov)
S13: Recurrences, Master Theorem & Divide-and-Conquer
Solving for the Cost of Recursion (Mon 2 Nov) — with Ali Zbeeb
- Setting up a recurrence from an algorithm
- Solving recurrences by “unrolling” and by recursion trees
- Substitution method: guess, then prove by induction
- Master’s Theorem: statement, the three cases, worked applications, and a case where it does not apply
- Divide and conquer: mergesort, binary search, and Karatsuba
- Worked case study: proving mergesort correct by strong induction, both that the output is sorted and that it is a permutation of the input
- CLRS, Ch. 2, 4
- Practice: solve
T(n) = 2T(n/2) + nby unrolling, by recursion tree, and by the Master Theorem; produce a recurrence the Master Theorem cannot solve and identify which hypothesis fails
S14: Programming Paradigms & Functional Programming
Imperative, Object-Oriented and Functional Programming (Mon 9 Nov) — with Daniel Dia
- Historical exposition (1936-2005): λ-calculus vs Turing machines, the software crisis, structured programming, OOP, Hoare’s null reference (1965), and the concurrency wall (2005)
- Imperative paradigm: state, mutation, sequencing
- OOP paradigm: encapsulation, inheritance, dynamic dispatch
- Functional paradigm: purity, referential transparency, absence of observable side effects
- First-class and higher-order functions;
map,filter,fold, andcomposeas building blocks - Fold as the universal list recursion: deriving
map,filter,length,sum, andreversefrom it - Monoids as the structure
foldrequires - Currying and partial application
- A short demonstration of Lean4 syntax
- Why Functional Programming Matters (Hughes)
- Functional Programming in Lean, Ch. 1
- SICP (Abelson & Sussman), Ch. 1
- Practice: define
mapandfilterin terms offold, then prove yourmapagrees with the direct definition by induction; give three examples of monoids and verify the laws - Problem Set 4 due today — hand it in on paper at the start of the session
- Problem Set 5 released today — due on paper at the start of S15 (Mon 16 Nov)
Part 4: The Limits of Computation (Session 15)
S15: Computability, Decidability & What Hardness Means
The Halting Problem, P vs NP, and the Limits of Computation (Mon 16 Nov) — with Wissam El Daouk
- Computable functions: primitive recursion, composition, and the μ-operator; partial and general recursive functions (OLP 29)
- A computable function that is not primitive recursive: Ackermann’s function (OLP 29.14)
- Coding computations; the universal partial computable function, and why there is no universal total one (OLP 30.2-30.6)
- The halting problem, by diagonalization (OLP 29.17, 30.7)
- Computable vs computably enumerable sets (OLP 30.9-30.11)
- Reductions; Rice’s theorem (OLP 30.15, 30.20)
- Turing machines, their variants, and the Church-Turing thesis (OLP 31)
- Universal Turing machines; the Entscheidungsproblem is unsolvable (OLP 32.3-32.8)
- P and NP: verification vs solution, NP-completeness, SAT and Cook-Levin (Sipser Ch. 7)
- What it means for a problem to be hard
- The Open Logic Project, Ch. 29, 30, 31, 32
- Introduction to the Theory of Computation (Sipser), Ch. 3 through 5, 7
- Practice: prove the halting problem undecidable, writing out the diagonal construction in full; show “does this program ever print 7” is undecidable by reduction
- Problem Set 5 due today — hand it in on paper at the start of the session
Final Exam
Thursday 26 November, 2 hours (tentative)
Closed book. Cumulative across S1-S15. Marks and certificates are issued before the December examination period begins.
Resources
Core Textbooks
All course textbooks are freely available online:
Book of Proof — Richard Hammack
Mathematics for Computer Science — Lehman, Leighton & Meyer (MIT 6.042)
Additional Course References
Logic: Huth & Ryan, Logic in Computer Science (free) | The Open Logic Project (free)
Algorithms: Cormen, Leiserson, Rivest & Stein (CLRS), Introduction to Algorithms (free)
Computability: Sipser, Introduction to the Theory of Computation (Ch. 3-5, 7)
Functional programming: Hughes, Why Functional Programming Matters (free) | Abelson & Sussman, SICP (free)
Looking ahead: Pierce et al., Software Foundations: Logical Foundations (free) | Wadler, Propositions as Types (free)
Interactive Tools
- The Incredible Proof Machine — natural deduction as a puzzle game (recommended after S3)
- The Natural Number Game — optional, for an early taste of Lean4
Requirements & Policies
Problem Sets
There are five problem sets, each covering roughly three sessions. They are short by design: four to five problems each, released in one session and due at the start of a session about a week later.
| # | Problem Set | Released | Due | Covers |
|---|---|---|---|---|
| 1 | Logic and Deduction | S3 · Mon 28 Sep | S5 · Mon 5 Oct | S1-S3 |
| 2 | Quantifiers, Proof Techniques, Sets | S6 · Thu 8 Oct | S8 · Thu 15 Oct | S4-S6 |
| 3 | Functions and Induction | S9 · Tue 20 Oct | S11 · Mon 26 Oct | S7-S9 |
| 4 | Data Structures and Asymptotics | S12 · Thu 29 Oct | S14 · Mon 9 Nov | S10-S12 |
| 5 | Recurrences and Paradigms | S14 · Mon 9 Nov | S15 · Mon 16 Nov | S13-S14 |
Computability (S15) is not covered by a problem set; it is examined on the final.
Submission is on paper, in person. Hand your work in at the start of the session on which it is due. If you cannot attend the session on which a problem set is due, arrange to submit it in advance by email. Work handed in after the session has begun is late.
PROOF100 maintains a strict zero-tolerance policy for academic dishonesty. Copying work, sharing solutions, or unacknowledged use of LLMs is prohibited and will result in zero credit and ineligibility for certification. Using an LLM to explain a concept is fine and encouraged; using one to generate a proof you then submit is not, whether or not you rewrite it in your own handwriting. Any use at all must be disclosed in a line at the top of your submission.
See the Problem Sets page for the full policy.
Attendance & Recordings
All sessions are recorded and posted within 48 hours. A motivated student can follow this course asynchronously, but problem sets are handed in on paper in person, and the board work in S5 cannot be replicated by watching.
Certification
Participation is open to all. Certification is reserved for those who demonstrate mastery.
Certificate of Distinction:
- Attend at least 11 of 15 sessions
- Submit at least 4 of the 5 problem sets
- Score 75% or above on the final exam
Honors mention is awarded at the instructor’s discretion to the strongest performers in the cohort.
Note: depending on the student’s performance and personal circumstances, some requirements may be modified or dropped. This applies especially to our high school participants, whose schedules do not align with ours.
What Comes Next
PROOF100 graduates are the intended audience for PROOF101: Introduction to Formal Verification & Proof Assistants, running Spring 2027 with guest lecturers from Boston University, Brown University, LMAP, and AUB.
Acknowledgments
This course would not be possible without the people who volunteered their time to teach it.
Session Leaders:
- Daniel Dia (CCE + Math) — S1: Orientation & What Is a Proof?; S14: Programming Paradigms & Functional Programming
- Kevin Abou Rousse — S2: Propositional Logic
- Ayman Kaçan — S3: Rules of Inference & Natural Deduction; S4: Predicate Logic, Quantifiers, Binding & Scope
- Omar Sinno (ECE) — S5: Proof Techniques; S6: Sets, Relations, Orders & Closures
- Ali Ibrahim (MECH + Math) — S7: Functions, Cardinality & Diagonalization
- Yara Sleem (CSE + Math) — S8: Induction I — Naturals and Strong Induction; S9: Induction II — Structural and Well-Founded Induction
- Georges Khater (CSE + Math) — S10: Recursion, Iteration & Data Structures I; S11: Data Structures II
- Ali Zbeeb (CSE) — S12: Asymptotics — Big-O from the Definition; S13: Recurrences, Master Theorem & Divide-and-Conquer
- Wissam El Daouk (CSE) — S15: Computability, Decidability & What Hardness Means
Organizational Support:
- AUB Math Society — for organizing this initiative and providing essential support
And to all participants who bring energy, curiosity, and dedication to making this learning community thrive.
For a complete list of contributors to the course materials, see our PROOF100 “Contributors” page.
License
Foundations of Mathematical Reasoning & Computer Science (PROOF100) by Daniel Dia and contributors is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International.
This means you are free to:
- Share — copy and redistribute the material in any medium or format
- Adapt — remix, transform, and build upon the material
Under the following terms:
- Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made
- NonCommercial — You may not use the material for commercial purposes
- ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license
For the complete license text, visit: https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode