Overview of PROOF100
Welcome to Foundations of Mathematical Reasoning & Computer Science (PROOF100)! This joint initiative by the AUB Math Society and AUB Cryptography Club 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 bootcamp for PROOF101 (Introduction to Formal Verification & Proof Assistants using Lean4), which runs the following Spring.
To be able to attend in person, submit assignments, and do the final exam you must register for the AUB Math Society and AUB Cryptography Club. Otherwise, e.g. if you are not an AUB student, you may attend the course fully online.
CLICK ON ME TO REGISTER
CLICK ON ME TO JOIN THE COMMUNTIY
Bootcamp Details:
- Organizer: Daniel Dia (dmd13@mail.aub.edu)
- Session Leaders: Daniel Dia, Jad Abou Hawili, Kevin Abou Rousse, Ali Ibrahim, Ayman Kaçan, Hadi Zoghaib, Yara Sleem, Ali Zbeeb, Wissam El Daouk
- Teaching Assistant: Jad Abou Hawili (jka15@mail.aub.edu)
- Organizations: AUB Math Society and AUB Cryptography Club
- 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 plus a final exam
- Prerequisites: None (yes, really)
- Last Updated: October 3, 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 bootcamp 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
Schedule
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 (confirmed). 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.
TA Office Hours
Weekly office hours with our teaching assistant Jad Abou Hawili:
- Tuesdays, 19:30
- Fridays, 19:30
- Sundays, 11:00
Exceptionally, on Sunday, 4 Oct office hours will be held at 19:30.
Syllabus
Part 1: Logic and Proof (Sessions 1-5)
Part 1 answers the question the rest of the bootcamp 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 Jad Abou Hawili
Core concepts & further study
- Bootcamp 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
Core concepts & further study
- 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
- Short Lean4 Demo by Jad Abou Hawili (it’s really interesting, check it out!)
- Logic in Computer Science (Huth & Ryan), Ch. 1.1, 1.3
- The Open Logic Project, Ch. 7 (Sections 7.1, 7.2, 7.5)
- 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
Core concepts & further study
- 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
- Logic in Computer Science (Huth & Ryan), Ch. 1.2
- The Open Logic Project, Ch. 10 (Sections 10.1, 10.2, 10.3, 10.4)
- 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
Core concepts & further study
- 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 Hadi Zoghaib
Core concepts & further study
- 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
- 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 Hadi Zoghaib
Core concepts & further study
- 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
Core concepts & further study
- 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
Core concepts & further study
- 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
- Bootcamp 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
Core concepts & further study
- 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 Jad Abou Hawili
Core concepts & further study
- 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 Jad Abou Hawili
Core concepts & further study
- 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
Core concepts & further study
- 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 (Tue 10 Nov)
S13: Recurrences, Master Theorem & Divide-and-Conquer
Solving for the Cost of Recursion (Mon 2 Nov) — with Ali Zbeeb
Core concepts & further study
- 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 (Tue 10 Nov) — with Daniel Dia
Core concepts & further study
- 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
Core concepts & further study
- 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 17:30 — 19:30 Nicely 212
Closed book. Cumulative across S1-S15.
Resources
Core Textbooks
All bootcamp 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 · Tue 10 Nov | S10-S12 |
| 5 | Recurrences and Paradigms | S14 · Tue 10 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 bootcamp asynchronously, but problem sets are handed in on paper in person for AUB students and online for non-AUB students.
Certification
Participation is open to all. Certification is reserved for those who demonstrate mastery.
Honors mention is awarded at the organizer’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, 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) — Course Organization; S14: Programming Paradigms & Functional Programming
- Jad Abou Hawili — S1: Orientation & What Is a Proof?; S10: Recursion, Iteration & Data Structures I; S11: Data Structures II
- Kevin Abou Rousse — S2: Propositional Logic
- Ayman Kaçan — S3: Rules of Inference & Natural Deduction; S4: Predicate Logic, Quantifiers, Binding & Scope
- Hadi Zoghaib (Math + Physics) — 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
- 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
- AUB Cryptography Club — 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