Skip to content
Free public beta until December 4, 2026: every course is open, no card needed. After that, the first chapter of each course stays free and full access is a one-time $39 ($19 for up to 100 founding members chosen for helpful feedback). Your progress is kept. How the beta works

Problem-solving recipes

A step-by-step procedure for every problem type this course teaches — what to do first, what to do next, and how to tell which case you're in.

What are you being asked to do?

Start with what you're actually being asked to produce.

A division or a sum/product to evaluate — readiness review: apply the division algorithm, or expand a sum or product written in index notation.

A compound proposition — build its truth table, or classify it as a tautology, contradiction, or contingency once you have one.

A quantified statement — find a predicate's truth set, check a universal claim, decide an existential claim, or evaluate a nested quantifier statement.

A claim to prove or disprove — disprove a universal claim with a counterexample, or prove a unique-existence claim.

A claim about every natural number at or above some starting value — prove it by mathematical induction, by strong induction if the inductive step needs more than the single immediately preceding case, or using the well-ordering principle if assuming a least counterexample is the more natural move.

Two sets, or one claimed relationship between them — check whether A \subseteq B, prove set equality by double inclusion, find a union, intersection, or difference, find a complement, simplify with set identities, or prove an identity by element-chasing.

A function — find its domain/codomain/range, test one-to-one or onto, compute a composition, find an inverse, evaluate floor/ceiling, compute an image or preimage, or find where one function eventually dominates another.

A relation given as a list of pairs — classify it as reflexive or irreflexive, symmetric or antisymmetric, test transitivity, compute a composite of two relations, or find its equivalence classes.

A sequence or recurrence — evaluate a recursive definition, solve a linear homogeneous recurrence, or derive and solve a recursive algorithm's running-time recurrence.

A counting problem with an added condition — count a selection with a restriction, write a combinatorial proof of a counting identity, or apply the pigeonhole principle to guarantee a repeat exists.

A claim that one function grows no faster than another — prove a Big-O bound directly from its definition.

A graph — apply the handshaking theorem, or determine whether it has a cycle.

A tree — test whether its counts are consistent with a tree, find a vertex's parent/children/level/height, classify a binary tree, or find a minimum spanning tree by removing costliest cycle edges.

A loop, or a random variable — check a loop's total correctness, or compute expected value by summing over outcomes.

Readiness

Logic and propositions

Predicate logic

Methods of proof

Mathematical induction

Set theory

Functions

Relations

Sequences and recurrence

Counting principles

Introduction to graph theory

Trees

Introduction to algorithms

Asymptotic analysis

Discrete probability fundamentals